From 1695aa136a89421b1cff75d672888e81d2a24d9a Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期二, 29 八月 2023 18:30:23 +0800 Subject: [PATCH] bug --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 744 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 653 insertions(+), 91 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 7d059dd..e59af1b 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 @@ -67,6 +67,7 @@ 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.*; @@ -156,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(); // 初始化订单商品列表 @@ -414,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(); @@ -762,28 +771,27 @@ } 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); //生成自动取消订单延时任务 - 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); + 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); - appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); }else{ order.setOrderStatus(2); this.saveOrUpdate(order); @@ -846,7 +854,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); @@ -1163,23 +1174,25 @@ // 保存订单 交易流水 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); + 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); - appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); + }else{ order.setOrderStatus(2); this.saveOrUpdate(order); @@ -1305,6 +1318,47 @@ } else { throw new ServiceException(AppErrorConstant.CANCEL_ERROR_ORDER); } + } + + /** + * @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; } /** @@ -1558,7 +1612,7 @@ // TODO 活动才分账 if (order.getOrderFrom() == 2) { // 活动才分账 - submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOrderMoney()); + submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOnlinePayMoney()); } //创建支付记录 @@ -1602,39 +1656,42 @@ 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) { - // 分账创建 - ProfitSharingRequest.Receiver receiver = new ProfitSharingRequest.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); @@ -1646,7 +1703,7 @@ } catch (WxPayException e) { resultMessage = String.format("订单分账:%s 分账失败:%s", orderNo, e.getMessage()); log.info(resultMessage); - e.printStackTrace(); + throw new ServiceException(resultMessage); } // 保存分账信息 @@ -2608,7 +2665,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) { @@ -2756,34 +2815,83 @@ List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>(); List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>(); if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) { - MgtMapIntTotalVo MgtMapIntTotalVo; + MgtMapIntTotalVo mgtMapIntTotalVo; MgtMapBigTotalVo mgtMapBigTotalVo; // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 + Boolean noCycle = true; + Boolean noService = true; + Boolean noExperience = true; + Boolean noGoods = true; for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) { - MgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapBigTotalVo = new MgtMapBigTotalVo(); - MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()); if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) { - MgtMapIntTotalVo.setMapKey("周期"); + mgtMapIntTotalVo.setMapKey("周期"); mgtMapBigTotalVo.setMapKey("周期"); mgtTotalOrderTotalVo.setCycleTotal(mgtTotalOrderTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); mgtTotalOrderTotalVo.setCycleMoney(mgtTotalOrderTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + noCycle= false; } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) { - MgtMapIntTotalVo.setMapKey("服务"); + mgtMapIntTotalVo.setMapKey("服务"); mgtMapBigTotalVo.setMapKey("服务"); mgtTotalOrderTotalVo.setServiceTotal(mgtTotalOrderTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); mgtTotalOrderTotalVo.setServiceMoney(mgtTotalOrderTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + noService= false; } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) { - MgtMapIntTotalVo.setMapKey("体验"); + mgtMapIntTotalVo.setMapKey("体验"); mgtMapBigTotalVo.setMapKey("体验"); mgtTotalOrderTotalVo.setExperienceTotal(mgtTotalOrderTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); mgtTotalOrderTotalVo.setExperienceMoney(mgtTotalOrderTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + noExperience = false; } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) { - MgtMapIntTotalVo.setMapKey("单品"); + mgtMapIntTotalVo.setMapKey("单品"); mgtMapBigTotalVo.setMapKey("单品"); + noGoods = false; } - goodsTypeTotalList.add(MgtMapIntTotalVo); + //补充缺少类型 + if(noCycle){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("周期"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("周期"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noService){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("服务"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("服务"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noExperience){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("体验"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("体验"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noGoods){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("单品"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("单品"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + goodsTypeTotalList.add(mgtMapIntTotalVo); goodsTypeMoneyList.add(mgtMapBigTotalVo); } mgtTotalOrderTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); @@ -2804,8 +2912,8 @@ //订单分布 //日期全部时固定为5天 if(StringUtils.isBlank(mgtBaseShopDto.getStartDate())){ - mgtBaseShopDto.setStartDate(DateUtils.getDate()); - mgtBaseShopDto.setEndDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); + mgtBaseShopDto.setEndDate(DateUtils.getDate()); + mgtBaseShopDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); } List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listTotalOrderTotal(mgtBaseShopDto); if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { @@ -2885,34 +2993,83 @@ totalActivityTotalVo.setExperienceTotal(0); totalActivityTotalVo.setExperienceMoney(BigDecimal.ZERO); // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 - MgtMapIntTotalVo MgtMapIntTotalVo; + MgtMapIntTotalVo mgtMapIntTotalVo; MgtMapBigTotalVo mgtMapBigTotalVo; // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 + Boolean noCycle = true; + Boolean noService = true; + Boolean noExperience = true; + Boolean noGoods = true; for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) { - MgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapBigTotalVo = new MgtMapBigTotalVo(); - MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()); if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) { - MgtMapIntTotalVo.setMapKey("周期"); + mgtMapIntTotalVo.setMapKey("周期"); mgtMapBigTotalVo.setMapKey("周期"); totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + noCycle= false; } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) { - MgtMapIntTotalVo.setMapKey("服务"); + mgtMapIntTotalVo.setMapKey("服务"); mgtMapBigTotalVo.setMapKey("服务"); totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + noService= false; } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) { - MgtMapIntTotalVo.setMapKey("体验"); + mgtMapIntTotalVo.setMapKey("体验"); mgtMapBigTotalVo.setMapKey("体验"); totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + noExperience = false; } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) { - MgtMapIntTotalVo.setMapKey("单品"); + mgtMapIntTotalVo.setMapKey("单品"); mgtMapBigTotalVo.setMapKey("单品"); + noGoods = false; } - goodsTypeTotalList.add(MgtMapIntTotalVo); + goodsTypeTotalList.add(mgtMapIntTotalVo); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + //补充缺少类型 + if(noCycle){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("周期"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("周期"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noService){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("服务"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("服务"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noExperience){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("体验"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("体验"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noGoods){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("单品"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("单品"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); goodsTypeMoneyList.add(mgtMapBigTotalVo); } totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); @@ -2922,8 +3079,8 @@ //获取订单分布 //日期全部时固定为5天 if(StringUtils.isBlank(mgtBaseShopDto.getStartDate())){ - mgtBaseShopDto.setStartDate(DateUtils.getDate()); - mgtBaseShopDto.setEndDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); + mgtBaseShopDto.setEndDate(DateUtils.getDate()); + mgtBaseShopDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); } List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listTotalActivityTotal(mgtBaseShopDto); if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { @@ -2938,6 +3095,46 @@ totalActivityTotalVo.setOrderTotalKey(orderTotalKey); totalActivityTotalVo.setOrderTotalValue(orderTotalValue); totalActivityTotalVo.setOrderMoneyValue(orderMoneyValue); + } + //参与人数 + List<MgtMapIntTotalVo> joinList = orderMapper.getActivityMemberTotal(mgtBaseShopDto); + // 将查询结果转为Map + Map<String, Integer> mgtMapIntTotalVoMap = new HashMap<>(); + if (joinList != null && !joinList.isEmpty()) { + mgtMapIntTotalVoMap = joinList.stream() + .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue)); + } + // 获取日期范围 + List<String> dateList = getDateRange(mgtBaseShopDto.getStartDate(), mgtBaseShopDto.getEndDate()); + int size = dateList.size(); + // 创建日期和成员总数的数组 + String[] joinMemberTotalKey = new String[size]; + Integer[] joinMemberTotalValue = new Integer[size]; + // 遍历日期列表,设置日期和成员总数的数组 + String str; + Integer value; + for (int i = 0; i < size; i++) { + str = dateList.get(i); + joinMemberTotalKey[i] = str; + value = mgtMapIntTotalVoMap.get(str); + joinMemberTotalValue[i] = (value != null) ? value : 0; + } + totalActivityTotalVo.setJoinMemberTotalKey(joinMemberTotalKey); + totalActivityTotalVo.setJoinMemberTotalValue(joinMemberTotalValue); + return totalActivityTotalVo; + } + + @Override + public MgtTotalActivityTotalVo getTotalActivityJoinMemberTotal(MgtBaseShopDto mgtBaseShopDto) { + MgtTotalActivityTotalVo totalActivityTotalVo = new MgtTotalActivityTotalVo(); + //日期全部时固定为5天 + if(StringUtils.isBlank(mgtBaseShopDto.getStartDate())){ + mgtBaseShopDto.setEndDate(DateUtils.getDate()); + mgtBaseShopDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); + } + if(mgtBaseShopDto.getAgeType()!=null){ + List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBaseShopDto.getAgeType()).getData(); + mgtBaseShopDto.setUserIdList(userIdList); } //参与人数 List<MgtMapIntTotalVo> joinList = orderMapper.getActivityMemberTotal(mgtBaseShopDto); @@ -3072,10 +3269,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(); @@ -3083,8 +3298,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); } } @@ -3116,6 +3333,10 @@ } } 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); @@ -3130,34 +3351,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); @@ -3178,8 +3448,8 @@ //订单分布 //日期全部时固定为5天 if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){ - mgtBasePlatformDto.setStartDate(DateUtils.getDate()); - mgtBasePlatformDto.setEndDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); + mgtBasePlatformDto.setEndDate(DateUtils.getDate()); + mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); } List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalOrderTotal(mgtBasePlatformDto); if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { @@ -3212,7 +3482,7 @@ return new MgtPlTotalActivityTotalVo(); } //获取需要关联的用户id集合 - if (mgtBasePlatformDto.getDeptId() != null) { + /*if (mgtBasePlatformDto.getDeptId() != null) { List<Long> userIdList = new ArrayList<>(); if (mgtBasePlatformDto.getUserId() != null) { userIdList.add(mgtBasePlatformDto.getUserId()); @@ -3225,7 +3495,7 @@ if (!userIdList.isEmpty()) { mgtBasePlatformDto.setUserIdList(userIdList); } - } + }*/ List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); mgtBasePlatformDto.setShopIdList(shopIdList); //获取基础统计 @@ -3247,41 +3517,90 @@ 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; } + } + //补充缺少类型 + if(noCycle){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("周期"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("周期"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noService){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("服务"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("服务"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noExperience){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("体验"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("体验"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noGoods){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("单品"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("单品"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); } totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList); } //日期全部时固定为5天 if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){ - mgtBasePlatformDto.setStartDate(DateUtils.getDate()); - mgtBasePlatformDto.setEndDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); + mgtBasePlatformDto.setEndDate(DateUtils.getDate()); + mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); } //获取订单分布 List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalActivityTotal(mgtBasePlatformDto); @@ -3385,14 +3704,137 @@ // 遍历日期列表,设置日期和成员总数的数组 for (int i = 0; i < size; i++) { str = dateList.get(i); - joinMemberTotalKey[i] = str; + getMemberTotalKey[i] = str; value = getMemberMap.get(str); - joinMemberTotalValue[i] = (value != null) ? value : 0; + getMemberTotalValue[i] = (value != null) ? value : 0; } totalActivityTotalVo.setGetMemberTotalKey(getMemberTotalKey); totalActivityTotalVo.setGetMemberTotalValue(getMemberTotalValue); return totalActivityTotalVo; } + + + @Override + public MgtPlTotalActivityTotalVo getPlTotalActivityJoinMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) { + if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){ + return new MgtPlTotalActivityTotalVo(); + } + //获取需要关联的用户id集合 + /*if (mgtBasePlatformDto.getDeptId() != null) { + List<Long> userIdList = new ArrayList<>(); + if (mgtBasePlatformDto.getUserId() != null) { + userIdList.add(mgtBasePlatformDto.getUserId()); + } else { + MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept(); + mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId()); + mgtUserIdByDept = remoteConfigService.getUserIdByDept(mgtUserIdByDept).getData(); + userIdList = mgtUserIdByDept.getUserIdList(); + } + if (!userIdList.isEmpty()) { + mgtBasePlatformDto.setUserIdList(userIdList); + } + }*/ + if(mgtBasePlatformDto.getAgeType()!=null){ + List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData(); + mgtBasePlatformDto.setUserIdList(userIdList); + } + List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); + mgtBasePlatformDto.setShopIdList(shopIdList); + MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo(); + //日期全部时固定为5天 + if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){ + mgtBasePlatformDto.setEndDate(DateUtils.getDate()); + mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); + } + //参与人数 + List<MgtMapIntTotalVo> joinList = orderMapper.getMgtActivityMemberTotal(mgtBasePlatformDto); + // 将查询结果转为Map + Map<String, Integer> mgtMapIntTotalVoMap = new HashMap<>(); + if (joinList != null && !joinList.isEmpty()) { + mgtMapIntTotalVoMap = joinList.stream() + .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue)); + } + // 获取日期范围 + List<String> dateList = getDateRange(mgtBasePlatformDto.getStartDate(), mgtBasePlatformDto.getEndDate()); + int size = dateList.size(); + // 创建日期和成员总数的数组 + String[] joinMemberTotalKey = new String[size]; + Integer[] joinMemberTotalValue = new Integer[size]; + // 遍历日期列表,设置日期和成员总数的数组 + String str; + Integer value; + for (int i = 0; i < size; i++) { + str = dateList.get(i); + joinMemberTotalKey[i] = str; + value = mgtMapIntTotalVoMap.get(str); + joinMemberTotalValue[i] = (value != null) ? value : 0; + } + totalActivityTotalVo.setJoinMemberTotalKey(joinMemberTotalKey); + totalActivityTotalVo.setJoinMemberTotalValue(joinMemberTotalValue); + return totalActivityTotalVo; + } + + @Override + public MgtPlTotalActivityTotalVo getPlTotalActivityGetMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) { + if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){ + return new MgtPlTotalActivityTotalVo(); + } + //获取需要关联的用户id集合 + /*if (mgtBasePlatformDto.getDeptId() != null) { + List<Long> userIdList = new ArrayList<>(); + if (mgtBasePlatformDto.getUserId() != null) { + userIdList.add(mgtBasePlatformDto.getUserId()); + } else { + MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept(); + mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId()); + mgtUserIdByDept = remoteConfigService.getUserIdByDept(mgtUserIdByDept).getData(); + userIdList = mgtUserIdByDept.getUserIdList(); + } + if (!userIdList.isEmpty()) { + mgtBasePlatformDto.setUserIdList(userIdList); + } + }*/ + if(mgtBasePlatformDto.getAgeType()!=null){ + List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData(); + mgtBasePlatformDto.setUserIdList(userIdList); + } + List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); + mgtBasePlatformDto.setShopIdList(shopIdList); + MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo(); + //日期全部时固定为5天 + if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){ + mgtBasePlatformDto.setEndDate(DateUtils.getDate()); + mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); + } + //获客人数 + List<MgtMapIntTotalVo> getList = orderMapper.getMgtActivityGetMemberTotal(mgtBasePlatformDto); + // 将查询结果转为Map + Map<String, Integer> getMemberMap = new HashMap<>(); + if (getList != null && !getList.isEmpty()) { + getMemberMap = getList.stream() + .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue)); + } + // 获取日期范围 + List<String> dateList = getDateRange(mgtBasePlatformDto.getStartDate(), mgtBasePlatformDto.getEndDate()); + int size = dateList.size(); + // 创建日期和成员总数的数组 + String[] getMemberTotalKey = new String[size]; + Integer[] getMemberTotalValue = new Integer[size]; + // 遍历日期列表,设置日期和成员总数的数组 + String str; + Integer value; + // 遍历日期列表,设置日期和成员总数的数组 + for (int i = 0; i < size; i++) { + str = dateList.get(i); + getMemberTotalKey[i] = str; + value = getMemberMap.get(str); + getMemberTotalValue[i] = (value != null) ? value : 0; + } + totalActivityTotalVo.setGetMemberTotalKey(getMemberTotalKey); + totalActivityTotalVo.setGetMemberTotalValue(getMemberTotalValue); + return totalActivityTotalVo; + } + /** * @param mgtPlActivityAgeDto @@ -3762,6 +4204,10 @@ bigTotal = hundredBig; } // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 + Boolean noCycle = true; + Boolean noService = true; + Boolean noExperience = true; + Boolean noGoods = true; for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) { mgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapBigTotalVo = new MgtMapBigTotalVo(); @@ -3772,17 +4218,62 @@ if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) { mgtMapIntTotalVo.setMapKey("周期"); mgtMapBigTotalVo.setMapKey("周期"); + noCycle= false; } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) { mgtMapIntTotalVo.setMapKey("服务"); mgtMapBigTotalVo.setMapKey("服务"); + noService= false; } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) { mgtMapIntTotalVo.setMapKey("体验"); mgtMapBigTotalVo.setMapKey("体验"); + noExperience = false; } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) { mgtMapIntTotalVo.setMapKey("单品"); mgtMapBigTotalVo.setMapKey("单品"); + noGoods = false; } goodsTypeTotalList.add(mgtMapIntTotalVo); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + //补充缺少类型 + if(noCycle){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("周期"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("周期"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noService){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("服务"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("服务"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noExperience){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("体验"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("体验"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noGoods){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("单品"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("单品"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); goodsTypeMoneyList.add(mgtMapBigTotalVo); } orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); @@ -4002,7 +4493,7 @@ @Override @Transactional public void payBack(PartnerTransactionsResult transaction) { - + log.info("订单支付回调---"+transaction.toString()); // Order order = this.getById(orderId); // 更新订单状态 outTradeNo String outTradeNo = transaction.getOutTradeNo(); @@ -4497,6 +4988,15 @@ return orderDistributionTotalVo; } + /** + * @description 补时间 + * @author jqs + * @date 2023/8/28 15:03 + * @param orderTotalKey + * @param orderTotalValue + * @param orderMoneyValue + * @return MerOrderDistributionTotalVo + */ public MerOrderDistributionTotalVo fillOrderTotalKeyAndValuesToRecentFiveDays(String[] orderTotalKey,Integer[] orderTotalValue,BigDecimal[] orderMoneyValue) { MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo(); // 获取当前日期 @@ -4538,6 +5038,7 @@ orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue); return orderDistributionTotalVo; } + private int getIndexInOrderTotalKey(String day,String[] orderTotalKey) { for (int i = 0; i < orderTotalKey.length; i++) { @@ -4582,6 +5083,10 @@ bigTotal = hundredBig; } // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 + Boolean noCycle = true; + Boolean noService = true; + Boolean noExperience = true; + Boolean noGoods = true; for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) { mgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapBigTotalVo = new MgtMapBigTotalVo(); @@ -4592,17 +5097,62 @@ if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) { mgtMapIntTotalVo.setMapKey("周期"); mgtMapBigTotalVo.setMapKey("周期"); + noCycle= false; } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) { mgtMapIntTotalVo.setMapKey("服务"); mgtMapBigTotalVo.setMapKey("服务"); + noService= false; } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) { mgtMapIntTotalVo.setMapKey("体验"); mgtMapBigTotalVo.setMapKey("体验"); + noExperience = false; } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) { mgtMapIntTotalVo.setMapKey("单品"); mgtMapBigTotalVo.setMapKey("单品"); + noGoods = false; } goodsTypeTotalList.add(mgtMapIntTotalVo); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + //补充缺少类型 + if(noCycle){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("周期"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("周期"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noService){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("服务"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("服务"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noExperience){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("体验"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("体验"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noGoods){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("单品"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("单品"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); goodsTypeMoneyList.add(mgtMapBigTotalVo); } orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); @@ -4944,4 +5494,16 @@ AgencyTotalVo agencyTotalVo = orderMapper.getAgencyTotalVo(shopIdList); return agencyTotalVo; } + + /** + * @description 商户端会员订单统计 + * @author jqs + * @date 2023/8/29 17:39 + * @param merBaseDto + * @return MerMemberSimpleTotalVo + */ + @Override + public MerMemberSimpleTotalVo getMerMemberSimpleTotalVo(MerBaseDto merBaseDto){ + return orderMapper.getMerMemberSimpleTotalVo(merBaseDto); + } } -- Gitblit v1.7.1