From 58d3e3d9d6a129c687044eef0418def8ad6e7cad Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期日, 27 八月 2023 19:10:27 +0800 Subject: [PATCH] bug --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 404 ++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 298 insertions(+), 106 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 fa150de..27c19ec 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(); @@ -751,42 +760,42 @@ } appPlaceOrderVo.setOrderId(orderId); appPlaceOrderVo.setOrderNo(orderNo); - + //商品数据 String goodsName = ""; if (null != goodsNameList) { goodsName = String.join(",", goodsNameList); } - - if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.TEN)<0){ - String outTradeNo = IdUtils.simpleUUID(); - - // 保存订单 交易流水 - order.setOutTradeNo(outTradeNo); - this.saveOrUpdate(order); - - // 小程序微信下单支付 - createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, outTradeNo, - orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(), - appPlaceOrderDto.getSpbillCreateIp(), goodsNameList,1); - } - //减去优惠券 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.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; } @@ -830,6 +839,7 @@ request.setNotifyUrl(config.getNotifyUrl()); // 结算信息 PartnerTransactionsRequest.SettleInfo settleInfo = new PartnerTransactionsRequest.SettleInfo(); + // TODO 分账处理 if(orderFrom==2){ settleInfo.setProfitSharing(true); }else{ @@ -844,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); @@ -1155,18 +1168,34 @@ 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); - + 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(), orderNo, orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(), appPlaceActivityDto.getSpbillCreateIp(), goodsNameList,2); + //生成自动取消订单延时任务 + String payStr = appPlaceOrderVo.getAppId()+"-"+appPlaceOrderVo.getTimeStamp()+"-"+appPlaceOrderVo.getNonceStr()+"-"+appPlaceOrderVo.getPackageStr()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getPaySign(); + 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(); @@ -1181,19 +1210,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; } @@ -1302,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.getByOrderId(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; } /** @@ -1552,7 +1609,7 @@ merVerifyOrderVo.setUserName(member.getRealName()); merVerifyOrderVo.setUserMobile(member.getMobile()); merVerifyOrderVo.setCloseFlag(order.getCloseFlag()); - + // TODO 活动才分账 if (order.getOrderFrom() == 2) { // 活动才分账 submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOrderMoney()); @@ -1586,51 +1643,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); + 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) { - // 分账创建 - 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); @@ -2743,22 +2804,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<>(); @@ -2809,6 +2858,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; } @@ -2853,8 +2922,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) { @@ -2900,7 +2975,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()]; @@ -2915,6 +2996,31 @@ 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; } @@ -2925,7 +3031,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); @@ -2947,7 +3053,7 @@ totalActivityTotalVo.setActivityAgeKey(activityAgeKey); totalActivityTotalVo.setActivityAgeValue(activityAgeValue); return totalActivityTotalVo; - } + }*/ /** * @param mgtBaseShopDto @@ -3067,23 +3173,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<>(); @@ -3140,6 +3236,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; } @@ -3152,6 +3269,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<>(); @@ -3171,6 +3291,12 @@ 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<>(); @@ -3213,6 +3339,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) { @@ -3240,18 +3371,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); } //活动销售额排名 @@ -3260,6 +3401,57 @@ 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); + joinMemberTotalKey[i] = str; + value = getMemberMap.get(str); + joinMemberTotalValue[i] = (value != null) ? value : 0; + } + totalActivityTotalVo.setGetMemberTotalKey(getMemberTotalKey); + totalActivityTotalVo.setGetMemberTotalValue(getMemberTotalValue); return totalActivityTotalVo; } @@ -3270,7 +3462,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(); @@ -3294,7 +3486,7 @@ plTotalActivityTotalVo.setActivityAgeKey(activityAgeKey); plTotalActivityTotalVo.setActivityAgeValue(activityAgeValue); return plTotalActivityTotalVo; - } + }*/ /** * @param verifyCode -- Gitblit v1.7.1