From dbff53150cdc807faa56c0d1a947d24b69f372b9 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期四, 31 八月 2023 18:43:20 +0800
Subject: [PATCH] bug

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |  695 +++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 618 insertions(+), 77 deletions(-)

diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
index 27c19ec..5b5d2cd 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -784,7 +784,7 @@
                     orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(),
                     appPlaceOrderDto.getSpbillCreateIp(), goodsNameList,1);
             //生成自动取消订单延时任务
-            String payStr = appPlaceOrderVo.getAppId()+"-"+appPlaceOrderVo.getTimeStamp()+"-"+appPlaceOrderVo.getNonceStr()+"-"+appPlaceOrderVo.getPackageStr()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getPaySign();
+            String payStr = appPlaceOrderVo.getAppId()+"-"+appPlaceOrderVo.getTimeStamp()+"-"+appPlaceOrderVo.getNonceStr()+"-"+appPlaceOrderVo.getPackageStr()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getPaySign();
             redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, payStr , delayTime.longValue(), TimeUnit.MINUTES);
             DelayTask delayTask = new DelayTask();
             delayTask.setDelFlag(0);
@@ -813,7 +813,8 @@
      * @param payerClientIp
      * @param goodsNameList
      */
-    public void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId,
+
+    private void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId,
                                  String goodsName, String outTradeNo,
                                  String orderId, BigDecimal payMoney,
                                  String openid, String payerClientIp, List<String> goodsNameList,Integer orderFrom){
@@ -1180,11 +1181,11 @@
             }
             appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
             // 小程序微信下单支付
-            createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), orderNo,
+            createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), outTradeNo,
                     orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(),
                     appPlaceActivityDto.getSpbillCreateIp(), goodsNameList,2);
             //生成自动取消订单延时任务
-            String payStr = appPlaceOrderVo.getAppId()+"-"+appPlaceOrderVo.getTimeStamp()+"-"+appPlaceOrderVo.getNonceStr()+"-"+appPlaceOrderVo.getPackageStr()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getPaySign();
+            String payStr = appPlaceOrderVo.getAppId()+"-"+appPlaceOrderVo.getTimeStamp()+"-"+appPlaceOrderVo.getNonceStr()+"-"+appPlaceOrderVo.getPackageStr()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getPaySign();
             redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, payStr , delayTime.longValue(), TimeUnit.MINUTES);
             DelayTask delayTask = new DelayTask();
             delayTask.setDelFlag(0);
@@ -1226,14 +1227,20 @@
         List<AppUserOrderPageVo> appUserOrderPageVoList = orderMapper.pageUserOrder(page, appUserOrderPageDto);
         if (appUserOrderPageVoList != null && !appUserOrderPageVoList.isEmpty()) {
             Long shopId;
+            String activityId;
             Shop shop;
-            HashSet<Long> set = new HashSet<Long>();
+            HashSet<Long> shopSet = new HashSet<Long>();
+            HashSet<String> activitySet = new HashSet<String>();
             for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) {
                 shopId = appUserOrderPageVo.getShopId();
-                set.add(shopId);
+                shopSet.add(shopId);
+                if(appUserOrderPageVo.getOrderFrom()==2){
+                    activityId = appUserOrderPageVo.getActivityId();
+                    activitySet.add(activityId);
+                }
             }
             Map<Long, Shop> shopMap = new HashMap<>();
-            set.forEach(shopIdLong -> {
+            shopSet.forEach(shopIdLong -> {
                 Shop shopTemp = remoteShopService.getShop(shopIdLong).getData();
                 shopMap.put(shopIdLong, shopTemp);
             });
@@ -1333,7 +1340,7 @@
         if(order.getOrderStatus()!=1){
             throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER);
         }
-        String payStr = redisService.getCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+orderId);
+        String payStr = redisService.getCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+ "-"+orderId);
         if(StringUtils.isBlank(payStr)){
             throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER);
         }
@@ -1342,7 +1349,7 @@
             delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
         }
         AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo();
-        OrderPayment orderPayment = orderPaymentService.getByOrderId(orderId);
+        OrderPayment orderPayment = orderPaymentService.getByUnpaidOrderId(orderId);
         String[] payArr = payStr.split("-");
         appPlaceOrderVo.setOrderId(order.getOrderId());
         appPlaceOrderVo.setOrderNo(order.getOrderNo());
@@ -1612,7 +1619,7 @@
         // TODO  活动才分账
         if (order.getOrderFrom() == 2) {
             // 活动才分账
-            submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOrderMoney());
+            submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOnlinePayMoney());
         }
 
         //创建支付记录
@@ -1625,7 +1632,10 @@
             payRecord.setPayType(merVerifyOrderDto.getPayType());
             payRecordService.save(payRecord);
         }
-
+        //更新用户消费统计
+        MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
+        memberTotalChangeDto.setConsumeTime(nowTime);
+        remoteMemberService.changeMemberTotal(memberTotalChangeDto);
         return merVerifyOrderVo;
     }
 
@@ -1703,7 +1713,7 @@
         } catch (WxPayException e) {
             resultMessage = String.format("订单分账:%s 分账失败:%s", orderNo, e.getMessage());
             log.info(resultMessage);
-            e.printStackTrace();
+            throw new ServiceException(resultMessage);
         }
 
         // 保存分账信息
@@ -2308,7 +2318,10 @@
         if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
             remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
         }
-
+        //更新会员消费记录
+        MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
+        memberTotalChangeDto.setConsumeTime(nowTime);
+        remoteMemberService.changeMemberTotal(memberTotalChangeDto);
         //更新商户统计
         /*ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
         shopTotalChangeDto.setShopId(order.getShopId());
@@ -2369,7 +2382,7 @@
                     if (orderFrom == 1) {
                         orderFromDesc = "商城订单";
                     } else if (orderFrom == 2) {
-                        orderFromDesc = "店铺砍价活动(" + merOrderPageVo.getActivityName() + ")";
+                        orderFromDesc = "平台秒杀活动(" + merOrderPageVo.getActivityName() + ")";
                     } else {
                         orderFromDesc = "线下创建";
                     }
@@ -2665,7 +2678,9 @@
             // 遍历列表,设置店铺名称、用户名称和未支付金额
             for (MgtShopOrderPageVo mgtShopOrderPageVo : shopOrderPageVoList) {
                 if (shopMap != null && !shopMap.isEmpty()) {
-                    mgtShopOrderPageVo.setShopName(shopMap.get(mgtShopOrderPageVo.getShopId()).getShopName());
+                    if(shopMap.get(mgtShopOrderPageVo.getShopId())!=null){
+                        mgtShopOrderPageVo.setShopName(shopMap.get(mgtShopOrderPageVo.getShopId()).getShopName());
+                    }
                 }
                 if (userMap != null && !userMap.isEmpty()) {
                     if (userMap.get(mgtShopOrderPageVo.getUserId()) != null) {
@@ -2813,34 +2828,83 @@
         List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
         List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
         if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
-            MgtMapIntTotalVo MgtMapIntTotalVo;
+            MgtMapIntTotalVo mgtMapIntTotalVo;
             MgtMapBigTotalVo mgtMapBigTotalVo;
             // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+            Boolean noCycle = true;
+            Boolean noService = true;
+            Boolean noExperience = true;
+            Boolean noGoods = true;
             for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
-                MgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
                 mgtMapBigTotalVo = new MgtMapBigTotalVo();
-                MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
                 mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
                 if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
-                    MgtMapIntTotalVo.setMapKey("周期");
+                    mgtMapIntTotalVo.setMapKey("周期");
                     mgtMapBigTotalVo.setMapKey("周期");
                     mgtTotalOrderTotalVo.setCycleTotal(mgtTotalOrderTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
                     mgtTotalOrderTotalVo.setCycleMoney(mgtTotalOrderTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                    noCycle= false;
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
-                    MgtMapIntTotalVo.setMapKey("服务");
+                    mgtMapIntTotalVo.setMapKey("服务");
                     mgtMapBigTotalVo.setMapKey("服务");
                     mgtTotalOrderTotalVo.setServiceTotal(mgtTotalOrderTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
                     mgtTotalOrderTotalVo.setServiceMoney(mgtTotalOrderTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                    noService= false;
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
-                    MgtMapIntTotalVo.setMapKey("体验");
+                    mgtMapIntTotalVo.setMapKey("体验");
                     mgtMapBigTotalVo.setMapKey("体验");
                     mgtTotalOrderTotalVo.setExperienceTotal(mgtTotalOrderTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
                     mgtTotalOrderTotalVo.setExperienceMoney(mgtTotalOrderTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                    noExperience = false;
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
-                    MgtMapIntTotalVo.setMapKey("单品");
+                    mgtMapIntTotalVo.setMapKey("单品");
                     mgtMapBigTotalVo.setMapKey("单品");
+                    noGoods = false;
                 }
-                goodsTypeTotalList.add(MgtMapIntTotalVo);
+                //补充缺少类型
+                if(noCycle){
+                    mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                    mgtMapIntTotalVo.setMapKey("周期");
+                    mgtMapIntTotalVo.setMapValue(0);
+                    goodsTypeTotalList.add(mgtMapIntTotalVo);
+                    mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                    mgtMapBigTotalVo.setMapKey("周期");
+                    mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                    goodsTypeMoneyList.add(mgtMapBigTotalVo);
+                }
+                if(noService){
+                    mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                    mgtMapIntTotalVo.setMapKey("服务");
+                    mgtMapIntTotalVo.setMapValue(0);
+                    goodsTypeTotalList.add(mgtMapIntTotalVo);
+                    mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                    mgtMapBigTotalVo.setMapKey("服务");
+                    mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                    goodsTypeMoneyList.add(mgtMapBigTotalVo);
+                }
+                if(noExperience){
+                    mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                    mgtMapIntTotalVo.setMapKey("体验");
+                    mgtMapIntTotalVo.setMapValue(0);
+                    goodsTypeTotalList.add(mgtMapIntTotalVo);
+                    mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                    mgtMapBigTotalVo.setMapKey("体验");
+                    mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                    goodsTypeMoneyList.add(mgtMapBigTotalVo);
+                }
+                if(noGoods){
+                    mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                    mgtMapIntTotalVo.setMapKey("单品");
+                    mgtMapIntTotalVo.setMapValue(0);
+                    goodsTypeTotalList.add(mgtMapIntTotalVo);
+                    mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                    mgtMapBigTotalVo.setMapKey("单品");
+                    mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                    goodsTypeMoneyList.add(mgtMapBigTotalVo);
+                }
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
                 goodsTypeMoneyList.add(mgtMapBigTotalVo);
             }
             mgtTotalOrderTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
@@ -2861,8 +2925,8 @@
         //订单分布
         //日期全部时固定为5天
         if(StringUtils.isBlank(mgtBaseShopDto.getStartDate())){
-            mgtBaseShopDto.setStartDate(DateUtils.getDate());
-            mgtBaseShopDto.setEndDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
+            mgtBaseShopDto.setEndDate(DateUtils.getDate());
+            mgtBaseShopDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
         }
         List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listTotalOrderTotal(mgtBaseShopDto);
         if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) {
@@ -2942,34 +3006,83 @@
             totalActivityTotalVo.setExperienceTotal(0);
             totalActivityTotalVo.setExperienceMoney(BigDecimal.ZERO);
             // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
-            MgtMapIntTotalVo MgtMapIntTotalVo;
+            MgtMapIntTotalVo mgtMapIntTotalVo;
             MgtMapBigTotalVo mgtMapBigTotalVo;
             // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+            Boolean noCycle = true;
+            Boolean noService = true;
+            Boolean noExperience = true;
+            Boolean noGoods = true;
             for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
-                MgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
                 mgtMapBigTotalVo = new MgtMapBigTotalVo();
-                MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
                 mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
                 if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
-                    MgtMapIntTotalVo.setMapKey("周期");
+                    mgtMapIntTotalVo.setMapKey("周期");
                     mgtMapBigTotalVo.setMapKey("周期");
                     totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
                     totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                    noCycle= false;
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
-                    MgtMapIntTotalVo.setMapKey("服务");
+                    mgtMapIntTotalVo.setMapKey("服务");
                     mgtMapBigTotalVo.setMapKey("服务");
                     totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
                     totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                    noService= false;
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
-                    MgtMapIntTotalVo.setMapKey("体验");
+                    mgtMapIntTotalVo.setMapKey("体验");
                     mgtMapBigTotalVo.setMapKey("体验");
                     totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
                     totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                    noExperience = false;
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
-                    MgtMapIntTotalVo.setMapKey("单品");
+                    mgtMapIntTotalVo.setMapKey("单品");
                     mgtMapBigTotalVo.setMapKey("单品");
+                    noGoods = false;
                 }
-                goodsTypeTotalList.add(MgtMapIntTotalVo);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+            }
+            //补充缺少类型
+            if(noCycle){
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo.setMapKey("周期");
+                mgtMapIntTotalVo.setMapValue(0);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                mgtMapBigTotalVo.setMapKey("周期");
+                mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+            }
+            if(noService){
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo.setMapKey("服务");
+                mgtMapIntTotalVo.setMapValue(0);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                mgtMapBigTotalVo.setMapKey("服务");
+                mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+            }
+            if(noExperience){
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo.setMapKey("体验");
+                mgtMapIntTotalVo.setMapValue(0);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                mgtMapBigTotalVo.setMapKey("体验");
+                mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+            }
+            if(noGoods){
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo.setMapKey("单品");
+                mgtMapIntTotalVo.setMapValue(0);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                mgtMapBigTotalVo.setMapKey("单品");
+                mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
                 goodsTypeMoneyList.add(mgtMapBigTotalVo);
             }
             totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
@@ -2979,8 +3092,8 @@
         //获取订单分布
         //日期全部时固定为5天
         if(StringUtils.isBlank(mgtBaseShopDto.getStartDate())){
-            mgtBaseShopDto.setStartDate(DateUtils.getDate());
-            mgtBaseShopDto.setEndDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
+            mgtBaseShopDto.setEndDate(DateUtils.getDate());
+            mgtBaseShopDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
         }
         List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listTotalActivityTotal(mgtBaseShopDto);
         if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) {
@@ -2995,6 +3108,46 @@
             totalActivityTotalVo.setOrderTotalKey(orderTotalKey);
             totalActivityTotalVo.setOrderTotalValue(orderTotalValue);
             totalActivityTotalVo.setOrderMoneyValue(orderMoneyValue);
+        }
+        //参与人数
+        List<MgtMapIntTotalVo> joinList = orderMapper.getActivityMemberTotal(mgtBaseShopDto);
+        // 将查询结果转为Map
+        Map<String, Integer> mgtMapIntTotalVoMap = new HashMap<>();
+        if (joinList != null && !joinList.isEmpty()) {
+            mgtMapIntTotalVoMap = joinList.stream()
+                    .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue));
+        }
+        // 获取日期范围
+        List<String> dateList = getDateRange(mgtBaseShopDto.getStartDate(), mgtBaseShopDto.getEndDate());
+        int size = dateList.size();
+        // 创建日期和成员总数的数组
+        String[] joinMemberTotalKey = new String[size];
+        Integer[] joinMemberTotalValue = new Integer[size];
+        // 遍历日期列表,设置日期和成员总数的数组
+        String str;
+        Integer value;
+        for (int i = 0; i < size; i++) {
+            str = dateList.get(i);
+            joinMemberTotalKey[i] = str;
+            value = mgtMapIntTotalVoMap.get(str);
+            joinMemberTotalValue[i] = (value != null) ? value : 0;
+        }
+        totalActivityTotalVo.setJoinMemberTotalKey(joinMemberTotalKey);
+        totalActivityTotalVo.setJoinMemberTotalValue(joinMemberTotalValue);
+        return totalActivityTotalVo;
+    }
+
+    @Override
+    public MgtTotalActivityTotalVo getTotalActivityJoinMemberTotal(MgtBaseShopDto mgtBaseShopDto) {
+        MgtTotalActivityTotalVo totalActivityTotalVo = new MgtTotalActivityTotalVo();
+        //日期全部时固定为5天
+        if(StringUtils.isBlank(mgtBaseShopDto.getStartDate())){
+            mgtBaseShopDto.setEndDate(DateUtils.getDate());
+            mgtBaseShopDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
+        }
+        if(mgtBaseShopDto.getAgeType()!=null){
+            List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBaseShopDto.getAgeType()).getData();
+            mgtBaseShopDto.setUserIdList(userIdList);
         }
         //参与人数
         List<MgtMapIntTotalVo> joinList = orderMapper.getActivityMemberTotal(mgtBaseShopDto);
@@ -3129,10 +3282,28 @@
                 mgtBasePlatformDto.setUserIdList(userIdList);
             }
         }
-        List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+        List<Long> shopIdList = new ArrayList<>();
+        if(mgtBasePlatformDto.getShopId()!=null){
+            shopIdList.add(mgtBasePlatformDto.getShopId());
+        }else{
+            shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+        }
         List<MgtTotalDataTotalVo> mgtTotalDataTotalVoList = new ArrayList<>();
         MgtBaseShopDto mgtBaseShopDto;
         MgtTotalDataTotalVo mgtTotalDataTotalVo;
+        MgtSimpleShopVo simpleShopVo;
+        HashSet<String> set = new HashSet<>();
+        // 遍历MgtMemberOrderPageVoList,获取shopId并添加到set中
+        for (Long entity : shopIdList) {
+            set.add(entity.toString());
+        }
+        String joinedString = String.join(",", set);
+        MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
+        mgtBaseBathDto.setIds(joinedString);
+        List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData();
+        // 将MgtSimpleShopVoList转换为Map<Long, MgtSimpleShopVo>,以便后续根据shopId获取对应的MgtSimpleShopVo
+        Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream()
+                .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
         if (shopIdList != null && !shopIdList.isEmpty()) {
             for (Long shopId : shopIdList) {
                 mgtBaseShopDto = new MgtBaseShopDto();
@@ -3140,8 +3311,10 @@
                 mgtBaseShopDto.setEndDate(mgtBasePlatformDto.getEndDate());
                 mgtBaseShopDto.setShopId(shopId);
                 mgtTotalDataTotalVo = this.getTotalDataTotal(mgtBaseShopDto);
-                Shop shop = remoteShopService.getShop(shopId).getData();
-                mgtTotalDataTotalVo.setShopName(shop.getShopName());
+                simpleShopVo = shopMap.get(shopId);
+                if (simpleShopVo!=null) {
+                    mgtTotalDataTotalVo.setShopName(simpleShopVo.getShopName());
+                }
                 mgtTotalDataTotalVoList.add(mgtTotalDataTotalVo);
             }
         }
@@ -3191,34 +3364,83 @@
         mgtTotalOrderTotalVo.setExperienceTotal(0);
         mgtTotalOrderTotalVo.setExperienceMoney(BigDecimal.ZERO);
         if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
-            MgtMapIntTotalVo MgtMapIntTotalVo;
+            MgtMapIntTotalVo mgtMapIntTotalVo;
             MgtMapBigTotalVo mgtMapBigTotalVo;
             // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+            Boolean noCycle = true;
+            Boolean noService = true;
+            Boolean noExperience = true;
+            Boolean noGoods = true;
             for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
-                MgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
                 mgtMapBigTotalVo = new MgtMapBigTotalVo();
-                MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
                 mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
                 if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
-                    MgtMapIntTotalVo.setMapKey("周期");
+                    mgtMapIntTotalVo.setMapKey("周期");
                     mgtMapBigTotalVo.setMapKey("周期");
                     mgtTotalOrderTotalVo.setCycleTotal(mgtTotalOrderTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
                     mgtTotalOrderTotalVo.setCycleMoney(mgtTotalOrderTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                    noCycle= false;
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
-                    MgtMapIntTotalVo.setMapKey("服务");
+                    mgtMapIntTotalVo.setMapKey("服务");
                     mgtMapBigTotalVo.setMapKey("服务");
                     mgtTotalOrderTotalVo.setServiceTotal(mgtTotalOrderTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
                     mgtTotalOrderTotalVo.setServiceMoney(mgtTotalOrderTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                    noService= false;
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
-                    MgtMapIntTotalVo.setMapKey("体验");
+                    mgtMapIntTotalVo.setMapKey("体验");
                     mgtMapBigTotalVo.setMapKey("体验");
                     mgtTotalOrderTotalVo.setExperienceTotal(mgtTotalOrderTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
                     mgtTotalOrderTotalVo.setExperienceMoney(mgtTotalOrderTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                    noExperience = false;
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
-                    MgtMapIntTotalVo.setMapKey("单品");
+                    mgtMapIntTotalVo.setMapKey("单品");
                     mgtMapBigTotalVo.setMapKey("单品");
+                    noGoods = false;
                 }
-                goodsTypeTotalList.add(MgtMapIntTotalVo);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+            }
+            //补充缺少类型
+            if(noCycle){
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo.setMapKey("周期");
+                mgtMapIntTotalVo.setMapValue(0);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                mgtMapBigTotalVo.setMapKey("周期");
+                mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+            }
+            if(noService){
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo.setMapKey("服务");
+                mgtMapIntTotalVo.setMapValue(0);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                mgtMapBigTotalVo.setMapKey("服务");
+                mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+            }
+            if(noExperience){
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo.setMapKey("体验");
+                mgtMapIntTotalVo.setMapValue(0);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                mgtMapBigTotalVo.setMapKey("体验");
+                mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+            }
+            if(noGoods){
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo.setMapKey("单品");
+                mgtMapIntTotalVo.setMapValue(0);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                mgtMapBigTotalVo.setMapKey("单品");
+                mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
                 goodsTypeMoneyList.add(mgtMapBigTotalVo);
             }
             mgtTotalOrderTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
@@ -3238,9 +3460,11 @@
         }
         //订单分布
         //日期全部时固定为5天
+        Boolean fillZero = false;
         if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){
-            mgtBasePlatformDto.setStartDate(DateUtils.getDate());
-            mgtBasePlatformDto.setEndDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
+            mgtBasePlatformDto.setEndDate(DateUtils.getDate());
+            mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
+            fillZero = true;
         }
         List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalOrderTotal(mgtBasePlatformDto);
         if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) {
@@ -3252,10 +3476,17 @@
                 orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst();
                 orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond();
             }
-            MerOrderDistributionTotalVo merOrderDistributionTotalVo = fillOrderTotalKeyAndValuesToRecentFiveDays(orderTotalKey,orderTotalValue,orderMoneyValue);
-            mgtTotalOrderTotalVo.setOrderTotalKey(merOrderDistributionTotalVo.getOrderTotalKey());
-            mgtTotalOrderTotalVo.setOrderTotalValue(merOrderDistributionTotalVo.getOrderTotalValue());
-            mgtTotalOrderTotalVo.setOrderMoneyValue(merOrderDistributionTotalVo.getOrderMoneyValue());
+            if(fillZero){
+                MerOrderDistributionTotalVo merOrderDistributionTotalVo = fillOrderTotalKeyAndValuesToRecentFiveDays(orderTotalKey,orderTotalValue,orderMoneyValue);
+                mgtTotalOrderTotalVo.setOrderTotalKey(merOrderDistributionTotalVo.getOrderTotalKey());
+                mgtTotalOrderTotalVo.setOrderTotalValue(merOrderDistributionTotalVo.getOrderTotalValue());
+                mgtTotalOrderTotalVo.setOrderMoneyValue(merOrderDistributionTotalVo.getOrderMoneyValue());
+            }else{
+                mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey);
+                mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue);
+                mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue);
+            }
+
         }
         return mgtTotalOrderTotalVo;
     }
@@ -3273,7 +3504,7 @@
             return new MgtPlTotalActivityTotalVo();
         }
         //获取需要关联的用户id集合
-        if (mgtBasePlatformDto.getDeptId() != null) {
+        /*if (mgtBasePlatformDto.getDeptId() != null) {
             List<Long> userIdList = new ArrayList<>();
             if (mgtBasePlatformDto.getUserId() != null) {
                 userIdList.add(mgtBasePlatformDto.getUserId());
@@ -3286,8 +3517,12 @@
             if (!userIdList.isEmpty()) {
                 mgtBasePlatformDto.setUserIdList(userIdList);
             }
-        }
+        }*/
         List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+        if(mgtBasePlatformDto.getShopId()!=null){
+            shopIdList = new ArrayList<>();
+            shopIdList.add(mgtBasePlatformDto.getShopId());
+        }
         mgtBasePlatformDto.setShopIdList(shopIdList);
         //获取基础统计
         MgtPlTotalActivityTotalVo totalActivityTotalVo = orderMapper.getPlTotalActivityTotal(mgtBasePlatformDto);
@@ -3308,41 +3543,92 @@
         totalActivityTotalVo.setExperienceTotal(0);
         totalActivityTotalVo.setExperienceMoney(BigDecimal.ZERO);
         if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
-            MgtMapIntTotalVo MgtMapIntTotalVo;
+            MgtMapIntTotalVo mgtMapIntTotalVo;
             MgtMapBigTotalVo mgtMapBigTotalVo;
             // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+            Boolean noCycle = true;
+            Boolean noService = true;
+            Boolean noExperience = true;
+            Boolean noGoods = true;
             for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
-                MgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
                 mgtMapBigTotalVo = new MgtMapBigTotalVo();
-                MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
                 mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
                 if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
-                    MgtMapIntTotalVo.setMapKey("周期");
+                    mgtMapIntTotalVo.setMapKey("周期");
                     mgtMapBigTotalVo.setMapKey("周期");
                     totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
                     totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                    noCycle= false;
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
-                    MgtMapIntTotalVo.setMapKey("服务");
+                    mgtMapIntTotalVo.setMapKey("服务");
                     mgtMapBigTotalVo.setMapKey("服务");
                     totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
                     totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                    noService= false;
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
-                    MgtMapIntTotalVo.setMapKey("体验");
+                    mgtMapIntTotalVo.setMapKey("体验");
                     mgtMapBigTotalVo.setMapKey("体验");
                     totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
                     totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                    noExperience = false;
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
-                    MgtMapIntTotalVo.setMapKey("单品");
+                    mgtMapIntTotalVo.setMapKey("单品");
                     mgtMapBigTotalVo.setMapKey("单品");
+                    noGoods = false;
                 }
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+            }
+            //补充缺少类型
+            if(noCycle){
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo.setMapKey("周期");
+                mgtMapIntTotalVo.setMapValue(0);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                mgtMapBigTotalVo.setMapKey("周期");
+                mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+            }
+            if(noService){
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo.setMapKey("服务");
+                mgtMapIntTotalVo.setMapValue(0);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                mgtMapBigTotalVo.setMapKey("服务");
+                mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+            }
+            if(noExperience){
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo.setMapKey("体验");
+                mgtMapIntTotalVo.setMapValue(0);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                mgtMapBigTotalVo.setMapKey("体验");
+                mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+            }
+            if(noGoods){
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo.setMapKey("单品");
+                mgtMapIntTotalVo.setMapValue(0);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                mgtMapBigTotalVo.setMapKey("单品");
+                mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
             }
             totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
             totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
         }
         //日期全部时固定为5天
         if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){
-            mgtBasePlatformDto.setStartDate(DateUtils.getDate());
-            mgtBasePlatformDto.setEndDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
+            mgtBasePlatformDto.setEndDate(DateUtils.getDate());
+            mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
         }
         //获取订单分布
         List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalActivityTotal(mgtBasePlatformDto);
@@ -3446,14 +3732,137 @@
         // 遍历日期列表,设置日期和成员总数的数组
         for (int i = 0; i < size; i++) {
             str = dateList.get(i);
-            joinMemberTotalKey[i] = str;
+            getMemberTotalKey[i] = str;
             value = getMemberMap.get(str);
-            joinMemberTotalValue[i] = (value != null) ? value : 0;
+            getMemberTotalValue[i] = (value != null) ? value : 0;
         }
         totalActivityTotalVo.setGetMemberTotalKey(getMemberTotalKey);
         totalActivityTotalVo.setGetMemberTotalValue(getMemberTotalValue);
         return totalActivityTotalVo;
     }
+
+
+    @Override
+    public MgtPlTotalActivityTotalVo getPlTotalActivityJoinMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) {
+        if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){
+            return new MgtPlTotalActivityTotalVo();
+        }
+        //获取需要关联的用户id集合
+        /*if (mgtBasePlatformDto.getDeptId() != null) {
+            List<Long> userIdList = new ArrayList<>();
+            if (mgtBasePlatformDto.getUserId() != null) {
+                userIdList.add(mgtBasePlatformDto.getUserId());
+            } else {
+                MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept();
+                mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId());
+                mgtUserIdByDept = remoteConfigService.getUserIdByDept(mgtUserIdByDept).getData();
+                userIdList = mgtUserIdByDept.getUserIdList();
+            }
+            if (!userIdList.isEmpty()) {
+                mgtBasePlatformDto.setUserIdList(userIdList);
+            }
+        }*/
+        if(mgtBasePlatformDto.getAgeType()!=null){
+            List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData();
+            mgtBasePlatformDto.setUserIdList(userIdList);
+        }
+        List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+        mgtBasePlatformDto.setShopIdList(shopIdList);
+        MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo();
+        //日期全部时固定为5天
+        if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){
+            mgtBasePlatformDto.setEndDate(DateUtils.getDate());
+            mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
+        }
+        //参与人数
+        List<MgtMapIntTotalVo> joinList = orderMapper.getMgtActivityMemberTotal(mgtBasePlatformDto);
+        // 将查询结果转为Map
+        Map<String, Integer> mgtMapIntTotalVoMap = new HashMap<>();
+        if (joinList != null && !joinList.isEmpty()) {
+            mgtMapIntTotalVoMap = joinList.stream()
+                    .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue));
+        }
+        // 获取日期范围
+        List<String> dateList = getDateRange(mgtBasePlatformDto.getStartDate(), mgtBasePlatformDto.getEndDate());
+        int size = dateList.size();
+        // 创建日期和成员总数的数组
+        String[] joinMemberTotalKey = new String[size];
+        Integer[] joinMemberTotalValue = new Integer[size];
+        // 遍历日期列表,设置日期和成员总数的数组
+        String str;
+        Integer value;
+        for (int i = 0; i < size; i++) {
+            str = dateList.get(i);
+            joinMemberTotalKey[i] = str;
+            value = mgtMapIntTotalVoMap.get(str);
+            joinMemberTotalValue[i] = (value != null) ? value : 0;
+        }
+        totalActivityTotalVo.setJoinMemberTotalKey(joinMemberTotalKey);
+        totalActivityTotalVo.setJoinMemberTotalValue(joinMemberTotalValue);
+        return totalActivityTotalVo;
+    }
+
+    @Override
+    public MgtPlTotalActivityTotalVo getPlTotalActivityGetMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) {
+        if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){
+            return new MgtPlTotalActivityTotalVo();
+        }
+        //获取需要关联的用户id集合
+        /*if (mgtBasePlatformDto.getDeptId() != null) {
+            List<Long> userIdList = new ArrayList<>();
+            if (mgtBasePlatformDto.getUserId() != null) {
+                userIdList.add(mgtBasePlatformDto.getUserId());
+            } else {
+                MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept();
+                mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId());
+                mgtUserIdByDept = remoteConfigService.getUserIdByDept(mgtUserIdByDept).getData();
+                userIdList = mgtUserIdByDept.getUserIdList();
+            }
+            if (!userIdList.isEmpty()) {
+                mgtBasePlatformDto.setUserIdList(userIdList);
+            }
+        }*/
+        if(mgtBasePlatformDto.getAgeType()!=null){
+            List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData();
+            mgtBasePlatformDto.setUserIdList(userIdList);
+        }
+        List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+        mgtBasePlatformDto.setShopIdList(shopIdList);
+        MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo();
+        //日期全部时固定为5天
+        if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){
+            mgtBasePlatformDto.setEndDate(DateUtils.getDate());
+            mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
+        }
+        //获客人数
+        List<MgtMapIntTotalVo> getList = orderMapper.getMgtActivityGetMemberTotal(mgtBasePlatformDto);
+        // 将查询结果转为Map
+        Map<String, Integer> getMemberMap = new HashMap<>();
+        if (getList != null && !getList.isEmpty()) {
+            getMemberMap = getList.stream()
+                    .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue));
+        }
+        // 获取日期范围
+        List<String> dateList = getDateRange(mgtBasePlatformDto.getStartDate(), mgtBasePlatformDto.getEndDate());
+        int size = dateList.size();
+        // 创建日期和成员总数的数组
+        String[] getMemberTotalKey = new String[size];
+        Integer[] getMemberTotalValue = new Integer[size];
+        // 遍历日期列表,设置日期和成员总数的数组
+        String str;
+        Integer value;
+        // 遍历日期列表,设置日期和成员总数的数组
+        for (int i = 0; i < size; i++) {
+            str = dateList.get(i);
+            getMemberTotalKey[i] = str;
+            value = getMemberMap.get(str);
+            getMemberTotalValue[i] = (value != null) ? value : 0;
+        }
+        totalActivityTotalVo.setGetMemberTotalKey(getMemberTotalKey);
+        totalActivityTotalVo.setGetMemberTotalValue(getMemberTotalValue);
+        return totalActivityTotalVo;
+    }
+
 
     /**
      * @param mgtPlActivityAgeDto
@@ -3710,6 +4119,7 @@
      */
     @Override
     public MerOrderDistributionTotalVo MerOrderDistributionTotalVo(MerTotalDto merTotalDto) {
+        //获取查询的商户列表
         if (merTotalDto.getShopAllFlag() != null && merTotalDto.getShopAllFlag() == 1) {
             List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData();
             merTotalDto.setShopIdList(shopIdList);
@@ -3768,6 +4178,7 @@
         String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()];
         Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()];
         BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()];
+        //数据为空返回空数组
         if (mgtMapTotalPlusVoList != null && !mgtMapTotalPlusVoList.isEmpty()) {
             MgtMapTotalPlusVo mgtMapTotalPlusVo;
             for (int i = 0; i < mgtMapTotalPlusVoList.size(); i++) {
@@ -3776,6 +4187,7 @@
                 orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst();
                 orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond();
             }
+            //补充日期到近5日
             orderDistributionTotalVo = fillOrderTotalKeyAndValuesToRecentFiveDays(orderTotalKey,orderTotalValue,orderMoneyValue);
         }else{
             orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
@@ -3823,6 +4235,10 @@
                 bigTotal = hundredBig;
             }
             // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+            Boolean noCycle = true;
+            Boolean noService = true;
+            Boolean noExperience = true;
+            Boolean noGoods = true;
             for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
                 mgtMapIntTotalVo = new MgtMapIntTotalVo();
                 mgtMapBigTotalVo = new MgtMapBigTotalVo();
@@ -3833,17 +4249,62 @@
                 if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
                     mgtMapIntTotalVo.setMapKey("周期");
                     mgtMapBigTotalVo.setMapKey("周期");
+                    noCycle= false;
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
                     mgtMapIntTotalVo.setMapKey("服务");
                     mgtMapBigTotalVo.setMapKey("服务");
+                    noService= false;
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
                     mgtMapIntTotalVo.setMapKey("体验");
                     mgtMapBigTotalVo.setMapKey("体验");
+                    noExperience = false;
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
                     mgtMapIntTotalVo.setMapKey("单品");
                     mgtMapBigTotalVo.setMapKey("单品");
+                    noGoods = false;
                 }
                 goodsTypeTotalList.add(mgtMapIntTotalVo);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+            }
+            //补充缺少类型
+            if(noCycle){
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo.setMapKey("周期");
+                mgtMapIntTotalVo.setMapValue(0);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                mgtMapBigTotalVo.setMapKey("周期");
+                mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+            }
+            if(noService){
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo.setMapKey("服务");
+                mgtMapIntTotalVo.setMapValue(0);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                mgtMapBigTotalVo.setMapKey("服务");
+                mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+            }
+            if(noExperience){
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo.setMapKey("体验");
+                mgtMapIntTotalVo.setMapValue(0);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                mgtMapBigTotalVo.setMapKey("体验");
+                mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+            }
+            if(noGoods){
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo.setMapKey("单品");
+                mgtMapIntTotalVo.setMapValue(0);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
+                mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                mgtMapBigTotalVo.setMapKey("单品");
+                mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
                 goodsTypeMoneyList.add(mgtMapBigTotalVo);
             }
             orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
@@ -4063,7 +4524,7 @@
     @Override
     @Transactional
     public void payBack(PartnerTransactionsResult transaction) {
-
+        log.info("订单支付回调---"+transaction.toString());
         // Order order = this.getById(orderId);
         // 更新订单状态 outTradeNo
         String outTradeNo = transaction.getOutTradeNo();
@@ -4116,6 +4577,8 @@
             Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(order.getUserId(), orderGoods.getGoodsId());
             if (bugGoodsNum == null || bugGoodsNum < 1) {
                 goodsTotalChangeDto.setPersonNum(1);
+            }else{
+                goodsTotalChangeDto.setPersonNum(0);
             }
             goodsTotalChangeDtoList.add(goodsTotalChangeDto);
         }
@@ -4253,6 +4716,9 @@
         Boolean haveService = false;
         Boolean haveExperience = false;
         Boolean haveGoods = false;
+        //商品统计回退
+        List<GoodsTotalChangeDto> goodsTotalChangeDtoList = new ArrayList<>();
+        GoodsTotalChangeDto goodsTotalChangeDto;
         List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId);
         if (orderGoodsList != null && !orderGoodsList.isEmpty()) {
             StringJoiner memberCouponSJ = new StringJoiner(",");
@@ -4288,6 +4754,7 @@
                 } else {
                     memberCouponSJ.add(orderGoods.getCouponId());
                 }
+                //会员统计更新
                 switch (orderGoods.getGoodsType()) {
                     case 1:
                         cycleMoney = cycleMoney.add(orderGoods.getGoodsReceivableMoney());
@@ -4308,7 +4775,21 @@
                     default:
                         break;
                 }
+                //商品统计更新
+                goodsTotalChangeDto = new GoodsTotalChangeDto();
+                goodsTotalChangeDto.setGoodsId(orderGoods.getGoodsId());
+                goodsTotalChangeDto.setChangeType(2);
+                goodsTotalChangeDto.setChangeNum(orderGoods.getBuyNum());
+                goodsTotalChangeDto.setMoney(orderGoods.getGoodsReceivableMoney());
+                Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(order.getUserId(), orderGoods.getGoodsId());
+                if (bugGoodsNum == null || bugGoodsNum <= orderGoods.getBuyNum()) {
+                    goodsTotalChangeDto.setPersonNum(1);
+                }else{
+                    goodsTotalChangeDto.setPersonNum(0);
+                }
+                goodsTotalChangeDtoList.add(goodsTotalChangeDto);
             }
+            remoteGoodsService.changeGoodsTotal(goodsTotalChangeDtoList);
             //回退优惠券
             if (memberCouponSJ != null) {
                 remoteCouponService.backMemberCoupon(memberCouponSJ.toString());
@@ -4558,6 +5039,15 @@
         return orderDistributionTotalVo;
     }
 
+    /**
+     * @description  补时间
+     * @author  jqs
+     * @date    2023/8/28 15:03
+     * @param orderTotalKey
+     * @param orderTotalValue
+     * @param orderMoneyValue
+     * @return  MerOrderDistributionTotalVo
+     */
     public MerOrderDistributionTotalVo fillOrderTotalKeyAndValuesToRecentFiveDays(String[] orderTotalKey,Integer[] orderTotalValue,BigDecimal[] orderMoneyValue) {
         MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo();
         // 获取当前日期
@@ -4599,6 +5089,7 @@
         orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
         return orderDistributionTotalVo;
     }
+
 
     private int getIndexInOrderTotalKey(String day,String[] orderTotalKey) {
         for (int i = 0; i < orderTotalKey.length; i++) {
@@ -4643,6 +5134,10 @@
                     bigTotal = hundredBig;
                 }
                 // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+                Boolean noCycle = true;
+                Boolean noService = true;
+                Boolean noExperience = true;
+                Boolean noGoods = true;
                 for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
                     mgtMapIntTotalVo = new MgtMapIntTotalVo();
                     mgtMapBigTotalVo = new MgtMapBigTotalVo();
@@ -4653,17 +5148,62 @@
                     if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
                         mgtMapIntTotalVo.setMapKey("周期");
                         mgtMapBigTotalVo.setMapKey("周期");
+                        noCycle= false;
                     } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
                         mgtMapIntTotalVo.setMapKey("服务");
                         mgtMapBigTotalVo.setMapKey("服务");
+                        noService= false;
                     } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
                         mgtMapIntTotalVo.setMapKey("体验");
                         mgtMapBigTotalVo.setMapKey("体验");
+                        noExperience = false;
                     } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
                         mgtMapIntTotalVo.setMapKey("单品");
                         mgtMapBigTotalVo.setMapKey("单品");
+                        noGoods = false;
                     }
                     goodsTypeTotalList.add(mgtMapIntTotalVo);
+                    goodsTypeMoneyList.add(mgtMapBigTotalVo);
+                }
+                //补充缺少类型
+                if(noCycle){
+                    mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                    mgtMapIntTotalVo.setMapKey("周期");
+                    mgtMapIntTotalVo.setMapValue(0);
+                    goodsTypeTotalList.add(mgtMapIntTotalVo);
+                    mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                    mgtMapBigTotalVo.setMapKey("周期");
+                    mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                    goodsTypeMoneyList.add(mgtMapBigTotalVo);
+                }
+                if(noService){
+                    mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                    mgtMapIntTotalVo.setMapKey("服务");
+                    mgtMapIntTotalVo.setMapValue(0);
+                    goodsTypeTotalList.add(mgtMapIntTotalVo);
+                    mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                    mgtMapBigTotalVo.setMapKey("服务");
+                    mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                    goodsTypeMoneyList.add(mgtMapBigTotalVo);
+                }
+                if(noExperience){
+                    mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                    mgtMapIntTotalVo.setMapKey("体验");
+                    mgtMapIntTotalVo.setMapValue(0);
+                    goodsTypeTotalList.add(mgtMapIntTotalVo);
+                    mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                    mgtMapBigTotalVo.setMapKey("体验");
+                    mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+                    goodsTypeMoneyList.add(mgtMapBigTotalVo);
+                }
+                if(noGoods){
+                    mgtMapIntTotalVo = new MgtMapIntTotalVo();
+                    mgtMapIntTotalVo.setMapKey("单品");
+                    mgtMapIntTotalVo.setMapValue(0);
+                    goodsTypeTotalList.add(mgtMapIntTotalVo);
+                    mgtMapBigTotalVo = new MgtMapBigTotalVo();
+                    mgtMapBigTotalVo.setMapKey("单品");
+                    mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
                     goodsTypeMoneyList.add(mgtMapBigTotalVo);
                 }
                 orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
@@ -4935,17 +5475,6 @@
             for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
                 userId = merOrderPageVo.getUserId();
                 userIdSj.add(userId.toString());
-                orderFrom = merOrderPageVo.getOrderFrom();
-                if (orderFrom != null) {
-                    if (orderFrom == 1) {
-                        orderFromDesc = "商城订单";
-                    } else {
-                        orderFromDesc = "线下创建";
-                    }
-                } else {
-                    orderFromDesc = "商城订单";
-                }
-                merOrderPageVo.setOrderFromDesc(orderFromDesc);
                 if(merOrderPageVo.getUnPaidMoney().compareTo(zeroBig)<0){
                     merOrderPageVo.setUnPaidMoney(zeroBig);
                 }
@@ -5005,4 +5534,16 @@
         AgencyTotalVo agencyTotalVo = orderMapper.getAgencyTotalVo(shopIdList);
         return agencyTotalVo;
     }
+
+    /**
+     * @description  商户端会员订单统计
+     * @author  jqs
+     * @date    2023/8/29 17:39
+     * @param merBaseDto
+     * @return  MerMemberSimpleTotalVo
+     */
+    @Override
+    public MerMemberSimpleTotalVo getMerMemberSimpleTotalVo(MerBaseDto merBaseDto){
+        return orderMapper.getMerMemberSimpleTotalVo(merBaseDto);
+    }
 }

--
Gitblit v1.7.1