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 | 1645 +++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 1,332 insertions(+), 313 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 a94f3ca..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
@@ -1,13 +1,20 @@
 package com.ruoyi.order.service.impl.order;
 
 
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.github.binarywang.wxpay.bean.ecommerce.PartnerTransactionsResult;
-import com.github.binarywang.wxpay.bean.ecommerce.RefundNotifyResult;
+import com.github.binarywang.wxpay.bean.ecommerce.*;
+import com.github.binarywang.wxpay.bean.ecommerce.enums.TradeTypeEnum;
 import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult;
+import com.github.binarywang.wxpay.config.WxPayConfig;
+import com.github.binarywang.wxpay.exception.WxPayException;
+import com.github.binarywang.wxpay.service.WxPayService;
+import com.google.common.base.Joiner;
+import com.google.gson.Gson;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.core.utils.StringUtils;
@@ -15,6 +22,7 @@
 import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.common.security.utils.CodeFactoryUtil;
 import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.order.config.WxPayConfiguration;
 import com.ruoyi.order.domain.dto.*;
 import com.ruoyi.order.domain.pojo.account.OrderPayment;
 import com.ruoyi.order.domain.pojo.account.OrderRefund;
@@ -46,18 +54,20 @@
 import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
 import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord;
 import com.ruoyi.system.api.domain.poji.shop.Shop;
+import com.ruoyi.system.api.domain.poji.shop.ShopProportionVo;
 import com.ruoyi.system.api.domain.poji.sys.SysUser;
 import com.ruoyi.system.api.domain.vo.*;
 import com.ruoyi.system.api.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -119,11 +129,11 @@
     @Resource
     private PayRecordService payRecordService;
 
-    @Autowired
+    @Resource
     private RedissonClient redissonClient;
 
-    /*@Autowired
-    private WxPayService wxService;*/
+    @Resource
+    private WxPayService wxService;
 
     @Resource
     private PaymentMessageService paymentMessageService;
@@ -147,6 +157,10 @@
     @Override
     public AppSureOrderVo buyGoods(AppSureOrderDto appSureOrderDto) {
         Long userId = appSureOrderDto.getUserId();
+        Shop shop = remoteShopService.getShop(appSureOrderDto.getShopId()).getData();
+        if(shop!=null&&shop.getShopStatus()!=1){
+            throw new ServiceException(AppErrorConstant.SHOP_CLOSED);
+        }
         // 初始化订单对象
         AppSureOrderVo appSureOrderVo = new AppSureOrderVo();
         // 初始化订单商品列表
@@ -405,6 +419,10 @@
     @Override
     public AppPanicBuyVo panicBuyGoods(AppPanicBuyDto appPanicBuyDto) {
         Long userId = appPanicBuyDto.getUserId();
+        Shop shop = remoteShopService.getShop(appPanicBuyDto.getShopId()).getData();
+        if(shop!=null&&shop.getShopStatus()!=1){
+            throw new ServiceException(AppErrorConstant.SHOP_CLOSED);
+        }
         AppPanicBuyVo appPanicBuyVo = new AppPanicBuyVo();
         String activityId = appPanicBuyDto.getActivityId();
         String goodsId = appPanicBuyDto.getGoodsId();
@@ -551,6 +569,7 @@
         BigDecimal orderPayMoney = new BigDecimal("0.00");
         // 创建订单ID和订单号
         String orderId = IdUtils.simpleUUID();
+
         String orderNo = CodeFactoryUtil.getShopOrderNo();
         OrderGoods orderGoods;
         String orderGoodsId;
@@ -727,6 +746,9 @@
         order.setOrderRemark(appPlaceOrderDto.getOrderRemark());
         order.setGoodsNum(goodsNum);
         order.setCreateTime(new Date());
+        if(appPlaceOrderDto.getNewMemberFlag()!=null&&appPlaceOrderDto.getNewMemberFlag()==1){
+            order.setNewMemberFlag(1);
+        }
         // 保存订单
         this.save(order);
         // 更新用户商品类型
@@ -738,35 +760,42 @@
         }
         appPlaceOrderVo.setOrderId(orderId);
         appPlaceOrderVo.setOrderNo(orderNo);
-
+        //商品数据
         String goodsName = "";
-        if (null != goods) {
-            goodsName = goods.getGoodsName();
+        if (null != goodsNameList) {
+            goodsName = String.join(",", goodsNameList);
         }
-
-        // 小程序微信下单支付
-        /*createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, orderNo,
-                orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(),
-                appPlaceOrderDto.getSpbillCreateIp(), goodsNameList);*/
-
-
         //减去优惠券
         if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
             remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
         }
-        //生成自动取消订单延时任务
-        Integer delayTime = 30;
-        if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
-            delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
+        if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){
+            String outTradeNo = IdUtils.simpleUUID();
+            // 保存订单 交易流水
+            order.setOutTradeNo(outTradeNo);
+            this.saveOrUpdate(order);
+            Integer delayTime = 30;
+            if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
+                delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
+            }
+            appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
+            // 小程序微信下单支付
+            createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, outTradeNo,
+                    orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(),
+                    appPlaceOrderDto.getSpbillCreateIp(), goodsNameList,1);
+            //生成自动取消订单延时任务
+            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);
+            delayTask.setCreateTime(new Date());
+            delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
+            delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
+            remoteConfigService.addDelayTask(delayTask);
+        }else{
+            order.setOrderStatus(2);
+            this.saveOrUpdate(order);
         }
-        redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES);
-        DelayTask delayTask = new DelayTask();
-        delayTask.setDelFlag(0);
-        delayTask.setCreateTime(new Date());
-        delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
-        delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
-        remoteConfigService.addDelayTask(delayTask);
-        appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
 
         return appPlaceOrderVo;
     }
@@ -777,17 +806,18 @@
      * @param userId
      * @param shopId
      * @param goodsName
-     * @param orderNo
+     * @param outTradeNo
      * @param orderId
      * @param payMoney
      * @param openid
      * @param payerClientIp
      * @param goodsNameList
      */
-    /*private void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId,
-                                 String goodsName, String orderNo,
+
+    private void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId,
+                                 String goodsName, String outTradeNo,
                                  String orderId, BigDecimal payMoney,
-                                 String openid, String payerClientIp, List<String> goodsNameList){
+                                 String openid, String payerClientIp, List<String> goodsNameList,Integer orderFrom){
         try {
             // 创建支付订单
             R<String> resultMch = remoteShopService.getShopSubMchId(shopId);
@@ -806,11 +836,16 @@
             String description = goodsName + "-商品购买";
 
             request.setDescription(description);
-            request.setOutTradeNo(orderNo);
+            request.setOutTradeNo(outTradeNo);
             request.setNotifyUrl(config.getNotifyUrl());
             // 结算信息
             PartnerTransactionsRequest.SettleInfo settleInfo = new PartnerTransactionsRequest.SettleInfo();
-            settleInfo.setProfitSharing(true);
+            // TODO 分账处理
+            if(orderFrom==2){
+                settleInfo.setProfitSharing(true);
+            }else{
+                settleInfo.setProfitSharing(false);
+            }
             settleInfo.setSubsidyAmount(BigDecimal.ZERO);
             request.setSettleInfo(settleInfo);
 
@@ -820,7 +855,10 @@
             amount.setTotal(totalFee);
             amount.setCurrency("CNY");
             request.setAmount(amount);
-
+            Date endTime = appPlaceOrderVo.getEndTime();
+            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
+            String rfc3339Format = formatter.format(endTime);
+            request.setTimeExpire(rfc3339Format);
             // 支付者
             PartnerTransactionsRequest.Payer payer = new PartnerTransactionsRequest.Payer();
             payer.setSpOpenid(openid);
@@ -853,13 +891,14 @@
             paymentMessageService.savePaymentMessage("1", orderId, payRequestJson, payResponseJson);
 
             // 保存支付订单统一下单支付记录
-            orderPaymentService.saveOrderPayment(userId, shopId, subMchId, orderId, payMoney,
+            orderPaymentService.saveOrderPayment(userId, shopId, subMchId, orderId, outTradeNo, payMoney,
                     appPlaceOrderVo.getEndTime(), "Y", openid,
                     Joiner.on(";").join(goodsNameList), result.getPackageValue());
+
         } catch (WxPayException e) {
             throw new ServiceException(e.getMessage());
         }
-    }*/
+    }
 
 
     /**
@@ -1066,6 +1105,9 @@
         order.setOrderRemark(appPlaceActivityDto.getOrderRemark());
         order.setGoodsNum(goodsNum);
         order.setCreateTime(new Date());
+        if(appPlaceActivityDto.getNewMemberFlag()!=null&&appPlaceActivityDto.getNewMemberFlag()==1){
+            order.setNewMemberFlag(1);
+        }
         // 保存订单
         this.save(order);
         // 更新用户商品类型
@@ -1121,7 +1163,41 @@
         appPlaceOrderVo.setPackageStr(res.getPackageVal());
         appPlaceOrderVo.setTradeType(res.getSignType());
         appPlaceOrderVo.setPaySign(res.getPaySign());
+
 */
+        List<String> goodsNameList = new ArrayList<>();
+        goodsNameList.add(orderGoods.getGoodsName());
+
+
+        if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){
+
+            String outTradeNo = IdUtils.simpleUUID();
+            // 保存订单 交易流水
+            order.setOutTradeNo(outTradeNo);
+            this.saveOrUpdate(order);
+            Integer delayTime = 30;
+            if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
+                delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
+            }
+            appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
+            // 小程序微信下单支付
+            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.getPaySign();
+            redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, payStr , delayTime.longValue(), TimeUnit.MINUTES);
+            DelayTask delayTask = new DelayTask();
+            delayTask.setDelFlag(0);
+            delayTask.setCreateTime(new Date());
+            delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
+            delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
+            remoteConfigService.addDelayTask(delayTask);
+
+        }else{
+            order.setOrderStatus(2);
+            this.saveOrUpdate(order);
+        }
         //生成活动参加记录
         ActivityRecord activityRecord = new ActivityRecord();
         activityRecord.setDelFlag(0);
@@ -1135,19 +1211,6 @@
         activityRecord.setGoodsId(orderGoods.getGoodsId());
         activityRecord.setActivityMoney(activityGoodsGetVo.getActivityPrice());
         remoteActivityService.addActivityRecord(activityRecord);
-        //生成自动取消订单延时任务
-        Integer delayTime = 30;
-        if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
-            delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
-        }
-        redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES);
-        DelayTask delayTask = new DelayTask();
-        delayTask.setDelFlag(0);
-        delayTask.setCreateTime(new Date());
-        delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
-        delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
-        remoteConfigService.addDelayTask(delayTask);
-        appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
         return appPlaceOrderVo;
     }
 
@@ -1164,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);
             });
@@ -1259,6 +1328,47 @@
     }
 
     /**
+     * @description  支付订单
+     * @author  jqs
+     * @date    2023/8/27 15:26
+     * @param orderId
+     * @return  AppPlaceOrderVo
+     */
+    @Override
+    public AppPlaceOrderVo payOrder(String orderId){
+        Order order = this.getById(orderId);
+        if(order.getOrderStatus()!=1){
+            throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER);
+        }
+        String payStr = redisService.getCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+ "-"+orderId);
+        if(StringUtils.isBlank(payStr)){
+            throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER);
+        }
+        Integer delayTime = 30;
+        if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
+            delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
+        }
+        AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo();
+        OrderPayment orderPayment = orderPaymentService.getByUnpaidOrderId(orderId);
+        String[] payArr = payStr.split("-");
+        appPlaceOrderVo.setOrderId(order.getOrderId());
+        appPlaceOrderVo.setOrderNo(order.getOrderNo());
+        appPlaceOrderVo.setPayType(order.getPayType());
+        appPlaceOrderVo.setPayMoney(order.getPayMoney());
+        appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
+        appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
+        appPlaceOrderVo.setAppId(payArr[0]);
+        appPlaceOrderVo.setMchId(orderPayment.getSubMchId());
+        appPlaceOrderVo.setTimeStamp(payArr[1]);
+        appPlaceOrderVo.setNonceStr(payArr[2]);
+        appPlaceOrderVo.setPackageStr(payArr[3]);
+        appPlaceOrderVo.setSignType(payArr[4]);
+        appPlaceOrderVo.setPaySign(payArr[5]);
+        appPlaceOrderVo.setPrepayId(orderPayment.getPrepayId());
+        return appPlaceOrderVo;
+    }
+
+    /**
      * 获取用户订单统计
      *
      * @param userId
@@ -1287,9 +1397,15 @@
     @Override
     public MerHomeShopTotalVo getMerHomeTotal(MerHomeShopTotalVo merHomeShopTotalVo) {
         Long shopId = merHomeShopTotalVo.getShopId();
+        //获取今日到店
         Integer todayShop = userServiceRecordService.countShopServicePerson(shopId);
+        //获取待处理订单和营业额
         merHomeShopTotalVo = orderMapper.getMerHomeShopTotalVo(shopId);
+        //获取服务统计
+        MerHomeShopTotalVo serviceTotalVo = orderMapper.getMerHomeShopServiceTotalVo(shopId);
         merHomeShopTotalVo.setTodayShop(todayShop);
+        merHomeShopTotalVo.setCycleSurp(serviceTotalVo.getCycleSurp());
+        merHomeShopTotalVo.setExplorationSurp(serviceTotalVo.getExplorationSurp());
         return merHomeShopTotalVo;
     }
 
@@ -1500,9 +1616,10 @@
         merVerifyOrderVo.setUserName(member.getRealName());
         merVerifyOrderVo.setUserMobile(member.getMobile());
         merVerifyOrderVo.setCloseFlag(order.getCloseFlag());
-        //
+        // TODO  活动才分账
         if (order.getOrderFrom() == 2) {
-            // profitsSharingService.applyProfitSharing();
+            // 活动才分账
+            submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOnlinePayMoney());
         }
 
         //创建支付记录
@@ -1515,12 +1632,14 @@
             payRecord.setPayType(merVerifyOrderDto.getPayType());
             payRecordService.save(payRecord);
         }
-        //submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOrderMoney());
-
+        //更新用户消费统计
+        MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
+        memberTotalChangeDto.setConsumeTime(nowTime);
+        remoteMemberService.changeMemberTotal(memberTotalChangeDto);
         return merVerifyOrderVo;
     }
 
-    /*private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney) {
+    private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney) {
         String sendMessage = "";
         String resultMessage = "";
         try {
@@ -1534,51 +1653,55 @@
             R<String> resultMch = remoteShopService.getShopSubMchId(shopId);
             String subMchId = resultMch.getData();
             if (!StringUtils.isEmpty(subMchId)) {
-
+                WxPayConfig config = wxService.getConfig();
 
                 R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(shopId);
                 ShopProportionVo shopProportion = resultShopProportion.getData();
                 if (null != shopProportion) {
                     ProfitSharingRequest request = new ProfitSharingRequest();
+                    request.setAppid(config.getAppId());
                     request.setSubMchid(subMchId);
                     request.setTransactionId(transactionId);
-                    request.setOutOrderNo(orderNo);
-                    List<Receiver> receiverList = new ArrayList<>();
+                    request.setOutOrderNo(IdUtils.simpleUUID());
+                    List<ProfitSharingRequest.Receiver> receiverList = new ArrayList<>();
 
                     String description = "订单:" + orderNo + " 平台抽取佣金";
+                    //获取商户分成
                     BigDecimal proportionPercent = shopProportion.getProportionPercent();
                     if (null == proportionPercent) {
                         proportionPercent = BigDecimal.ZERO;
                     }
+                    //平台分成
+                    proportionPercent = new BigDecimal("100.00").subtract(proportionPercent);
+                    if(proportionPercent.compareTo(BigDecimal.ZERO)>0){
+                        ProfitSharingResult result = new ProfitSharingResult();
+                        result.setOutOrderNo(orderNo);
+                        result.setStatus("FINISHED");
+                        // 计算分成金额
+                        int amount = orderMoney.multiply(proportionPercent).setScale(0, RoundingMode.UP).intValue();
+                        log.info("订单分账:{} 分账金额: {}", orderNo, amount);
+                        if (amount > 0) {
+                            // 分账创建
+                            ProfitSharingRequest.Receiver receiver = new ProfitSharingRequest.Receiver();
+                            receiver.setType("MERCHANT_ID");
+                            receiver.setReceiverAccount(platformTyMacId);
+                            receiver.setAmount(amount);
+                            receiver.setDescription(description);
 
-                    ProfitSharingResult result = new ProfitSharingResult();
-                    result.setOutOrderNo(orderNo);
-                    result.setStatus("FINISHED");
+                            receiverList.add(receiver);
+                            request.setReceivers(receiverList);
+                            // 分账完成
+                            request.setFinish(true);
+                            result = wxService.getEcommerceService().profitSharing(request);
+                        }
 
-                    // 计算分成金额
-                    int amount = orderMoney.multiply(proportionPercent).setScale(0, RoundingMode.UP).intValue();
-                    log.info("订单分账:{} 分账金额: {}", orderNo, amount);
-                    if (amount > 0) {
-                        // 分账创建
-                        Receiver receiver = new Receiver();
-                        receiver.setType("MERCHANT_ID");
-                        receiver.setReceiverAccount(platformTyMacId);
-                        receiver.setAmount(amount);
-                        receiver.setDescription(description);
+                        // 创建分账记录
+                        profitSharingService.saveProfitSharing(shopId, orderId, orderMoney, result);
 
-                        receiverList.add(receiver);
-                        request.setReceivers(receiverList);
-                        // 分账完成
-                        request.setFinish(true);
-                        result = wxService.getEcommerceService().profitSharing(request);
+                        // 保存请求信息
+                        sendMessage = JSONObject.toJSONString(request);
+                        resultMessage = JSONObject.toJSONString(result);
                     }
-
-                    // 创建分账记录
-                    profitSharingService.saveProfitSharing(shopId, orderId, orderMoney, result);
-
-                    // 保存请求信息
-                    sendMessage = JSONObject.toJSONString(request);
-                    resultMessage = JSONObject.toJSONString(result);
                 } else {
                     resultMessage = String.format("订单分账:%s 获取商户分成失败", orderNo);
                     log.info(resultMessage);
@@ -1590,12 +1713,12 @@
         } catch (WxPayException e) {
             resultMessage = String.format("订单分账:%s 分账失败:%s", orderNo, e.getMessage());
             log.info(resultMessage);
-            e.printStackTrace();
+            throw new ServiceException(resultMessage);
         }
 
         // 保存分账信息
         paymentMessageService.savePaymentMessage("4", orderId, sendMessage, resultMessage);
-    }*/
+    }
 
     /**
      * @param merVerifyCouponDto
@@ -1616,20 +1739,21 @@
         // 调用remoteMemberService的getMember方法获取Member对象
         Member member = remoteMemberService.getMember(userId).getData();
         //如果是商户优惠券,验证商户一致
-        if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) {
+        if (memberCoupon.getCouponFrom() == 2) {
             if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
-                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+                throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
             }
-            if(memberCoupon.getShopId().equals(shopId)){
+            if(!memberCoupon.getShopId().equals(shopId)){
                 throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
             }
         }
         //如果是平台优惠券,当用户绑定商户时验证商户一致
         if (memberCoupon.getCouponFrom() == 1 && member.getBindingFlag() == 1) {
-            if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
+            /*if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
                 throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
-            }
-            if(memberCoupon.getShopId().equals(shopId)){
+            }*/
+            //判断绑定商户是否和核销商户一致
+            if(!member.getRelationShopId().equals(shopId)){
                 throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
             }
         }
@@ -1712,6 +1836,7 @@
         if (member.getBindingFlag() != 1) {
             AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
             appMemberBindingDto.setBindingFlag(1);
+            appMemberBindingDto.setBindingType(4);
             appMemberBindingDto.setShopId(shop.getShopId());
             appMemberBindingDto.setShopName(shop.getShopName());
             appMemberBindingDto.setUserId(memberCoupon.getUserId());
@@ -1828,6 +1953,7 @@
         if (member.getBindingFlag() != 1) {
             AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
             appMemberBindingDto.setBindingFlag(1);
+            appMemberBindingDto.setBindingType(5);
             appMemberBindingDto.setShopId(shop.getShopId());
             appMemberBindingDto.setShopName(shop.getShopName());
             appMemberBindingDto.setUserId(memberGiftRecord.getUserId());
@@ -1920,7 +2046,6 @@
                 sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
                 String password = "hongruitang";
                 sysUser.setPassword(SecurityUtils.encryptPassword(password));
-                log.debug("sysUser" + sysUser.toString());
                 sysUser = remoteUserService.registerUser(sysUser).getData();
                 member = new Member();
                 member.setMemberId(memberId);
@@ -1929,6 +2054,7 @@
                 member.setRealName(name);
                 member.setNickName(name);
                 member.setBindingFlag(1);
+                member.setBindingType(3);
                 member.setRelationShopId(shopId);
                 member.setRelationShopName(shop.getShopName());
                 remoteMemberService.createNewMember(member);
@@ -2171,14 +2297,6 @@
         } else {
             order.setCloseFlag(0);
         }
-        //保存订单和服务
-        this.save(order);
-        orderGoodsService.saveBatch(orderGoodsList);
-        consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
-        //减去优惠券
-        if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
-            remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
-        }
         //用户未绑定则绑定商户
         Member member = remoteMemberService.getMember(userId).getData();
         if (member != null && member.getBindingFlag() != 1) {
@@ -2188,17 +2306,31 @@
             appMemberBindingDto.setShopName(shop.getShopName());
             appMemberBindingDto.setUserId(userId);
             appMemberBindingDto.setBindingFlag(1);
+            appMemberBindingDto.setBindingType(3);
             remoteMemberService.updateMemberBinding(appMemberBindingDto);
+            order.setNewMemberFlag(1);
         }
+        //保存订单和服务
+        this.save(order);
+        orderGoodsService.saveBatch(orderGoodsList);
+        consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
+        //减去优惠券
+        if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
+            remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
+        }
+        //更新会员消费记录
+        MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
+        memberTotalChangeDto.setConsumeTime(nowTime);
+        remoteMemberService.changeMemberTotal(memberTotalChangeDto);
         //更新商户统计
-        ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
+        /*ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
         shopTotalChangeDto.setShopId(order.getShopId());
         shopTotalChangeDto.setOrderType(1);
         shopTotalChangeDto.setCycleMoney(cycleMoney);
         shopTotalChangeDto.setServiceMoney(serviceMoney);
         shopTotalChangeDto.setExperienceMoney(experienceMoney);
         shopTotalChangeDto.setGoodsMoney(goodsMoney);
-        remoteShopService.changeShopTotal(shopTotalChangeDto);
+        remoteShopService.changeShopTotal(shopTotalChangeDto);*/
         //创建支付记录
         PayRecord payRecord = new PayRecord();
         payRecord.setDelFlag(0);
@@ -2217,10 +2349,12 @@
     @Override
     public List<MerOrderPageVo> pageMerOrder(Page page, MerOrderPageDto merOrderPageDto) {
         if (StringUtils.isNotBlank(merOrderPageDto.getKeyword())) {
+            // 获取关键字对应的用户ID
             MgtUserIdByKeywordDto userIdByKeywordDto = new MgtUserIdByKeywordDto();
             userIdByKeywordDto.setKeyword(merOrderPageDto.getKeyword());
             MgtUserIdByKeywordVo userIdByKeywordVo = remoteMemberService.getUserIdByKeyword(userIdByKeywordDto).getData();
             if (StringUtils.isNotBlank(userIdByKeywordVo.getUserIds())) {
+                // 将用户ID转换成List<Long>类型
                 List<Long> userIdList = Arrays.stream(userIdByKeywordVo.getUserIds().split(","))
                         .map(Long::parseLong)
                         .collect(Collectors.toList());
@@ -2228,6 +2362,8 @@
                 merOrderPageDto.setMemberUserId(null);
             }
         }
+
+        // 获取订单列表
         List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerOrder(page, merOrderPageDto);
         if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) {
             Long userId;
@@ -2236,15 +2372,17 @@
             String orderFromDesc;
             BigDecimal zeroBig = new BigDecimal("0.00");
             StringJoiner userIdSj = new StringJoiner(",");
+            // 遍历订单列表
             for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
                 userId = merOrderPageVo.getUserId();
                 userIdSj.add(userId.toString());
                 orderFrom = merOrderPageVo.getOrderFrom();
+                // 根据订单来源设置订单来源描述
                 if (orderFrom != null) {
                     if (orderFrom == 1) {
                         orderFromDesc = "商城订单";
-                    } else if(orderFrom == 2){
-                        orderFromDesc = "店铺砍价活动("+merOrderPageVo.getActivityName()+")";
+                    } else if (orderFrom == 2) {
+                        orderFromDesc = "平台秒杀活动(" + merOrderPageVo.getActivityName() + ")";
                     } else {
                         orderFromDesc = "线下创建";
                     }
@@ -2252,18 +2390,22 @@
                     orderFromDesc = "商城订单";
                 }
                 merOrderPageVo.setOrderFromDesc(orderFromDesc);
+                // 设置未支付金额为0.00,如果未支付金额小于0,则设置为0.00
                 if (merOrderPageVo.getUnPaidMoney() == null) {
                     merOrderPageVo.setUnPaidMoney(zeroBig);
                 }
-                if(merOrderPageVo.getUnPaidMoney().compareTo(zeroBig)<0){
+                if (merOrderPageVo.getUnPaidMoney().compareTo(zeroBig) < 0) {
                     merOrderPageVo.setUnPaidMoney(zeroBig);
                 }
             }
+
+            // 根据用户ID列表获取用户信息
             MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
             mgtBaseBathDto.setIds(userIdSj.toString());
             List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
             Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
                     .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
+            // 遍历订单列表,设置用户信息
             for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
                 if (merOrderPageVo.getUserId() != null && userMap.get(merOrderPageVo.getUserId()) != null) {
                     merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName());
@@ -2536,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) {
@@ -2675,55 +2819,92 @@
      */
     @Override
     public MgtTotalOrderTotalVo getTotalOrderTotal(MgtBaseShopDto mgtBaseShopDto) {
+        //订单数量 订单金额
         MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getTotalOrderTotalOrderFrom(mgtBaseShopDto);
         //MgtTotalOrderTotalVo mgtTotalOrderTotalVoGoodsType = orderMapper.getTotalOrderTotalGoodsType(mgtBaseShopDto);
-        List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listTotalOrderTotal(mgtBaseShopDto);
-        if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) {
-            String[] orderTotalKey = new String[MgtMapIntTotalVos.size()];
-            Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()];
-            BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()];
-            for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
-                orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey();
-                orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst();
-                orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond();
-            }
-            mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey);
-            mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue);
-            mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue);
-        }
+
         //获取商品分类销售数据
         List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listTotalOrderTotalGoodsType(mgtBaseShopDto);
         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);
@@ -2740,6 +2921,26 @@
         if (orderFromList != null && orderFromList.size() > 0) {
             orderFromList = bigListRemoveNull(orderFromList);
             mgtTotalOrderTotalVo.setOrderFromRankList(orderFromList);
+        }
+        //订单分布
+        //日期全部时固定为5天
+        if(StringUtils.isBlank(mgtBaseShopDto.getStartDate())){
+            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) {
+            String[] orderTotalKey = new String[MgtMapIntTotalVos.size()];
+            Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()];
+            BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()];
+            for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
+                orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey();
+                orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst();
+                orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond();
+            }
+            mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey);
+            mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue);
+            mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue);
         }
         return mgtTotalOrderTotalVo;
     }
@@ -2785,8 +2986,14 @@
      */
     @Override
     public MgtTotalActivityTotalVo getTotalActivityTotal(MgtBaseShopDto mgtBaseShopDto) {
-        //获取基础统计
+        //获取基础统计 总订单数 订单金额 参与人数
         MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityTotal(mgtBaseShopDto);
+        //获客人数
+        MgtTotalActivityTotalVo totalActivityMemberTotalVo = orderMapper.getTotalActivityMemberTotal(mgtBaseShopDto);
+        totalActivityTotalVo.setOrderPerson(totalActivityMemberTotalVo.getOrderPerson());
+        totalActivityTotalVo.setCyclePerson(totalActivityMemberTotalVo.getCyclePerson());
+        totalActivityTotalVo.setServicePerson(totalActivityMemberTotalVo.getServicePerson());
+        totalActivityTotalVo.setExperiencePerson(totalActivityMemberTotalVo.getExperiencePerson());
         //获取商品分类销售数据
         List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listTotalActivityTotalGoodsType(mgtBaseShopDto);
         if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
@@ -2799,40 +3006,95 @@
             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);
             totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
         }
+
         //获取订单分布
+        //日期全部时固定为5天
+        if(StringUtils.isBlank(mgtBaseShopDto.getStartDate())){
+            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) {
             String[] orderTotalKey = new String[MgtMapIntTotalVos.size()];
@@ -2847,6 +3109,71 @@
             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);
+        // 将查询结果转为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;
     }
 
@@ -2857,7 +3184,7 @@
      * @author jqs
      * @date 2023/6/20 9:56
      */
-    @Override
+    /*@Override
     public MgtTotalActivityTotalVo getTotalActivityAgeRank(MgtActivityAgeDto mgtActivityAgeDto) {
         List<Long> userIds = orderMapper.getUserIdAgeRank(mgtActivityAgeDto);
         mgtActivityAgeDto.setUserIds(userIds);
@@ -2879,7 +3206,7 @@
         totalActivityTotalVo.setActivityAgeKey(activityAgeKey);
         totalActivityTotalVo.setActivityAgeValue(activityAgeValue);
         return totalActivityTotalVo;
-    }
+    }*/
 
     /**
      * @param mgtBaseShopDto
@@ -2890,13 +3217,31 @@
      */
     @Override
     public MgtTotalDataTotalVo getTotalDataTotal(MgtBaseShopDto mgtBaseShopDto) {
-        //获取人数统计
-        MgtTotalDataTotalVo mgtTotalDataTotalVo = orderMapper.getTotalDataTotal(mgtBaseShopDto);
+
+        //营业额
         BigDecimal salesTotal = orderMapper.shopSalesTotal(mgtBaseShopDto);
-        mgtTotalDataTotalVo.setSalesTotal(salesTotal);
+        MgtTotalDataTotalVo mgtTotalDataTotalVo = orderMapper.getTotalDataTotal(mgtBaseShopDto);
+        // 获取当月时间
+        LocalDate currentDate = LocalDate.now();
+        LocalDate firstDayOfMonth = currentDate.withDayOfMonth(1);
+        LocalDate lastDayOfMonth = currentDate.withDayOfMonth(currentDate.lengthOfMonth());
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        String firstDayOfMonthStr = firstDayOfMonth.format(formatter);
+        String lastDayOfMonthStr = lastDayOfMonth.format(formatter);
+        mgtBaseShopDto.setStartDate(firstDayOfMonthStr);
+        mgtBaseShopDto.setEndDate(lastDayOfMonthStr);
+        //总进店人数 体验人数 体验开单人数 没体验开单人数
+        MgtTotalDataTotalVo mgtTotalDataMemberTotalVo = orderMapper.getTotalDataMemberTotal(mgtBaseShopDto);
+        mgtTotalDataTotalVo.setOnlyExperiencePerson(mgtTotalDataMemberTotalVo.getOnlyExperiencePerson());
+        mgtTotalDataTotalVo.setExperienceCyclePerson(mgtTotalDataMemberTotalVo.getExperienceCyclePerson());
+        mgtTotalDataTotalVo.setOnlyCyclePerson(mgtTotalDataMemberTotalVo.getOnlyCyclePerson());
+        mgtTotalDataTotalVo.setOrderPerson(mgtTotalDataMemberTotalVo.getOrderPerson());
+        //续单人数
         Integer reorderPerson = orderMapper.getReorderPerson(mgtBaseShopDto);
-        mgtTotalDataTotalVo.setReorderPerson(reorderPerson);
+        //回头客
         Integer returnedPerson = orderMapper.getReturnedPerson(mgtBaseShopDto);
+        mgtTotalDataTotalVo.setSalesTotal(salesTotal);
+        mgtTotalDataTotalVo.setReorderPerson(reorderPerson);
         mgtTotalDataTotalVo.setReturnedPerson(returnedPerson);
         return mgtTotalDataTotalVo;
     }
@@ -2937,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();
@@ -2948,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);
             }
         }
@@ -2981,23 +3346,13 @@
             }
         }
         List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+        if(mgtBasePlatformDto.getShopId()!=null){
+            shopIdList = new ArrayList<>();
+            shopIdList.add(mgtBasePlatformDto.getShopId());
+        }
         mgtBasePlatformDto.setShopIdList(shopIdList);
         //获取基础统计
         MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getPlTotalOrderTotalOrderFrom(mgtBasePlatformDto);
-        List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalOrderTotal(mgtBasePlatformDto);
-        if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) {
-            String[] orderTotalKey = new String[MgtMapIntTotalVos.size()];
-            Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()];
-            BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()];
-            for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
-                orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey();
-                orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst();
-                orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond();
-            }
-            mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey);
-            mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue);
-            mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue);
-        }
         //获取商品分类销售数据
         List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listPlTotalOrderTotalGoodsType(mgtBasePlatformDto);
         List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
@@ -3009,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);
@@ -3054,6 +3458,36 @@
             orderFromList = bigListRemoveNull(orderFromList);
             mgtTotalOrderTotalVo.setOrderFromRankList(orderFromList);
         }
+        //订单分布
+        //日期全部时固定为5天
+        Boolean fillZero = false;
+        if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){
+            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) {
+            String[] orderTotalKey = new String[MgtMapIntTotalVos.size()];
+            Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()];
+            BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()];
+            for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
+                orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey();
+                orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst();
+                orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond();
+            }
+            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;
     }
 
@@ -3066,8 +3500,11 @@
      */
     @Override
     public MgtPlTotalActivityTotalVo getPlTotalActivityTotal(MgtBasePlatformDto mgtBasePlatformDto) {
+        if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){
+            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());
@@ -3080,11 +3517,21 @@
             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);
+        //获客人数
+        MgtPlTotalActivityTotalVo totalActivityMemberTotalVo = orderMapper.getPlTotalActivityMemberTotal(mgtBasePlatformDto);
+        totalActivityTotalVo.setOrderPerson(totalActivityMemberTotalVo.getOrderPerson());
+        totalActivityTotalVo.setCyclePerson(totalActivityMemberTotalVo.getCyclePerson());
+        totalActivityTotalVo.setServicePerson(totalActivityMemberTotalVo.getServicePerson());
+        totalActivityTotalVo.setExperiencePerson(totalActivityMemberTotalVo.getExperiencePerson());
         //获取商品分类销售数据
         List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listPlTotalActivityTotalGoodsType(mgtBasePlatformDto);
         List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
@@ -3096,36 +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.setEndDate(DateUtils.getDate());
+            mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
         }
         //获取订单分布
         List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalActivityTotal(mgtBasePlatformDto);
@@ -3154,18 +3657,28 @@
         mgtBaseBathDto.setIds(joinedString);
         List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData();
         // 将MgtSimpleShopVoList转换为Map<Long, MgtSimpleShopVo>,以便后续根据shopId获取对应的MgtSimpleShopVo
-        Map<Long, MgtSimpleShopVo> map = simpleShopVoList.stream()
+        Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream()
                 .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
         //商户活动次数排名
         List<MgtMapBigTotalVo> shopActivityRank = orderMapper.listPlTotalShopActivityRank(mgtBasePlatformDto);
         if (shopActivityRank != null && shopActivityRank.size() > 0) {
             shopActivityRank = bigListRemoveNull(shopActivityRank);
+            for(MgtMapBigTotalVo mgtMapBigTotalVo : shopActivityRank){
+                if(shopMap.get(mgtMapBigTotalVo.getMapKey())!=null){
+                    mgtMapBigTotalVo.setMapKey(shopMap.get(mgtMapBigTotalVo.getMapKey()).getShopName());
+                }
+            }
             totalActivityTotalVo.setShopSalesRankList(shopActivityRank);
         }
         //商户活动销售额排名
         List<MgtMapBigTotalVo> shopActivitySalesRank = orderMapper.listPlTotalShopActivitySalesRank(mgtBasePlatformDto);
         if (shopActivitySalesRank != null && shopActivitySalesRank.size() > 0) {
             shopActivitySalesRank = bigListRemoveNull(shopActivitySalesRank);
+            for(MgtMapBigTotalVo mgtMapBigTotalVo : shopActivitySalesRank){
+                if(shopMap.get(mgtMapBigTotalVo.getMapKey())!=null){
+                    mgtMapBigTotalVo.setMapKey(shopMap.get(mgtMapBigTotalVo.getMapKey()).getShopName());
+                }
+            }
             totalActivityTotalVo.setShopSalesRankList(shopActivitySalesRank);
         }
         //活动销售额排名
@@ -3174,8 +3687,182 @@
             activitySalesRank = bigListRemoveNull(activitySalesRank);
             totalActivityTotalVo.setActivitySalesRankList(activitySalesRank);
         }
+        MerTotalDto merTotalDto = new MerTotalDto();
+        merTotalDto.setAgeType(mgtBasePlatformDto.getAgeType());
+        if(mgtBasePlatformDto.getAgeType()!=null){
+            List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData();
+            mgtBasePlatformDto.setUserIdList(userIdList);
+        }
+        //参与人数
+        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);
+        //获客人数
+        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));
+        }
+        // 创建日期和成员总数的数组
+        String[] getMemberTotalKey = new String[size];
+        Integer[] getMemberTotalValue = new Integer[size];
+        // 遍历日期列表,设置日期和成员总数的数组
+        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;
     }
+
+
+    @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
@@ -3184,7 +3871,7 @@
      * @author jqs
      * @date 2023/6/20 9:56
      */
-    @Override
+    /*@Override
     public MgtPlTotalActivityTotalVo getPlTotalActivityAgeRank(MgtPlActivityAgeDto mgtPlActivityAgeDto) {
         List<Long> userIds = orderMapper.getPlUserIdAgeRank(mgtPlActivityAgeDto);
         MgtActivityAgeDto mgtActivityAgeDto = new MgtActivityAgeDto();
@@ -3208,7 +3895,7 @@
         plTotalActivityTotalVo.setActivityAgeKey(activityAgeKey);
         plTotalActivityTotalVo.setActivityAgeValue(activityAgeValue);
         return plTotalActivityTotalVo;
-    }
+    }*/
 
     /**
      * @param verifyCode
@@ -3239,20 +3926,21 @@
         Long userId = verifyCouponGetVo.getUserId();
         Member member = remoteMemberService.getMember(userId).getData();
         //如果是商户优惠券,验证商户一致
-        if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) {
+        if (memberCoupon.getCouponFrom() == 2) {
             if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
-                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+                throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
             }
-            if(memberCoupon.getShopId().equals(shopId)){
+            if(!memberCoupon.getShopId().equals(shopId)){
                 throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
             }
         }
         //如果是平台优惠券,当用户绑定商户时验证商户一致
         if (memberCoupon.getCouponFrom() == 1 && member.getBindingFlag() == 1) {
-            if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
+            /*if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
                 throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
-            }
-            if(memberCoupon.getShopId().equals(shopId)){
+            }*/
+            //判断绑定商户是否和核销商户一致
+            if(!member.getRelationShopId().equals(shopId)){
                 throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
             }
         }
@@ -3408,7 +4096,9 @@
             merTotalDto.setShopIdList(shopIdList);
             merTotalDto.setShopId(null);
         }
+        //线上线下活动订单
         MerOrderTotalVo orderTotalVo = orderMapper.getMerOrderTotalOrderFrom(merTotalDto);
+        //分类型订单
         MerOrderTotalVo goodsTypeVo = orderMapper.getMerTotalOrderTotalGoodsType(merTotalDto);
         orderTotalVo.setCycleTotal(goodsTypeVo.getCycleTotal());
         orderTotalVo.setCycleMoney(goodsTypeVo.getCycleMoney());
@@ -3429,10 +4119,14 @@
      */
     @Override
     public MerOrderDistributionTotalVo MerOrderDistributionTotalVo(MerTotalDto merTotalDto) {
+        //获取查询的商户列表
         if (merTotalDto.getShopAllFlag() != null && merTotalDto.getShopAllFlag() == 1) {
             List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData();
             merTotalDto.setShopIdList(shopIdList);
             merTotalDto.setShopId(null);
+        }
+        if(merTotalDto.getGoodsType()!=null&&merTotalDto.getGoodsType()==0){
+            merTotalDto.setGoodsType(null);
         }
         MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo();
         // 获取订单年龄用户列表
@@ -3481,10 +4175,11 @@
                 }
             }*/
         List<MgtMapTotalPlusVo> mgtMapTotalPlusVoList = orderMapper.listMerOrderDistributionTotal(merTotalDto);
+        String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()];
+        Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()];
+        BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()];
+        //数据为空返回空数组
         if (mgtMapTotalPlusVoList != null && !mgtMapTotalPlusVoList.isEmpty()) {
-            String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()];
-            Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()];
-            BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()];
             MgtMapTotalPlusVo mgtMapTotalPlusVo;
             for (int i = 0; i < mgtMapTotalPlusVoList.size(); i++) {
                 mgtMapTotalPlusVo = mgtMapTotalPlusVoList.get(i);
@@ -3492,6 +4187,9 @@
                 orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst();
                 orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond();
             }
+            //补充日期到近5日
+            orderDistributionTotalVo = fillOrderTotalKeyAndValuesToRecentFiveDays(orderTotalKey,orderTotalValue,orderMoneyValue);
+        }else{
             orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
             orderDistributionTotalVo.setOrderTotalValue(orderTotalValue);
             orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
@@ -3520,28 +4218,93 @@
         List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
         List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
         if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
-            MgtMapIntTotalVo MgtMapIntTotalVo;
+            MgtMapIntTotalVo mgtMapIntTotalVo;
             MgtMapBigTotalVo mgtMapBigTotalVo;
+            Integer intTotal = 0;
+            BigDecimal bigTotal = BigDecimal.ZERO;
+            for(MgtMapTotalPlusVo mgtMapTotalPlusVo : MgtMapIntTotalVoGoodsType){
+                intTotal = intTotal + mgtMapTotalPlusVo.getMapValueFirst();
+                bigTotal = bigTotal.add(mgtMapTotalPlusVo.getMapValueSecond());
+            }
+            BigDecimal hundredBig = new BigDecimal("100");
+            BigDecimal intTotalBig = hundredBig;
+            if(intTotal!=0){
+                intTotalBig = new BigDecimal(intTotal.toString());
+            }
+            if(bigTotal.compareTo(BigDecimal.ZERO)<1){
+                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();
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
                 mgtMapBigTotalVo = new MgtMapBigTotalVo();
-                MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                mgtMapIntTotalVo.setMapPercent(BigDecimal.valueOf(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()).divide(intTotalBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig));
                 mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
+                mgtMapBigTotalVo.setMapPercent(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond().divide(bigTotal,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig));
                 if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
-                    MgtMapIntTotalVo.setMapKey("周期");
+                    mgtMapIntTotalVo.setMapKey("周期");
                     mgtMapBigTotalVo.setMapKey("周期");
+                    noCycle= false;
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
-                    MgtMapIntTotalVo.setMapKey("服务");
+                    mgtMapIntTotalVo.setMapKey("服务");
                     mgtMapBigTotalVo.setMapKey("服务");
+                    noService= false;
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
-                    MgtMapIntTotalVo.setMapKey("体验");
+                    mgtMapIntTotalVo.setMapKey("体验");
                     mgtMapBigTotalVo.setMapKey("体验");
+                    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);
             }
             orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
@@ -3569,6 +4332,7 @@
         List<MgtMapBigTotalVo> goodsRankList = orderMapper.listMerOrderTotalGoodsRank(merTotalDto);
         if (goodsRankList != null && goodsRankList.size() > 0) {
             goodsRankList = bigListRemoveNull(goodsRankList);
+            Collections.reverse(goodsRankList);
             orderGoodsRankVo.setGoodsRankList(goodsRankList);
         }
         return orderGoodsRankVo;
@@ -3594,6 +4358,7 @@
         List<MgtMapBigTotalVo> orderFromList = orderMapper.listMerOrderTotalOrderFrom(merTotalDto);
         if (orderFromList != null && orderFromList.size() > 0) {
             orderFromList = bigListRemoveNull(orderFromList);
+            Collections.reverse(orderFromList);
             merOrderFromRankVo.setOrderFromRankList(orderFromList);
         }
         return merOrderFromRankVo;
@@ -3759,9 +4524,12 @@
     @Override
     @Transactional
     public void payBack(PartnerTransactionsResult transaction) {
-        // 更新订单状态
-        String orderId = transaction.getOutTradeNo();
-        Order order = this.getById(orderId);
+        log.info("订单支付回调---"+transaction.toString());
+        // Order order = this.getById(orderId);
+        // 更新订单状态 outTradeNo
+        String outTradeNo = transaction.getOutTradeNo();
+        Order order = this.getByOutTradeNo(outTradeNo);
+        String orderId = order.getOrderId();
         order.setOrderStatus(2);
         order.setPayTime(new Date());
         this.saveOrUpdate(order);
@@ -3809,20 +4577,22 @@
             Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(order.getUserId(), orderGoods.getGoodsId());
             if (bugGoodsNum == null || bugGoodsNum < 1) {
                 goodsTotalChangeDto.setPersonNum(1);
+            }else{
+                goodsTotalChangeDto.setPersonNum(0);
             }
             goodsTotalChangeDtoList.add(goodsTotalChangeDto);
         }
         //更新商品统计
         remoteGoodsService.changeGoodsTotal(goodsTotalChangeDtoList);
         // 更新商户统计信息
-        ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
+        /*ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
         shopTotalChangeDto.setShopId(order.getShopId());
         shopTotalChangeDto.setOrderType(1);
         shopTotalChangeDto.setCycleMoney(cycleMoney);
         shopTotalChangeDto.setServiceMoney(serviceMoney);
         shopTotalChangeDto.setExperienceMoney(experienceMoney);
         shopTotalChangeDto.setGoodsMoney(goodsMoney);
-        remoteShopService.changeShopTotal(shopTotalChangeDto);
+        remoteShopService.changeShopTotal(shopTotalChangeDto);*/
         // 初始化会员统计信息
         MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
         memberTotalChangeDto.setUserId(order.getUserId());
@@ -3882,8 +4652,9 @@
             request.setTransactionId(transaction.getTransactionId());
             profitsSharingService.applyProfitSharing(request);*/
         }
-        //生成支付记录
-        OrderPayment orderPayment = new OrderPayment();
+        //修改支付记录生成支付记录
+        orderPaymentService.updatePaySuccess(transaction.getOutTradeNo(), transaction.getTransactionId());
+
         PayRecord payRecord = new PayRecord();
         payRecord.setDelFlag(0);
         payRecord.setOrderId(orderId);
@@ -3891,6 +4662,22 @@
         payRecord.setPayTime(order.getPayTime());
         payRecord.setPayType(1);
         payRecordService.save(payRecord);
+    }
+
+    @Override
+    public Order getByOrderNo(String orderNo) {
+        LambdaQueryWrapper<Order> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(Order::getOrderNo, orderNo)
+                .last(" limit 1 ");
+        return this.getOne(queryWrapper);
+    }
+
+    @Override
+    public Order getByOutTradeNo(String outTradeNo) {
+        LambdaQueryWrapper<Order> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(Order::getOutTradeNo, outTradeNo)
+                .last(" limit 1 ");
+        return this.getOne(queryWrapper);
     }
 
     /**
@@ -3929,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(",");
@@ -3964,6 +4754,7 @@
                 } else {
                     memberCouponSJ.add(orderGoods.getCouponId());
                 }
+                //会员统计更新
                 switch (orderGoods.getGoodsType()) {
                     case 1:
                         cycleMoney = cycleMoney.add(orderGoods.getGoodsReceivableMoney());
@@ -3984,21 +4775,35 @@
                     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());
             }
         }
         // 更新商户统计信息
-        ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
+        /*ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
         shopTotalChangeDto.setOrderType(2);
         shopTotalChangeDto.setShopId(order.getShopId());
         shopTotalChangeDto.setCycleMoney(cycleMoney);
         shopTotalChangeDto.setServiceMoney(serviceMoney);
         shopTotalChangeDto.setExperienceMoney(experienceMoney);
         shopTotalChangeDto.setGoodsMoney(goodsMoney);
-        remoteShopService.changeShopTotal(shopTotalChangeDto);
+        remoteShopService.changeShopTotal(shopTotalChangeDto);*/
         // 初始化会员统计信息
         MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
         memberTotalChangeDto.setUserId(order.getUserId());
@@ -4046,11 +4851,13 @@
             remoteActivityService.changeActivityTotal(activityTotalChangeDto);
         }
 
+        log.info("用户取消订单退款, 检查退款");
         // 用户取消订单退款
         BigDecimal onlinePayMoney = order.getOnlinePayMoney();
         if(BigDecimal.ZERO.compareTo(onlinePayMoney) < 0){
+            log.info("订单支付金额大于0,可发起退款");
             // 订单支付金额大于0,可发起退款
-            //orderWxApplyRefund(orderId, refundId, onlinePayMoney, orderRefund);
+            orderWxApplyRefund(orderId, refundId, onlinePayMoney, orderRefund);
         }
 
         orderRefund.setRefundStatus(1);
@@ -4060,13 +4867,16 @@
     /**
      * 申请退款API
      */
-    /*private void orderWxApplyRefund(String orderId, String outRefundNo, BigDecimal payMoney, OrderRefund orderRefund){
+    private void orderWxApplyRefund(String orderId, String outRefundNo, BigDecimal payMoney, OrderRefund orderRefund){
         try {
             // 创建支付订单
             OrderPayment orderPayment = orderPaymentService.getByOrderId(orderId);
             if (null == orderPayment) {
                 return;
             }
+
+            log.info("调用微信退款---发起退款");
+
             String subMchId = orderPayment.getSubMchId();
             WxPayConfig config = wxService.getConfig();
 
@@ -4077,7 +4887,8 @@
             request.setOutRefundNo(outRefundNo);
             request.setReason("用户取消订单");
             // 订单金额
-            int total = payMoney.multiply(new BigDecimal(100)).intValue();
+            int total = orderPayment.getPayMoney().multiply(new BigDecimal(100)).intValue();
+
             RefundsRequest.Amount amount = RefundsRequest.Amount.builder().refund(total).total(total).currency("CNY").build();
             request.setAmount(amount);
             request.setNotifyUrl(config.getNotifyUrl());
@@ -4093,13 +4904,15 @@
             // 返回参数
             String refundResponseJson = gson.toJson(result);
 
+            log.info("调用微信退款返回参数---{}", refundResponseJson);
+
             // 保存支付订单统一下单日志
             paymentMessageService.savePaymentMessage("3", orderId, refundRequestJson, refundResponseJson);
 
         } catch (WxPayException e) {
             throw new ServiceException(e.getMessage());
         }
-    }*/
+    }
 
     /**
      * @param staffTotalDto
@@ -4110,7 +4923,14 @@
      */
     @Override
     public StaffActivityOrderTotalVo getStaffActivityOrderTotal(StaffTotalDto staffTotalDto) {
-        StaffActivityOrderTotalVo staffActivityOrderTotalVo = orderMapper.getStaffActivityOrderTotal(staffTotalDto);
+        StaffActivityOrderTotalVo staffActivityOrderTotalVo = new StaffActivityOrderTotalVo();
+        if(staffTotalDto.getActivityFrom()==1){
+            staffActivityOrderTotalVo = orderMapper.getStaffActivityOrderTotal(staffTotalDto);
+            StaffActivityOrderTotalVo staffActivityOrderGoodsTotalVo = orderMapper.getStaffActivityOrderGoodsTotal(staffTotalDto);
+            staffActivityOrderTotalVo.setCycleTotal(staffActivityOrderGoodsTotalVo.getCycleTotal());
+            staffActivityOrderTotalVo.setServiceTotal(staffActivityOrderGoodsTotalVo.getServiceTotal());
+            staffActivityOrderTotalVo.setExperienceTotal(staffActivityOrderGoodsTotalVo.getExperienceTotal());
+        }
         return staffActivityOrderTotalVo;
     }
 
@@ -4123,7 +4943,10 @@
      */
     @Override
     public StaffActivityTotalVo getStaffActivityTotal(StaffTotalDto staffTotalDto) {
-        StaffActivityTotalVo staffActivityTotalVo = orderMapper.getStaffActivityTotal(staffTotalDto);
+        StaffActivityTotalVo staffActivityTotalVo = new StaffActivityTotalVo();
+        if(staffTotalDto.getActivityFrom()==1){
+            staffActivityTotalVo = orderMapper.getStaffActivityTotal(staffTotalDto);
+        }
         return staffActivityTotalVo;
     }
 
@@ -4136,13 +4959,16 @@
      */
     @Override
     public MerOrderDistributionTotalVo getStaffOrderDistributionTotal(StaffTotalDto staffTotalDto) {
+        if(staffTotalDto.getGoodsType()!=null&&staffTotalDto.getGoodsType()==0){
+            staffTotalDto.setGoodsType(null);
+        }
         MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo();
         // 获取订单年龄用户列表
-        MerTotalDto merTotalDto = new MerTotalDto();
-        merTotalDto.setShopId(staffTotalDto.getShopId());
-        List<MerOrderAgeUserVo> orderAgeUserVoList = remoteMemberService.listOrderAgeUser(merTotalDto).getData();
+        //MerTotalDto merTotalDto = new MerTotalDto();
+        //merTotalDto.setShopId(staffTotalDto.getShopId());
+        //List<MerOrderAgeUserVo> orderAgeUserVoList = remoteMemberService.listOrderAgeUser(merTotalDto).getData();
         // 如果订单年龄用户列表不为空
-        if (orderAgeUserVoList != null && !orderAgeUserVoList.isEmpty()) {
+        /*if (orderAgeUserVoList != null && !orderAgeUserVoList.isEmpty()) {
             // 定义变量
             Integer ageType;
             List<Long> userIdList;
@@ -4188,9 +5014,90 @@
             orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
             orderDistributionTotalVo.setOrderTotalValue(orderTotalValue);
             orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
+        }*/
+        if(staffTotalDto.getActivityFrom()==1){
+            List<MgtMapTotalPlusVo> mgtMapTotalPlusVoList = orderMapper.listStaffActivityOrderDistributionTotal(staffTotalDto);
+            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++) {
+                    mgtMapTotalPlusVo = mgtMapTotalPlusVoList.get(i);
+                    orderTotalKey[i] = mgtMapTotalPlusVo.getMapKey();
+                    orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst();
+                    orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond();
+                }
+                orderDistributionTotalVo = fillOrderTotalKeyAndValuesToRecentFiveDays(orderTotalKey,orderTotalValue,orderMoneyValue);
+            }else{
+                orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
+                orderDistributionTotalVo.setOrderTotalValue(orderTotalValue);
+                orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
+            }
         }
         // 返回订单分布总数对象
         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();
+        // 获取当前日期
+        LocalDate currentDate = LocalDate.now();
+
+        // 创建最近五天日期列表
+        List<String> recentFiveDays = new ArrayList<>();
+        for (int i = 0; i < 5; i++) {
+            LocalDate date = currentDate.minusDays(i);
+            recentFiveDays.add(date.toString());
+        }
+
+        // 创建新的数组
+        String[] newOrderTotalKey = new String[5];
+        Integer[] newOrderTotalValue = new Integer[5];
+        BigDecimal[] newOrderMoneyValue = new BigDecimal[5];
+
+        // 遍历最近五天日期列表,并补充数据
+        for (int i = 0; i < 5; i++) {
+            String day = recentFiveDays.get(i);
+            int index = getIndexInOrderTotalKey(day,orderTotalKey);
+            if (index != -1) {
+                newOrderTotalKey[i] = orderTotalKey[index];
+                newOrderTotalValue[i] = orderTotalValue[index];
+                newOrderMoneyValue[i] = orderMoneyValue[index];
+            } else {
+                newOrderTotalKey[i] = day;
+                newOrderTotalValue[i] = 0;
+                newOrderMoneyValue[i] = BigDecimal.ZERO;
+            }
+        }
+
+        // 更新属性
+        orderTotalKey = newOrderTotalKey;
+        orderTotalValue = newOrderTotalValue;
+        orderMoneyValue = newOrderMoneyValue;
+        orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
+        orderDistributionTotalVo.setOrderTotalValue(orderTotalValue);
+        orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
+        return orderDistributionTotalVo;
+    }
+
+
+    private int getIndexInOrderTotalKey(String day,String[] orderTotalKey) {
+        for (int i = 0; i < orderTotalKey.length; i++) {
+            if (orderTotalKey[i].equals(day)) {
+                return i;
+            }
+        }
+        return -1;
     }
 
 
@@ -4204,37 +5111,104 @@
     @Override
     public MerOrderTypeTotalVo getStaffOrderTypeTotal(StaffTotalDto staffTotalDto) {
         MerOrderTypeTotalVo orderTypeTotalVo = new MerOrderTypeTotalVo();
-        //获取商品分类销售数据
-        List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listStaffOrderTotalGoodsType(staffTotalDto);
-        List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
-        List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
-        if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
-            MgtMapIntTotalVo MgtMapIntTotalVo;
-            MgtMapBigTotalVo mgtMapBigTotalVo;
-            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
-            for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
-                MgtMapIntTotalVo = new MgtMapIntTotalVo();
-                mgtMapBigTotalVo = new MgtMapBigTotalVo();
-                MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
-                mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
-                if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
-                    MgtMapIntTotalVo.setMapKey("周期");
-                    mgtMapBigTotalVo.setMapKey("周期");
-                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
-                    MgtMapIntTotalVo.setMapKey("服务");
-                    mgtMapBigTotalVo.setMapKey("服务");
-                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
-                    MgtMapIntTotalVo.setMapKey("体验");
-                    mgtMapBigTotalVo.setMapKey("体验");
-                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
-                    MgtMapIntTotalVo.setMapKey("单品");
-                    mgtMapBigTotalVo.setMapKey("单品");
+        if(staffTotalDto.getActivityFrom()==1){
+            //获取商品分类销售数据
+            List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listStaffOrderTotalGoodsType(staffTotalDto);
+            List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
+            List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
+            if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
+                MgtMapIntTotalVo mgtMapIntTotalVo;
+                MgtMapBigTotalVo mgtMapBigTotalVo;
+                Integer intTotal = 0;
+                BigDecimal bigTotal = BigDecimal.ZERO;
+                for(MgtMapTotalPlusVo mgtMapTotalPlusVo : MgtMapIntTotalVoGoodsType){
+                    intTotal = intTotal + mgtMapTotalPlusVo.getMapValueFirst();
+                    bigTotal = bigTotal.add(mgtMapTotalPlusVo.getMapValueSecond());
                 }
-                goodsTypeTotalList.add(MgtMapIntTotalVo);
-                goodsTypeMoneyList.add(mgtMapBigTotalVo);
+                BigDecimal hundredBig = new BigDecimal("100");
+                BigDecimal intTotalBig = hundredBig;
+                if(intTotal!=0){
+                    intTotalBig = new BigDecimal(intTotal.toString());
+                }
+                if(bigTotal.compareTo(BigDecimal.ZERO)<1){
+                    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();
+                    mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                    mgtMapIntTotalVo.setMapPercent(BigDecimal.valueOf(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()).divide(intTotalBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig));
+                    mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
+                    mgtMapBigTotalVo.setMapPercent(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond().divide(bigTotal,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig));
+                    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);
+                orderTypeTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
             }
-            orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
-            orderTypeTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
         }
         return orderTypeTotalVo;
     }
@@ -4250,32 +5224,34 @@
     public StaffActivityDateMemberTotalVo getStaffActivityGetMemberTotal(StaffTotalDto staffTotalDto) {
         // 创建返回对象
         StaffActivityDateMemberTotalVo staffActivityDateMemberTotalVo = new StaffActivityDateMemberTotalVo();
-        // 查询数据库获取数据
-        List<MgtMapIntTotalVo> mgtMapIntTotalVoList = orderMapper.getStaffActivityGetMemberTotal(staffTotalDto);
-        // 将查询结果转为Map
-        Map<String, Integer> map = new HashMap<>();
-        if (mgtMapIntTotalVoList != null && !mgtMapIntTotalVoList.isEmpty()) {
-            map = mgtMapIntTotalVoList.stream()
-                    .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue));
+        if(staffTotalDto.getActivityFrom()==1){
+            // 查询数据库获取数据
+            List<MgtMapIntTotalVo> mgtMapIntTotalVoList = orderMapper.getStaffActivityGetMemberTotal(staffTotalDto);
+            // 将查询结果转为Map
+            Map<String, Integer> map = new HashMap<>();
+            if (mgtMapIntTotalVoList != null && !mgtMapIntTotalVoList.isEmpty()) {
+                map = mgtMapIntTotalVoList.stream()
+                        .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue));
+            }
+            // 获取日期范围
+            List<String> dateList = getDateRange(staffTotalDto.getStartDate(), staffTotalDto.getEndDate());
+            int size = dateList.size();
+            // 创建日期和成员总数的数组
+            String[] dateMemberTotalKey = new String[size];
+            Integer[] dateMemberTotalValue = new Integer[size];
+            // 遍历日期列表,设置日期和成员总数的数组
+            String str;
+            Integer value;
+            for (int i = 0; i < size; i++) {
+                str = dateList.get(i);
+                dateMemberTotalKey[i] = str;
+                value = map.get(str);
+                dateMemberTotalValue[i] = (value != null) ? value : 0;
+            }
+            // 设置返回对象的日期和成员总数数组
+            staffActivityDateMemberTotalVo.setDateMemberTotalKey(dateMemberTotalKey);
+            staffActivityDateMemberTotalVo.setDateMemberTotalValue(dateMemberTotalValue);
         }
-        // 获取日期范围
-        List<String> dateList = getDateRange(staffTotalDto.getStartDate(), staffTotalDto.getEndDate());
-        int size = dateList.size();
-        // 创建日期和成员总数的数组
-        String[] dateMemberTotalKey = new String[size];
-        Integer[] dateMemberTotalValue = new Integer[size];
-        // 遍历日期列表,设置日期和成员总数的数组
-        String str;
-        Integer value;
-        for (int i = 0; i < size; i++) {
-            str = dateList.get(i);
-            dateMemberTotalKey[i] = str;
-            value = map.get(str);
-            dateMemberTotalValue[i] = (value != null) ? value : 0;
-        }
-        // 设置返回对象的日期和成员总数数组
-        staffActivityDateMemberTotalVo.setDateMemberTotalKey(dateMemberTotalKey);
-        staffActivityDateMemberTotalVo.setDateMemberTotalValue(dateMemberTotalValue);
         // 返回结果对象
         return staffActivityDateMemberTotalVo;
     }
@@ -4291,32 +5267,40 @@
     public StaffActivityDateMemberTotalVo getStaffActivityMemberTotal(StaffTotalDto staffTotalDto) {
         // 创建返回对象
         StaffActivityDateMemberTotalVo staffActivityDateMemberTotalVo = new StaffActivityDateMemberTotalVo();
-        // 查询数据库获取数据
-        List<MgtMapIntTotalVo> mgtMapIntTotalVoList = orderMapper.getStaffActivityMemberTotal(staffTotalDto);
-        // 将查询结果转为Map
-        Map<String, Integer> map = new HashMap<>();
-        if (mgtMapIntTotalVoList != null && !mgtMapIntTotalVoList.isEmpty()) {
-            map = mgtMapIntTotalVoList.stream()
-                    .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue));
+        if(staffTotalDto.getActivityFrom()==1){
+            MerTotalDto merTotalDto = new MerTotalDto();
+            merTotalDto.setAgeType(staffTotalDto.getAgeType());
+            if(staffTotalDto.getAgeType()!=null){
+                List<Long> userIdList = remoteMemberService.listUserIdByAgeType(staffTotalDto.getAgeType()).getData();
+                staffTotalDto.setUserIdList(userIdList);
+            }
+            // 查询数据库获取数据
+            List<MgtMapIntTotalVo> mgtMapIntTotalVoList = orderMapper.getStaffActivityMemberTotal(staffTotalDto);
+            // 将查询结果转为Map
+            Map<String, Integer> map = new HashMap<>();
+            if (mgtMapIntTotalVoList != null && !mgtMapIntTotalVoList.isEmpty()) {
+                map = mgtMapIntTotalVoList.stream()
+                        .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue));
+            }
+            // 获取日期范围
+            List<String> dateList = getDateRange(staffTotalDto.getStartDate(), staffTotalDto.getEndDate());
+            int size = dateList.size();
+            // 创建日期和成员总数的数组
+            String[] dateMemberTotalKey = new String[size];
+            Integer[] dateMemberTotalValue = new Integer[size];
+            // 遍历日期列表,设置日期和成员总数的数组
+            String str;
+            Integer value;
+            for (int i = 0; i < size; i++) {
+                str = dateList.get(i);
+                dateMemberTotalKey[i] = str;
+                value = map.get(str);
+                dateMemberTotalValue[i] = (value != null) ? value : 0;
+            }
+            // 设置返回对象的日期和成员总数数组
+            staffActivityDateMemberTotalVo.setDateMemberTotalKey(dateMemberTotalKey);
+            staffActivityDateMemberTotalVo.setDateMemberTotalValue(dateMemberTotalValue);
         }
-        // 获取日期范围
-        List<String> dateList = getDateRange(staffTotalDto.getStartDate(), staffTotalDto.getEndDate());
-        int size = dateList.size();
-        // 创建日期和成员总数的数组
-        String[] dateMemberTotalKey = new String[size];
-        Integer[] dateMemberTotalValue = new Integer[size];
-        // 遍历日期列表,设置日期和成员总数的数组
-        String str;
-        Integer value;
-        for (int i = 0; i < size; i++) {
-            str = dateList.get(i);
-            dateMemberTotalKey[i] = str;
-            value = map.get(str);
-            dateMemberTotalValue[i] = (value != null) ? value : 0;
-        }
-        // 设置返回对象的日期和成员总数数组
-        staffActivityDateMemberTotalVo.setDateMemberTotalKey(dateMemberTotalKey);
-        staffActivityDateMemberTotalVo.setDateMemberTotalValue(dateMemberTotalValue);
         // 返回结果对象
         return staffActivityDateMemberTotalVo;
     }
@@ -4491,21 +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);
-                merOrderPageVo.setUnPaidMoney(merOrderPageVo.getPayMoney().subtract(merOrderPageVo.getReceiveMoney()));
-                if (merOrderPageVo.getUnPaidMoney() == null) {
-                    merOrderPageVo.setUnPaidMoney(zeroBig);
-                }
                 if(merOrderPageVo.getUnPaidMoney().compareTo(zeroBig)<0){
                     merOrderPageVo.setUnPaidMoney(zeroBig);
                 }
@@ -4527,4 +5496,54 @@
         }
         return merOrderPageVoList;
     }
+
+    /**
+     * @description  获取销售排行
+     * @author  jqs
+     * @date    2023/8/24 18:00
+     * @param shopIdList
+     * @return  List<MgtMapIntTotalVo>
+     */
+    @Override
+    public List<MgtMapBigTotalVo> shopSalesRank(List<Long> shopIdList){
+        return orderMapper.shopSalesRank(shopIdList);
+    }
+
+    /**
+     * @description  获取商户服务统计
+     * @author  jqs
+     * @date    2023/8/24 18:28
+     * @param shopId
+     * @return  MerHomeShopTotalVo
+     */
+    @Override
+    public MerHomeShopTotalVo getShopServiceTotal(Long shopId){
+        MerHomeShopTotalVo serviceTotalVo = orderMapper.getMerHomeShopServiceTotalVo(shopId);
+        return serviceTotalVo;
+    }
+
+    /**
+     * @description  获取区域统计
+     * @author  jqs
+     * @date    2023/8/25 11:49
+     * @param shopIdList
+     * @return  AgencyTotalVo
+     */
+    @Override
+    public AgencyTotalVo getAgencyTotalVo(List<Long> shopIdList){
+        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