From db6083bc5e2446a62c208e1d9c93671c111da8ba Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期日, 27 八月 2023 15:22:26 +0800
Subject: [PATCH] bug

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |  208 ++++++++++++++++++++++++++++++++++------------------
 1 files changed, 136 insertions(+), 72 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 a6e83da..7d059dd 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
@@ -751,13 +751,16 @@
         }
         appPlaceOrderVo.setOrderId(orderId);
         appPlaceOrderVo.setOrderNo(orderNo);
-
+        //商品数据
         String goodsName = "";
         if (null != goodsNameList) {
             goodsName = String.join(",", goodsNameList);
         }
-
-        if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.TEN)<0){
+        //减去优惠券
+        if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
+            remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
+        }
+        if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){
             String outTradeNo = IdUtils.simpleUUID();
 
             // 保存订单 交易流水
@@ -768,25 +771,23 @@
             createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, outTradeNo,
                     orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(),
                     appPlaceOrderDto.getSpbillCreateIp(), goodsNameList,1);
+            //生成自动取消订单延时任务
+            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));
+        }else{
+            order.setOrderStatus(2);
+            this.saveOrUpdate(order);
         }
-
-        //减去优惠券
-        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);
-        }
-        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;
     }
@@ -1156,18 +1157,32 @@
         goodsNameList.add(orderGoods.getGoodsName());
 
 
-        if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.TEN)<0){
+        if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){
 
             String outTradeNo = IdUtils.simpleUUID();
-
             // 保存订单 交易流水
             order.setOutTradeNo(outTradeNo);
             this.saveOrUpdate(order);
-
             // 小程序微信下单支付
             createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), orderNo,
                     orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(),
                     appPlaceActivityDto.getSpbillCreateIp(), goodsNameList,2);
+            //生成自动取消订单延时任务
+            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));
+        }else{
+            order.setOrderStatus(2);
+            this.saveOrUpdate(order);
         }
         //生成活动参加记录
         ActivityRecord activityRecord = new ActivityRecord();
@@ -1182,19 +1197,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;
     }
 
@@ -2745,22 +2747,10 @@
      */
     @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<>();
@@ -2811,6 +2801,26 @@
             orderFromList = bigListRemoveNull(orderFromList);
             mgtTotalOrderTotalVo.setOrderFromRankList(orderFromList);
         }
+        //订单分布
+        //日期全部时固定为5天
+        if(StringUtils.isBlank(mgtBaseShopDto.getStartDate())){
+            mgtBaseShopDto.setStartDate(DateUtils.getDate());
+            mgtBaseShopDto.setEndDate(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;
     }
 
@@ -2855,7 +2865,7 @@
      */
     @Override
     public MgtTotalActivityTotalVo getTotalActivityTotal(MgtBaseShopDto mgtBaseShopDto) {
-        //获取基础统计
+        //获取基础统计 总订单数 订单金额 参与人数
         MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityTotal(mgtBaseShopDto);
         //获客人数
         MgtTotalActivityTotalVo totalActivityMemberTotalVo = orderMapper.getTotalActivityMemberTotal(mgtBaseShopDto);
@@ -2908,7 +2918,13 @@
             totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
             totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
         }
+
         //获取订单分布
+        //日期全部时固定为5天
+        if(StringUtils.isBlank(mgtBaseShopDto.getStartDate())){
+            mgtBaseShopDto.setStartDate(DateUtils.getDate());
+            mgtBaseShopDto.setEndDate(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()];
@@ -2924,7 +2940,30 @@
             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;
     }
 
@@ -2935,7 +2974,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);
@@ -2957,7 +2996,7 @@
         totalActivityTotalVo.setActivityAgeKey(activityAgeKey);
         totalActivityTotalVo.setActivityAgeValue(activityAgeValue);
         return totalActivityTotalVo;
-    }
+    }*/
 
     /**
      * @param mgtBaseShopDto
@@ -3080,20 +3119,6 @@
         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<>();
@@ -3150,6 +3175,27 @@
             orderFromList = bigListRemoveNull(orderFromList);
             mgtTotalOrderTotalVo.setOrderFromRankList(orderFromList);
         }
+        //订单分布
+        //日期全部时固定为5天
+        if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){
+            mgtBasePlatformDto.setStartDate(DateUtils.getDate());
+            mgtBasePlatformDto.setEndDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
+        }
+        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();
+            }
+            MerOrderDistributionTotalVo merOrderDistributionTotalVo = fillOrderTotalKeyAndValuesToRecentFiveDays(orderTotalKey,orderTotalValue,orderMoneyValue);
+            mgtTotalOrderTotalVo.setOrderTotalKey(merOrderDistributionTotalVo.getOrderTotalKey());
+            mgtTotalOrderTotalVo.setOrderTotalValue(merOrderDistributionTotalVo.getOrderTotalValue());
+            mgtTotalOrderTotalVo.setOrderMoneyValue(merOrderDistributionTotalVo.getOrderMoneyValue());
+        }
         return mgtTotalOrderTotalVo;
     }
 
@@ -3162,6 +3208,9 @@
      */
     @Override
     public MgtPlTotalActivityTotalVo getPlTotalActivityTotal(MgtBasePlatformDto mgtBasePlatformDto) {
+        if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){
+            return new MgtPlTotalActivityTotalVo();
+        }
         //获取需要关联的用户id集合
         if (mgtBasePlatformDto.getDeptId() != null) {
             List<Long> userIdList = new ArrayList<>();
@@ -3229,6 +3278,11 @@
             totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
             totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
         }
+        //日期全部时固定为5天
+        if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){
+            mgtBasePlatformDto.setStartDate(DateUtils.getDate());
+            mgtBasePlatformDto.setEndDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
+        }
         //获取订单分布
         List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalActivityTotal(mgtBasePlatformDto);
         if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) {
@@ -3256,18 +3310,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);
         }
         //活动销售额排名
@@ -3337,7 +3401,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();
@@ -3361,7 +3425,7 @@
         plTotalActivityTotalVo.setActivityAgeKey(activityAgeKey);
         plTotalActivityTotalVo.setActivityAgeValue(activityAgeValue);
         return plTotalActivityTotalVo;
-    }
+    }*/
 
     /**
      * @param verifyCode

--
Gitblit v1.7.1