From 122bb1142631e31ce50716495dba420102f58f56 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期一, 31 七月 2023 20:05:05 +0800
Subject: [PATCH] bug

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java |   99 ++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 77 insertions(+), 22 deletions(-)

diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java
index b0155f3..40e2f7e 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java
@@ -28,6 +28,7 @@
 import com.ruoyi.system.api.service.RemoteMemberService;
 import com.ruoyi.system.api.service.RemoteShopService;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.*;
@@ -93,7 +94,12 @@
      * @param merSureConsumerGoodsDto
      */
     @Override
+    @Transactional
     public void sureMerConsumerGoods(MerSureConsumerGoodsDto merSureConsumerGoodsDto){
+        ConsumerGoods oldConsumerGoods = this.getById(merSureConsumerGoodsDto.getConsumerGoodsId());
+        if(oldConsumerGoods.getSureNum()==null||oldConsumerGoods.getSureNum()<1){
+            throw new ServiceException(AppErrorConstant.GOODS_SURE_FAILED);
+        }
         List<MerSureConsumerGoodsListDto> merSureConsumerGoodsListDtoList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList();
         if(merSureConsumerGoodsListDtoList!=null && !merSureConsumerGoodsListDtoList.isEmpty()){
             ConsumerGoods consumerGoods;
@@ -104,27 +110,68 @@
             Integer servicePerson = 0;
             Integer experienceService = 0;
             Integer experiencePerson = 0;
+            Goods goods;
+            GoodsFile goodsFile;
+            String consumerGoodsId;
+            List<ConsumerGoods> consumerGoodsList = new ArrayList<>();
             MerMemberConsumerGoodsTotalVo memberConsumerGoodsTotalVo = this.getMemberConsumerGoodsTotalVo(merSureConsumerGoodsDto.getUserId(), merSureConsumerGoodsDto.getShopId());
+            int sureNum = 0;
             for(MerSureConsumerGoodsListDto merSureConsumerGoodsListDto : merSureConsumerGoodsListDtoList){
-                consumerGoods = this.getById(merSureConsumerGoodsListDto.getConsumerGoodsId());
-                consumerGoods.setCycleNumFlag(1);
-                consumerGoods.setServiceNum(merSureConsumerGoodsListDto.getServiceNum());
-                this.saveOrUpdate(consumerGoods);
-                //处理商品服务次数
-                switch (consumerGoods.getGoodsType()) {
-                    case 1:
-                        cycleService = cycleService + consumerGoods.getServiceNum();
-                        break;
-                    case 2:
-                        serviceService = serviceService + consumerGoods.getServiceNum();
-                        break;
-                    case 3:
-                        experienceService = experienceService + consumerGoods.getServiceNum();
-                        break;
-                    default:
-                        break;
+                goods = remoteGoodsService.getGoods(merSureConsumerGoodsListDto.getGoodsId()).getData();
+                goodsFile = remoteGoodsService.getGoodsFile(goods.getGoodsId()).getData();
+                if(goods!=null&&goods.getGoodsType()==1&&goods.getCycleNumFlag()==1){
+                    for(int i=0;i<merSureConsumerGoodsListDto.getGoodsNum();i++){
+                        consumerGoods = new ConsumerGoods();
+                        consumerGoodsId = IdUtils.simpleUUID();
+                        consumerGoods.setConsumerGoodsId(consumerGoodsId);
+                        consumerGoods.setDelFlag(0);
+                        consumerGoods.setServiceStatus(1);
+                        consumerGoods.setShopId(merSureConsumerGoodsDto.getShopId());
+                        consumerGoods.setUserId(merSureConsumerGoodsDto.getMemberUserId());
+                        consumerGoods.setOrderId(oldConsumerGoods.getOrderId());
+                        consumerGoods.setOrderGoodsId(oldConsumerGoods.getOrderGoodsId());
+                        consumerGoods.setGoodsId(goods.getGoodsId());
+                        consumerGoods.setGoodsName(goods.getGoodsName());
+                        consumerGoods.setCycleNumFlag(goods.getCycleNumFlag());
+                        consumerGoods.setServiceNum(goods.getServiceNum());
+                        consumerGoods.setUsedNum(0);
+                        consumerGoods.setCreateTime(new Date());
+                        consumerGoods.setGoodsType(goods.getGoodsType());
+                        consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
+                        consumerGoods.setGoodsPicture(goodsFile.getFileUrl());
+                        consumerGoods.setGoodsNurses(goods.getGoodsNurses());
+                        consumerGoods.setSourceFrom(1);
+                        consumerGoodsList.add(consumerGoods);
+                        //处理商品服务次数
+                        switch (consumerGoods.getGoodsType()) {
+                            case 1:
+                                cycleService = cycleService + consumerGoods.getServiceNum();
+                                break;
+                            case 2:
+                                serviceService = serviceService + consumerGoods.getServiceNum();
+                                break;
+                            case 3:
+                                experienceService = experienceService + consumerGoods.getServiceNum();
+                                break;
+                            default:
+                                break;
+                        }
+                        sureNum = sureNum + 1;
+                    }
                 }
             }
+            if(sureNum>oldConsumerGoods.getSureNum()){
+                throw new ServiceException(AppErrorConstant.GOODS_SURE_FAILED);
+            }else{
+                int surpNum = oldConsumerGoods.getSureNum();
+                surpNum = surpNum - sureNum;
+                oldConsumerGoods.setSureNum(surpNum);
+                if(surpNum==0){
+                    oldConsumerGoods.setDelFlag(1);
+                }
+                this.saveOrUpdate(oldConsumerGoods);
+            }
+            this.saveBatch(consumerGoodsList);
             //判断是否加人
             if (cycleService > 0 && memberConsumerGoodsTotalVo.getCycleOrder() == 0) {
                 cyclePerson = 1;
@@ -162,6 +209,7 @@
      * @param merSureConsumerGoodsDto
      */
     @Override
+    @Transactional
     public void useMerConsumerGoods(MerSureConsumerGoodsDto merSureConsumerGoodsDto){
         List<MerSureConsumerGoodsListDto> goodsList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList();
         if (goodsList != null && !goodsList.isEmpty()) {
@@ -183,7 +231,7 @@
             Integer experienceService = 0;
             Integer experiencePerson = 0;
             //获取会员商品总数
-            MerMemberConsumerGoodsTotalVo memberGoodsTotal = this.getMemberConsumerGoodsTotalVo(merSureConsumerGoodsDto.getUserId(), merSureConsumerGoodsDto.getShopId());
+            MerMemberConsumerGoodsTotalVo memberGoodsTotal = this.getMemberConsumerGoodsTotalVo(merSureConsumerGoodsDto.getMemberUserId(), merSureConsumerGoodsDto.getShopId());
             for (MerSureConsumerGoodsListDto goodsDto : goodsList) {
                 goods = this.getById(goodsDto.getConsumerGoodsId());
                 serviceNum = goods.getServiceNum();
@@ -254,7 +302,7 @@
             userServiceRecordService.saveOrUpdate(serviceRecord);
             //更新商户和会员服务统计
             MemberTotalChangeDto memberTotalChange = new MemberTotalChangeDto();
-            memberTotalChange.setUserId(merSureConsumerGoodsDto.getUserId());
+            memberTotalChange.setUserId(merSureConsumerGoodsDto.getMemberUserId());
             memberTotalChange.setTypeService(2);
             memberTotalChange.setServiceCount(serviceCount);
             remoteMemberService.changeMemberTotal(memberTotalChange);
@@ -393,13 +441,19 @@
             //处理商品服务次数
             switch (consumerGoods.getGoodsType()) {
                 case 1:
-                    cycleService = cycleService + consumerGoods.getServiceNum();
+                    if(consumerGoods.getServiceNum()!=null){
+                        cycleService = cycleService + consumerGoods.getServiceNum();
+                    }
                     break;
                 case 2:
-                    serviceService = serviceService + consumerGoods.getServiceNum();
+                    if(consumerGoods.getServiceNum()!=null){
+                        serviceService = serviceService + consumerGoods.getServiceNum();
+                    }
                     break;
                 case 3:
-                    experienceService = experienceService + consumerGoods.getServiceNum();
+                    if(consumerGoods.getServiceNum()!=null) {
+                        experienceService = experienceService + consumerGoods.getServiceNum();
+                    }
                     break;
                 default:
                     break;
@@ -424,6 +478,7 @@
         remoteMemberService.changeMemberTotal(memberTotalChangeDto);
         ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
         shopTotalChangeDto.setShopId(shopId);
+        shopTotalChangeDto.setOrderType(1);
         shopTotalChangeDto.setTypeCycleService(1);
         shopTotalChangeDto.setCycleService(cycleService);
         shopTotalChangeDto.setCyclePerson(cyclePerson);

--
Gitblit v1.7.1