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