jiangqs
2023-06-16 ae41759bafec1c2a1e8858fcdcda4272ed4eb84c
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java
@@ -1,10 +1,25 @@
package com.ruoyi.order.service.impl.order;
import com.ruoyi.system.domain.pojo.order.ConsumerGoods;
import com.ruoyi.system.mapper.order.ConsumerGoodsMapper;
import com.ruoyi.system.service.order.ConsumerGoodsService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.order.domain.dto.*;
import com.ruoyi.order.domain.pojo.order.ConsumerGoods;
import com.ruoyi.order.domain.pojo.order.UserServiceRecord;
import com.ruoyi.order.domain.vo.AppConsumerPageVo;
import com.ruoyi.order.domain.vo.MerConsumerGoodsListVo;
import com.ruoyi.order.domain.vo.MerConsumerGoodsVo;
import com.ruoyi.order.mapper.order.ConsumerGoodsMapper;
import com.ruoyi.order.service.order.ConsumerGoodsService;
import com.ruoyi.order.service.order.UserServiceRecordService;
import com.ruoyi.system.api.constant.AppErrorConstant;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
 * <p>
@@ -17,4 +32,126 @@
@Service
public class ConsumerGoodsServiceImpl extends ServiceImpl<ConsumerGoodsMapper, ConsumerGoods> implements ConsumerGoodsService {
    @Resource
    private ConsumerGoodsMapper consumerGoodsMapper;
    @Resource
    private UserServiceRecordService userServiceRecordService;
    /**
     * 获取用户服务
     * @param page
     * @param appConsumerPageDto
     * @return
     */
    @Override
    public List<AppConsumerPageVo> pageUserConsumerGoods(Page page, AppConsumerPageDto appConsumerPageDto){
        return consumerGoodsMapper.pageUserConsumerGoods(page, appConsumerPageDto);
    }
    /**
     * 获取会员服务商品
     * @param merConsumerGoodsDto
     * @return
     */
    @Override
    public MerConsumerGoodsVo listMerConsumerGoods(MerConsumerGoodsDto merConsumerGoodsDto){
        MerConsumerGoodsVo merConsumerGoodsVo = new MerConsumerGoodsVo();
        if(merConsumerGoodsDto.getGoodsType()==1){
            List<MerConsumerGoodsListVo> noSureList = consumerGoodsMapper.listMerNoSureConsumerGoods(merConsumerGoodsDto);
            merConsumerGoodsVo.setNoSureList(noSureList);
        }
        List<MerConsumerGoodsListVo> sureList = consumerGoodsMapper.listMerConsumerGoods(merConsumerGoodsDto);
        merConsumerGoodsVo.setSureList(sureList);
        return merConsumerGoodsVo;
    }
    /**
     * 确认商品次数
     * @param merSureConsumerGoodsDto
     */
    @Override
    public void sureMerConsumerGoods(MerSureConsumerGoodsDto merSureConsumerGoodsDto){
        List<MerSureConsumerGoodsListDto> merSureConsumerGoodsListDtoList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList();
        if(merSureConsumerGoodsListDtoList!=null && !merSureConsumerGoodsListDtoList.isEmpty()){
            ConsumerGoods consumerGoods;
            for(MerSureConsumerGoodsListDto merSureConsumerGoodsListDto : merSureConsumerGoodsListDtoList){
                consumerGoods = this.getById(merSureConsumerGoodsListDto.getConsumerGoodsId());
                consumerGoods.setCycleNumFlag(1);
                consumerGoods.setServiceNum(merSureConsumerGoodsListDto.getServiceNum());
                this.saveOrUpdate(consumerGoods);
            }
        }
    }
    /**
     * 确认商品次数
     * @param merSureConsumerGoodsDto
     */
    @Override
    public void useMerConsumerGoods(MerSureConsumerGoodsDto merSureConsumerGoodsDto){
        List<MerSureConsumerGoodsListDto> merSureConsumerGoodsListDtoList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList();
        if(merSureConsumerGoodsListDtoList!=null && !merSureConsumerGoodsListDtoList.isEmpty()){
            ConsumerGoods consumerGoods;
            Integer serviceNum;
            Integer usedNum;
            Integer useNum;
            Integer surpNum;
            Long shopId = null;
            Long userId = null;
            String consumerGoodsNames = "";
            String consumerGoodsIds = "";
            Integer serviceType = 1;
            for(MerSureConsumerGoodsListDto merSureConsumerGoodsListDto : merSureConsumerGoodsListDtoList){
                consumerGoods = this.getById(merSureConsumerGoodsListDto.getConsumerGoodsId());
                serviceNum = consumerGoods.getServiceNum();
                usedNum = consumerGoods.getUsedNum();
                surpNum = serviceNum - usedNum;
                useNum = merSureConsumerGoodsListDto.getServiceNum();
                if(useNum>surpNum){
                    throw new ServiceException(AppErrorConstant.BEYOND_SURP_NUM);
                }
                consumerGoods.setUsedNum(usedNum+useNum);
                consumerGoods.setUseTime(new Date());
                if(consumerGoods.getUsedNum().equals(serviceNum)){
                    consumerGoods.setServiceStatus(2);
                    consumerGoods.setCompleteTime(new Date());
                }
                this.saveOrUpdate(consumerGoods);
                shopId = consumerGoods.getShopId();
                userId= consumerGoods.getUserId();
                serviceType = consumerGoods.getGoodsType();
                if(StringUtils.isBlank(consumerGoodsIds)){
                    consumerGoodsIds = consumerGoods.getConsumerGoodsId();
                }else{
                    consumerGoodsIds = consumerGoodsIds + "," + consumerGoods.getConsumerGoodsId();
                }
                if(StringUtils.isBlank(consumerGoodsNames)){
                    consumerGoodsNames = consumerGoods.getGoodsName();
                }else{
                    consumerGoodsNames = consumerGoodsNames + "、" + consumerGoods.getGoodsName();
                }
            }
            UserServiceRecord userServiceRecord = new UserServiceRecord();
            userServiceRecord.setCreateTime(new Date());
            userServiceRecord.setServiceType(serviceType);
            userServiceRecord.setDelFlag(0);
            userServiceRecord.setShopId(shopId);
            userServiceRecord.setUserId(userId);
            userServiceRecord.setConsumerGoodsIds(consumerGoodsIds);
            userServiceRecord.setConsumerGoodsNames(consumerGoodsNames);
            userServiceRecordService.saveOrUpdate(userServiceRecord);
        }
    }
    /**
     *
     * @param page
     * @param merConsumerGoodsPageDto
     * @return
     */
    @Override
    public List<MerConsumerGoodsListVo> pageMerConsumerGoodsNum(Page page, MerConsumerGoodsPageDto merConsumerGoodsPageDto){
        List<MerConsumerGoodsListVo> merConsumerGoodsListVos = consumerGoodsMapper.pageMerConsumerGoodsNum(page, merConsumerGoodsPageDto);
        return merConsumerGoodsListVos;
    }
}