From cbc564a7088503ad8cc7af4e1d2ba417d061e615 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期五, 30 六月 2023 11:35:05 +0800
Subject: [PATCH] 联调bug和统计完善

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java |  212 +++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 172 insertions(+), 40 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 003aa9c..84e8d05 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
@@ -11,10 +11,15 @@
 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.domain.vo.MerMemberConsumerGoodsTotalVo;
 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 com.ruoyi.system.api.domain.dto.MemberTotalChangeDto;
+import com.ruoyi.system.api.domain.dto.ShopTotalChangeDto;
+import com.ruoyi.system.api.service.RemoteMemberService;
+import com.ruoyi.system.api.service.RemoteShopService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -37,6 +42,13 @@
 
     @Resource
     private UserServiceRecordService userServiceRecordService;
+
+    @Resource
+    private RemoteMemberService remoteMemberService;
+
+    @Resource
+    private RemoteShopService remoteShopService;
+
     /**
      * 获取用户服务
      * @param page
@@ -74,12 +86,63 @@
         List<MerSureConsumerGoodsListDto> merSureConsumerGoodsListDtoList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList();
         if(merSureConsumerGoodsListDtoList!=null && !merSureConsumerGoodsListDtoList.isEmpty()){
             ConsumerGoods consumerGoods;
+            Integer serviceCount = 0;
+            Integer cycleService = 0;
+            Integer cyclePerson = 0;
+            Integer serviceService = 0;
+            Integer servicePerson = 0;
+            Integer experienceService = 0;
+            Integer experiencePerson = 0;
+            MerMemberConsumerGoodsTotalVo memberConsumerGoodsTotalVo = this.getMemberConsumerGoodsTotalVo(merSureConsumerGoodsDto.getUserId(), merSureConsumerGoodsDto.getShopId());
             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;
+                }
             }
+            //判断是否加人
+            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.setTypeService(1);
+            memberTotalChangeDto.setServiceCount(serviceCount);
+            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);
         }
     }
 
@@ -89,62 +152,118 @@
      */
     @Override
     public void useMerConsumerGoods(MerSureConsumerGoodsDto merSureConsumerGoodsDto){
-        List<MerSureConsumerGoodsListDto> merSureConsumerGoodsListDtoList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList();
-        if(merSureConsumerGoodsListDtoList!=null && !merSureConsumerGoodsListDtoList.isEmpty()){
-            ConsumerGoods consumerGoods;
+        List<MerSureConsumerGoodsListDto> goodsList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList();
+        if (goodsList != null && !goodsList.isEmpty()) {
+            ConsumerGoods goods;
             Integer serviceNum;
             Integer usedNum;
             Integer useNum;
-            Integer surpNum;
+            Integer surplusNum;
             Long shopId = null;
             Long userId = null;
-            String consumerGoodsNames = "";
-            String consumerGoodsIds = "";
+            String goodsNames = "";
+            String goodsIds = "";
             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){
+            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.getUserId(), merSureConsumerGoodsDto.getShopId());
+            for (MerSureConsumerGoodsListDto goodsDto : goodsList) {
+                goods = this.getById(goodsDto.getConsumerGoodsId());
+                serviceNum = goods.getServiceNum();
+                usedNum = goods.getUsedNum();
+                surplusNum = serviceNum - usedNum;
+                useNum = goodsDto.getServiceNum();
+                //判断使用数量是否超过剩余数量
+                if (useNum > surplusNum) {
                     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());
+                goods.setUsedNum(usedNum + useNum);
+                goods.setUseTime(new Date());
+                //判断商品是否已使用完
+                if (goods.getUsedNum().equals(serviceNum)) {
+                    goods.setServiceStatus(2);
+                    goods.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();
+                this.saveOrUpdate(goods);
+                shopId = goods.getShopId();
+                userId = goods.getUserId();
+                serviceType = goods.getGoodsType();
+                //拼接商品ID
+                if (StringUtils.isBlank(goodsIds)) {
+                    goodsIds = goods.getConsumerGoodsId();
+                } else {
+                    goodsIds = goodsIds + "," + goods.getConsumerGoodsId();
                 }
-                if(StringUtils.isBlank(consumerGoodsNames)){
-                    consumerGoodsNames = consumerGoods.getGoodsName();
-                }else{
-                    consumerGoodsNames = consumerGoodsNames + "、" + consumerGoods.getGoodsName();
+                //拼接商品名称
+                if (StringUtils.isBlank(goodsNames)) {
+                    goodsNames = goods.getGoodsName();
+                } else {
+                    goodsNames = goodsNames + "、" + goods.getGoodsName();
+                }
+                //处理商品服务次数
+                switch (goods.getGoodsType()) {
+                    case 1:
+                        cycleService = cycleService + useNum;
+                        break;
+                    case 2:
+                        serviceService = serviceService + useNum;
+                        break;
+                    case 3:
+                        experienceService = experienceService + useNum;
+                        break;
+                    default:
+                        break;
                 }
             }
-            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);
+            //判断是否减人
+            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;
+            }
+            serviceCount = cycleService + serviceService + experienceService;
+            UserServiceRecord serviceRecord = new UserServiceRecord();
+            serviceRecord.setCreateTime(new Date());
+            serviceRecord.setServiceType(serviceType);
+            serviceRecord.setDelFlag(0);
+            serviceRecord.setShopId(shopId);
+            serviceRecord.setUserId(userId);
+            serviceRecord.setConsumerGoodsIds(goodsIds);
+            serviceRecord.setConsumerGoodsNames(goodsNames);
+            userServiceRecordService.saveOrUpdate(serviceRecord);
+            //更新商户和会员服务统计
+            MemberTotalChangeDto memberTotalChange = new MemberTotalChangeDto();
+            memberTotalChange.setUserId(merSureConsumerGoodsDto.getUserId());
+            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);
         }
     }
 
     /**
-     *
+     * 分页获取用户服务次数列表
      * @param page
      * @param merConsumerGoodsPageDto
      * @return
@@ -154,4 +273,17 @@
         List<MerConsumerGoodsListVo> merConsumerGoodsListVos = consumerGoodsMapper.pageMerConsumerGoodsNum(page, merConsumerGoodsPageDto);
         return merConsumerGoodsListVos;
     }
+
+    /**
+     * @description  获取用户在商户
+     * @author  jqs
+     * @date    2023/6/29 15:13
+     * @param userId
+     * @param shopId
+     * @return  MerMemberConsumerGoodsTotalVo
+     */
+    @Override
+    public MerMemberConsumerGoodsTotalVo getMemberConsumerGoodsTotalVo(Long userId, Long shopId){
+        return consumerGoodsMapper.getMemberConsumerGoodsTotalVo(userId, shopId);
+    }
 }

--
Gitblit v1.7.1