From afa0dbb4f54e7244835dd67ec33c3e545f122f71 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期五, 17 一月 2025 16:40:43 +0800
Subject: [PATCH] bug修改

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java |  197 ++++++++++++++++++++++++-------------------------
 1 files changed, 96 insertions(+), 101 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 40e2f7e..59dfddd 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
@@ -3,11 +3,13 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.StringUtils;
 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,18 +17,24 @@
 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.order.util.MsgUtils;
 import com.ruoyi.system.api.constant.AppErrorConstant;
 import com.ruoyi.system.api.domain.dto.AppShopGoodsGetDto;
 import com.ruoyi.system.api.domain.dto.BirthdayGiftSendDto;
 import com.ruoyi.system.api.domain.dto.MemberTotalChangeDto;
-import com.ruoyi.system.api.domain.dto.ShopTotalChangeDto;
 import com.ruoyi.system.api.domain.poji.goods.Goods;
 import com.ruoyi.system.api.domain.poji.goods.GoodsFile;
 import com.ruoyi.system.api.domain.poji.goods.ShopGoods;
+import com.ruoyi.system.api.domain.poji.member.Member;
+import com.ruoyi.system.api.domain.poji.shop.Shop;
 import com.ruoyi.system.api.service.RemoteGoodsService;
 import com.ruoyi.system.api.service.RemoteMemberService;
 import com.ruoyi.system.api.service.RemoteShopService;
+import io.seata.spring.annotation.GlobalTransactional;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -45,6 +53,8 @@
  */
 @Service
 public class ConsumerGoodsServiceImpl extends ServiceImpl<ConsumerGoodsMapper, ConsumerGoods> implements ConsumerGoodsService {
+    
+    private Logger log = LoggerFactory.getLogger(ConsumerGoodsServiceImpl.class);
 
     @Resource
     private ConsumerGoodsMapper consumerGoodsMapper;
@@ -56,10 +66,16 @@
     private RemoteMemberService remoteMemberService;
 
     @Resource
-    private RemoteShopService remoteShopService;
+    private RemoteGoodsService remoteGoodsService;
 
     @Resource
-    private RemoteGoodsService remoteGoodsService;
+    private ServiceRecordDetailService serviceRecordDetailService;
+
+    @Resource
+    private RemoteShopService remoteShopService;
+
+
+
 
     /**
      * 获取用户服务
@@ -105,16 +121,12 @@
             ConsumerGoods consumerGoods;
             Integer serviceCount = 0;
             Integer cycleService = 0;
-            Integer cyclePerson = 0;
             Integer serviceService = 0;
-            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){
                 goods = remoteGoodsService.getGoods(merSureConsumerGoodsListDto.getGoodsId()).getData();
@@ -137,6 +149,7 @@
                         consumerGoods.setUsedNum(0);
                         consumerGoods.setCreateTime(new Date());
                         consumerGoods.setGoodsType(goods.getGoodsType());
+                        consumerGoods.setGoodsTag(goods.getGoodsTags());
                         consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
                         consumerGoods.setGoodsPicture(goodsFile.getFileUrl());
                         consumerGoods.setGoodsNurses(goods.getGoodsNurses());
@@ -160,6 +173,7 @@
                     }
                 }
             }
+            //判断商品确认次数
             if(sureNum>oldConsumerGoods.getSureNum()){
                 throw new ServiceException(AppErrorConstant.GOODS_SURE_FAILED);
             }else{
@@ -172,35 +186,14 @@
                 this.saveOrUpdate(oldConsumerGoods);
             }
             this.saveBatch(consumerGoodsList);
-            //判断是否加人
-            if (cycleService > 0 && memberConsumerGoodsTotalVo.getCycleOrder() == 0) {
-                cyclePerson = 1;
-            }
-            if (serviceService > 0 && memberConsumerGoodsTotalVo.getServiceOrder() == 0) {
-                servicePerson = 1;
-            }
-            if (experienceService > 0 && memberConsumerGoodsTotalVo.getExperienceOrder() == 0) {
-                experiencePerson = 1;
-            }
             serviceCount = cycleService + serviceService + experienceService;
             //更新商户和会员服务统计
             MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
-            memberTotalChangeDto.setUserId(merSureConsumerGoodsDto.getUserId());
+            memberTotalChangeDto.setUserId(merSureConsumerGoodsDto.getMemberUserId());
             memberTotalChangeDto.setTypeService(1);
             memberTotalChangeDto.setServiceCount(serviceCount);
+            log.info("更新商户和会员服务统计---》" + memberTotalChangeDto.toString());
             remoteMemberService.changeMemberTotal(memberTotalChangeDto);
-            ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
-            shopTotalChangeDto.setShopId(merSureConsumerGoodsDto.getShopId());
-            shopTotalChangeDto.setTypeCycleService(1);
-            shopTotalChangeDto.setCycleService(cycleService);
-            shopTotalChangeDto.setCyclePerson(cyclePerson);
-            shopTotalChangeDto.setTypeServiceService(1);
-            shopTotalChangeDto.setServiceService(serviceService);
-            shopTotalChangeDto.setServicePerson(servicePerson);
-            shopTotalChangeDto.setTypeExperienceService(1);
-            shopTotalChangeDto.setExperienceService(experienceService);
-            shopTotalChangeDto.setExperiencePerson(experiencePerson);
-            remoteShopService.changeShopTotal(shopTotalChangeDto);
         }
     }
 
@@ -210,10 +203,11 @@
      */
     @Override
     @Transactional
+    @GlobalTransactional(rollbackFor = Exception.class)
     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;
@@ -225,48 +219,58 @@
             Integer serviceType = 1;
             Integer serviceCount = 0;
             Integer cycleService = 0;
-            Integer cyclePerson = 0;
             Integer serviceService = 0;
-            Integer servicePerson = 0;
             Integer experienceService = 0;
-            Integer experiencePerson = 0;
             //获取会员商品总数
-            MerMemberConsumerGoodsTotalVo memberGoodsTotal = this.getMemberConsumerGoodsTotalVo(merSureConsumerGoodsDto.getMemberUserId(), merSureConsumerGoodsDto.getShopId());
+            List<ServiceRecordDetail> serviceRecordDetailList = new ArrayList<>();
+            ServiceRecordDetail serviceRecordDetail;
+            List<String> consumerGoodsList = new ArrayList<>();
+            List<Map<String, Object>> sendData = new ArrayList<>();
             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);
+
+                int number = consumerGoods.getServiceNum() - consumerGoods.getUsedNum();
+                if(number < 3){
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("product", consumerGoods.getGoodsName());
+                    map.put("number", number);
+                    sendData.add(map);
+                }
+
+                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,16 +283,15 @@
                     default:
                         break;
                 }
-            }
-            //判断是否减人
-            if (cycleService > 0 && memberGoodsTotal.getCycleOrder() - cycleService < 1) {
-                cyclePerson = 1;
-            }
-            if (serviceService > 0 && memberGoodsTotal.getServiceOrder() - serviceService < 1) {
-                servicePerson = 1;
-            }
-            if (experienceService > 0 && memberGoodsTotal.getExperienceOrder() - experienceService < 1) {
-                experiencePerson = 1;
+                serviceRecordDetail.setDelFlag(0);
+                serviceRecordDetail.setConsumerGoodsId(consumerGoods.getConsumerGoodsId());
+                serviceRecordDetail.setConsumerGoodsName(consumerGoods.getGoodsName());
+                serviceRecordDetail.setServiceNum(consumerGoods.getServiceNum());
+                serviceRecordDetail.setSurpNum(consumerGoods.getServiceNum()-consumerGoods.getUsedNum());
+                if(serviceRecordDetail.getSurpNum()==0){
+                    consumerGoodsList.add(consumerGoods.getGoodsName());
+                }
+                serviceRecordDetailList.add(serviceRecordDetail);
             }
             serviceCount = cycleService + serviceService + experienceService;
             UserServiceRecord serviceRecord = new UserServiceRecord();
@@ -300,24 +303,42 @@
             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());
             memberTotalChange.setTypeService(2);
             memberTotalChange.setServiceCount(serviceCount);
             remoteMemberService.changeMemberTotal(memberTotalChange);
-            ShopTotalChangeDto shopTotalChange = new ShopTotalChangeDto();
-            shopTotalChange.setShopId(merSureConsumerGoodsDto.getShopId());
-            shopTotalChange.setTypeCycleService(2);
-            shopTotalChange.setCycleService(cycleService);
-            shopTotalChange.setCyclePerson(cyclePerson);
-            shopTotalChange.setTypeServiceService(2);
-            shopTotalChange.setServiceService(serviceService);
-            shopTotalChange.setServicePerson(servicePerson);
-            shopTotalChange.setTypeExperienceService(2);
-            shopTotalChange.setExperienceService(experienceService);
-            shopTotalChange.setExperiencePerson(experiencePerson);
-            remoteShopService.changeShopTotal(shopTotalChange);
+            if(!sendData.isEmpty()){
+                Member member = remoteMemberService.getMember(userId).getData();
+                R<Shop> r = remoteShopService.getShop(shopId);
+                if(r.getCode() != 200){
+                    throw new ServiceException(r.getMsg());
+                }
+                Shop shop = r.getData();
+                try {
+                    for (Map<String, Object> sendDatum : sendData) {
+                        String product = sendDatum.get("product").toString();
+                        Integer number = Integer.valueOf(sendDatum.get("number").toString());
+                        String msg = "{\"name\":\"" + (StringUtils.isEmpty(member.getRealName()) ? member.getNickName() : member.getRealName()) + "\"," +
+                                "\"store\":\"" + shop.getShopName() + "\",\"product\":\"" + product + "\"}";
+                        if(number == 2){
+                            MsgUtils.sendMsg(member.getMobile(),"SMS_464376210",msg);
+                        }
+                        if(number == 0){
+                            MsgUtils.sendMsg(member.getMobile(),"SMS_464321234",msg);
+                        }
+                    }
+
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+            }
         }
     }
 
@@ -402,6 +423,7 @@
                 consumerGoods.setUsedNum(0);
                 consumerGoods.setCreateTime(new Date());
                 consumerGoods.setGoodsType(goods.getGoodsType());
+                consumerGoods.setGoodsTag(goods.getGoodsTags());
                 consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
                 consumerGoods.setGoodsPicture(goodsFile.getFileUrl());
                 consumerGoods.setGoodsNurses(goods.getGoodsNurses());
@@ -429,14 +451,10 @@
     public boolean saveBatchConsumerGoods(List<ConsumerGoods> consumerGoodsList){
         Integer serviceCount = 0;
         Integer cycleService = 0;
-        Integer cyclePerson = 0;
         Integer serviceService = 0;
-        Integer servicePerson = 0;
         Integer experienceService = 0;
-        Integer experiencePerson = 0;
         Long shopId = consumerGoodsList.get(0).getShopId();
         Long userId = consumerGoodsList.get(0).getUserId();
-        MerMemberConsumerGoodsTotalVo memberConsumerGoodsTotalVo = this.getMemberConsumerGoodsTotalVo(userId, shopId);
         for(ConsumerGoods consumerGoods : consumerGoodsList){
             //处理商品服务次数
             switch (consumerGoods.getGoodsType()) {
@@ -459,16 +477,6 @@
                     break;
             }
         }
-        //判断是否加人
-        if (cycleService > 0 && memberConsumerGoodsTotalVo.getCycleOrder() == 0) {
-            cyclePerson = 1;
-        }
-        if (serviceService > 0 && memberConsumerGoodsTotalVo.getServiceOrder() == 0) {
-            servicePerson = 1;
-        }
-        if (experienceService > 0 && memberConsumerGoodsTotalVo.getExperienceOrder() == 0) {
-            experiencePerson = 1;
-        }
         serviceCount = cycleService + serviceService + experienceService;
         //更新商户和会员服务统计
         MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
@@ -476,19 +484,6 @@
         memberTotalChangeDto.setTypeService(1);
         memberTotalChangeDto.setServiceCount(serviceCount);
         remoteMemberService.changeMemberTotal(memberTotalChangeDto);
-        ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
-        shopTotalChangeDto.setShopId(shopId);
-        shopTotalChangeDto.setOrderType(1);
-        shopTotalChangeDto.setTypeCycleService(1);
-        shopTotalChangeDto.setCycleService(cycleService);
-        shopTotalChangeDto.setCyclePerson(cyclePerson);
-        shopTotalChangeDto.setTypeServiceService(1);
-        shopTotalChangeDto.setServiceService(serviceService);
-        shopTotalChangeDto.setServicePerson(servicePerson);
-        shopTotalChangeDto.setTypeExperienceService(1);
-        shopTotalChangeDto.setExperienceService(experienceService);
-        shopTotalChangeDto.setExperiencePerson(experiencePerson);
-        remoteShopService.changeShopTotal(shopTotalChangeDto);
         return this.saveBatch(consumerGoodsList);
     }
 }

--
Gitblit v1.7.1