From 4c15245a5c3e0ebc01b9928474eda9a68a2dfa3a Mon Sep 17 00:00:00 2001 From: jiangqs <343695869@qq.com> Date: 星期五, 01 九月 2023 01:20:29 +0800 Subject: [PATCH] bug --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 106 +++++++++++++++++++++++------------------------------ 1 files changed, 46 insertions(+), 60 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 e59af1b..d9bb1ae 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,24 +751,13 @@ } // 保存订单 this.save(order); - // 更新用户商品类型 - if (goodsTypeSet != null && goodsTypeSet.size() > 0) { - AppMemberGoodsTypeDto appMemberGoodsTypeDto = new AppMemberGoodsTypeDto(); - appMemberGoodsTypeDto.setUserId(userId); - appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet); - remoteMemberService.updateMemberGoodsType(appMemberGoodsTypeDto); - } appPlaceOrderVo.setOrderId(orderId); appPlaceOrderVo.setOrderNo(orderNo); - //商品数据 - String goodsName = ""; - if (null != goodsNameList) { - goodsName = String.join(",", goodsNameList); - } //减去优惠券 if (StringUtils.isNotBlank(memberCouponSJ.toString())) { remoteCouponService.useMemberCoupon(memberCouponSJ.toString()); } + //判断是否需要支付 不需要直接待核销 if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){ String outTradeNo = IdUtils.simpleUUID(); // 保存订单 交易流水 @@ -779,6 +768,11 @@ delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); + //商品数据 + String goodsName = ""; + if (null != goodsNameList) { + goodsName = String.join(",", goodsNameList); + } // 小程序微信下单支付 createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, outTradeNo, orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(), @@ -792,11 +786,19 @@ delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime)); delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); remoteConfigService.addDelayTask(delayTask); + appPlaceOrderVo.setZeroFlag(0); }else{ order.setOrderStatus(2); this.saveOrUpdate(order); + appPlaceOrderVo.setZeroFlag(1); } - + // 更新用户商品类型统计 + if (goodsTypeSet != null && goodsTypeSet.size() > 0) { + AppMemberGoodsTypeDto appMemberGoodsTypeDto = new AppMemberGoodsTypeDto(); + appMemberGoodsTypeDto.setUserId(userId); + appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet); + remoteMemberService.updateMemberGoodsType(appMemberGoodsTypeDto); + } return appPlaceOrderVo; } @@ -813,7 +815,8 @@ * @param payerClientIp * @param goodsNameList */ - public void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId, + + private void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId, String goodsName, String outTradeNo, String orderId, BigDecimal payMoney, String openid, String payerClientIp, List<String> goodsNameList,Integer orderFrom){ @@ -919,7 +922,7 @@ String activityId = appPlaceActivityDto.getActivityId(); String goodsId = appPlaceActivityDto.getGoodsId(); Integer buyNum = appPlaceActivityDto.getBuyNum(); - //redis库存控制极简版 + //redis分布式锁库存控制 String goodsLock = "goods_lock_" + activityId + "_" + goodsId; RLock redissonLock = redissonClient.getLock(goodsLock); try { @@ -1129,51 +1132,15 @@ agStockChangeDto.setShopId(order.getShopId()); agStockChangeDto.setUserId(order.getUserId()); remoteActivityService.changeActivityStock(agStockChangeDto); - // 调用支付 - /*PrepayRequest request = new PrepayRequest(); - Amount amount = new Amount(); - amount.setTotal(Integer.parseInt(order.getPayMoney().multiply(new BigDecimal(100)).toString())); - request.setAmount(amount); - request.setAppid(this.appId); - request.setMchid(this.mchId); - request.setDescription(order.getGoodsInfo()); - request.setNotifyUrl(this.notifyUrl); - request.setOutTradeNo(order.getOrderId()); - Payer payer = new Payer(); - // TODO 获取openID - payer.setOpenid("oLTPCuN5a-nBD4rAL_fa********"); - - request.setPayer(payer);*/ - - //设置订单允许分账 秒杀活动才允许分账 - /*if(order.getOrderFrom()==2){ - SettleInfo settleInfo=new SettleInfo(); - settleInfo.setProfitSharing(true); - request.setSettleInfo(settleInfo); - }*/ - - - //返回前端唤醒支付结果信息 - /*PrepayWithRequestPaymentResponse res = this.getJsApIResponse(request); - - appPlaceOrderVo.setAppId(this.appId); - appPlaceOrderVo.setTimeStamp(res.getTimeStamp()); - appPlaceOrderVo.setNonceStr(res.getNonceStr()); - appPlaceOrderVo.setPackageStr(res.getPackageVal()); - appPlaceOrderVo.setTradeType(res.getSignType()); - appPlaceOrderVo.setPaySign(res.getPaySign()); - -*/ - List<String> goodsNameList = new ArrayList<>(); - goodsNameList.add(orderGoods.getGoodsName()); - - + //支付金额大于0走支付 负责直接完成订单 if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){ - + List<String> goodsNameList = new ArrayList<>(); + goodsNameList.add(orderGoods.getGoodsName()); 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); @@ -1192,10 +1159,11 @@ delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime)); delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); remoteConfigService.addDelayTask(delayTask); - + appPlaceOrderVo.setZeroFlag(0); }else{ order.setOrderStatus(2); this.saveOrUpdate(order); + appPlaceOrderVo.setZeroFlag(1); } //生成活动参加记录 ActivityRecord activityRecord = new ActivityRecord(); @@ -3447,9 +3415,11 @@ } //订单分布 //日期全部时固定为5天 + Boolean fillZero = false; if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){ mgtBasePlatformDto.setEndDate(DateUtils.getDate()); mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); + fillZero = true; } List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalOrderTotal(mgtBasePlatformDto); if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { @@ -3461,10 +3431,17 @@ 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()); + if(fillZero){ + MerOrderDistributionTotalVo merOrderDistributionTotalVo = fillOrderTotalKeyAndValuesToRecentFiveDays(orderTotalKey,orderTotalValue,orderMoneyValue); + mgtTotalOrderTotalVo.setOrderTotalKey(merOrderDistributionTotalVo.getOrderTotalKey()); + mgtTotalOrderTotalVo.setOrderTotalValue(merOrderDistributionTotalVo.getOrderTotalValue()); + mgtTotalOrderTotalVo.setOrderMoneyValue(merOrderDistributionTotalVo.getOrderMoneyValue()); + }else{ + mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey); + mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue); + mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue); + } + } return mgtTotalOrderTotalVo; } @@ -3497,6 +3474,10 @@ } }*/ List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); + if(mgtBasePlatformDto.getShopId()!=null){ + shopIdList = new ArrayList<>(); + shopIdList.add(mgtBasePlatformDto.getShopId()); + } mgtBasePlatformDto.setShopIdList(shopIdList); //获取基础统计 MgtPlTotalActivityTotalVo totalActivityTotalVo = orderMapper.getPlTotalActivityTotal(mgtBasePlatformDto); @@ -3552,6 +3533,8 @@ mgtMapBigTotalVo.setMapKey("单品"); noGoods = false; } + goodsTypeTotalList.add(mgtMapIntTotalVo); + goodsTypeMoneyList.add(mgtMapBigTotalVo); } //补充缺少类型 if(noCycle){ @@ -4091,6 +4074,7 @@ */ @Override public MerOrderDistributionTotalVo MerOrderDistributionTotalVo(MerTotalDto merTotalDto) { + //获取查询的商户列表 if (merTotalDto.getShopAllFlag() != null && merTotalDto.getShopAllFlag() == 1) { List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData(); merTotalDto.setShopIdList(shopIdList); @@ -4149,6 +4133,7 @@ String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()]; Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()]; BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()]; + //数据为空返回空数组 if (mgtMapTotalPlusVoList != null && !mgtMapTotalPlusVoList.isEmpty()) { MgtMapTotalPlusVo mgtMapTotalPlusVo; for (int i = 0; i < mgtMapTotalPlusVoList.size(); i++) { @@ -4157,6 +4142,7 @@ orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst(); orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond(); } + //补充日期到近5日 orderDistributionTotalVo = fillOrderTotalKeyAndValuesToRecentFiveDays(orderTotalKey,orderTotalValue,orderMoneyValue); }else{ orderDistributionTotalVo.setOrderTotalKey(orderTotalKey); -- Gitblit v1.7.1