bug
jiangqs
2023-08-02 bb58e108a9da48d84b84d30b73c01106dd642550
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java
@@ -8,6 +8,7 @@
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.order.domain.dto.*;
import com.ruoyi.order.domain.pojo.order.ConsumerGoods;
import com.ruoyi.order.domain.pojo.order.ServiceRecordDetail;
import com.ruoyi.order.domain.pojo.order.UserServiceRecord;
import com.ruoyi.order.domain.vo.AppConsumerPageVo;
import com.ruoyi.order.domain.vo.MerConsumerGoodsListVo;
@@ -15,6 +16,7 @@
import com.ruoyi.order.domain.vo.MerMemberConsumerGoodsTotalVo;
import com.ruoyi.order.mapper.order.ConsumerGoodsMapper;
import com.ruoyi.order.service.order.ConsumerGoodsService;
import com.ruoyi.order.service.order.ServiceRecordDetailService;
import com.ruoyi.order.service.order.UserServiceRecordService;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.domain.dto.AppShopGoodsGetDto;
@@ -60,6 +62,9 @@
    @Resource
    private RemoteGoodsService remoteGoodsService;
    @Resource
    private ServiceRecordDetailService serviceRecordDetailService;
    /**
     * 获取用户服务
@@ -213,7 +218,7 @@
    public void useMerConsumerGoods(MerSureConsumerGoodsDto merSureConsumerGoodsDto){
        List<MerSureConsumerGoodsListDto> goodsList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList();
        if (goodsList != null && !goodsList.isEmpty()) {
            ConsumerGoods goods;
            ConsumerGoods consumerGoods;
            Integer serviceNum;
            Integer usedNum;
            Integer useNum;
@@ -231,42 +236,45 @@
            Integer experienceService = 0;
            Integer experiencePerson = 0;
            //获取会员商品总数
            List<ServiceRecordDetail> serviceRecordDetailList = new ArrayList<>();
            ServiceRecordDetail serviceRecordDetail;
            MerMemberConsumerGoodsTotalVo memberGoodsTotal = this.getMemberConsumerGoodsTotalVo(merSureConsumerGoodsDto.getMemberUserId(), merSureConsumerGoodsDto.getShopId());
            for (MerSureConsumerGoodsListDto goodsDto : goodsList) {
                goods = this.getById(goodsDto.getConsumerGoodsId());
                serviceNum = goods.getServiceNum();
                usedNum = goods.getUsedNum();
                consumerGoods = this.getById(goodsDto.getConsumerGoodsId());
                serviceRecordDetail = new ServiceRecordDetail();
                serviceNum = consumerGoods.getServiceNum();
                usedNum = consumerGoods.getUsedNum();
                surplusNum = serviceNum - usedNum;
                useNum = goodsDto.getServiceNum();
                //判断使用数量是否超过剩余数量
                if (useNum > surplusNum) {
                    throw new ServiceException(AppErrorConstant.BEYOND_SURP_NUM);
                }
                goods.setUsedNum(usedNum + useNum);
                goods.setUseTime(new Date());
                consumerGoods.setUsedNum(usedNum + useNum);
                consumerGoods.setUseTime(new Date());
                //判断商品是否已使用完
                if (goods.getUsedNum().equals(serviceNum)) {
                    goods.setServiceStatus(2);
                    goods.setCompleteTime(new Date());
                if (consumerGoods.getUsedNum().equals(serviceNum)) {
                    consumerGoods.setServiceStatus(2);
                    consumerGoods.setCompleteTime(new Date());
                }
                this.saveOrUpdate(goods);
                shopId = goods.getShopId();
                userId = goods.getUserId();
                serviceType = goods.getGoodsType();
                this.saveOrUpdate(consumerGoods);
                shopId = consumerGoods.getShopId();
                userId = consumerGoods.getUserId();
                serviceType = consumerGoods.getGoodsType();
                //拼接商品ID
                if (StringUtils.isBlank(goodsIds)) {
                    goodsIds = goods.getConsumerGoodsId();
                    goodsIds = consumerGoods.getConsumerGoodsId();
                } else {
                    goodsIds = goodsIds + "," + goods.getConsumerGoodsId();
                    goodsIds = goodsIds + "," + consumerGoods.getConsumerGoodsId();
                }
                //拼接商品名称
                if (StringUtils.isBlank(goodsNames)) {
                    goodsNames = goods.getGoodsName();
                    goodsNames = consumerGoods.getGoodsName();
                } else {
                    goodsNames = goodsNames + "、" + goods.getGoodsName();
                    goodsNames = goodsNames + "、" + consumerGoods.getGoodsName();
                }
                //处理商品服务次数
                switch (goods.getGoodsType()) {
                switch (consumerGoods.getGoodsType()) {
                    case 1:
                        cycleService = cycleService + useNum;
                        break;
@@ -279,6 +287,12 @@
                    default:
                        break;
                }
                serviceRecordDetail.setDelFlag(0);
                serviceRecordDetail.setConsumerGoodsId(consumerGoods.getConsumerGoodsId());
                serviceRecordDetail.setConsumerGoodsName(consumerGoods.getGoodsName());
                serviceRecordDetail.setServiceNum(consumerGoods.getServiceNum());
                serviceRecordDetail.setSurpNum(consumerGoods.getServiceNum()-consumerGoods.getUsedNum());
                serviceRecordDetailList.add(serviceRecordDetail);
            }
            //判断是否减人
            if (cycleService > 0 && memberGoodsTotal.getCycleOrder() - cycleService < 1) {
@@ -300,6 +314,10 @@
            serviceRecord.setConsumerGoodsIds(goodsIds);
            serviceRecord.setConsumerGoodsNames(goodsNames);
            userServiceRecordService.saveOrUpdate(serviceRecord);
            for(ServiceRecordDetail serviceRecordDetail1 : serviceRecordDetailList){
                serviceRecordDetail1.setRecordId(serviceRecord.getId());
            }
            serviceRecordDetailService.saveBatch(serviceRecordDetailList);
            //更新商户和会员服务统计
            MemberTotalChangeDto memberTotalChange = new MemberTotalChangeDto();
            memberTotalChange.setUserId(merSureConsumerGoodsDto.getMemberUserId());