From 981aacc8d5de2638a0f5b3eb2585e64cfaf2807d Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期六, 12 七月 2025 18:01:19 +0800 Subject: [PATCH] 修改bug --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 213 ++++++++++++++++++++++++++++------------------------ 1 files changed, 114 insertions(+), 99 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 117fbc5..2962360 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 @@ -1514,6 +1514,7 @@ delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } appUserOrderGetVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); + appUserOrderGetVo.setCancelType(order.getCancelType()); return appUserOrderGetVo; } @@ -1532,10 +1533,10 @@ //删除待支付超时取消延时任务 redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+orderId); - this.autoCancelOrder(orderId); + this.autoCancelOrder(orderId, 3); } else if (order.getOrderStatus() == 2) { // 2.待核销 -> 订单退款 - this.refundOrder(orderId); + this.refundOrder(orderId, 3); } else { throw new ServiceException(AppErrorConstant.CANCEL_ERROR_ORDER); } @@ -1690,12 +1691,12 @@ shopId = merHomeShopTotalVo.getShopId(); //获取今日到店 - Integer todayShop = userServiceRecordService.countShopServicePerson(shopId); + List<Integer> todayShop = userServiceRecordService.countShopServicePerson(shopId); //获取待处理订单和营业额 merHomeShopTotalVo = orderMapper.getMerHomeShopTotalVo(shopId); //获取服务统计 MerHomeShopTotalVo serviceTotalVo = orderMapper.getMerHomeShopServiceTotalVo(shopId); - merHomeShopTotalVo.setTodayShop(todayShop); + merHomeShopTotalVo.setTodayShop(todayShop.size()); merHomeShopTotalVo.setCycleSurp(serviceTotalVo.getCycleSurp()); merHomeShopTotalVo.setExplorationSurp(serviceTotalVo.getExplorationSurp()); return merHomeShopTotalVo; @@ -3255,7 +3256,7 @@ Long userId; Member member; Integer orderFrom; - String orderFromDesc; + String orderFromDesc = ""; BigDecimal zeroBig = new BigDecimal("0.00"); StringJoiner userIdSj = new StringJoiner(","); // 遍历订单列表 @@ -3269,8 +3270,16 @@ orderFromDesc = "商城订单"; } else if (orderFrom == 2) { orderFromDesc = "平台秒杀活动(" + merOrderPageVo.getActivityName() + ")"; - } else { + } else if(orderFrom == 3) { orderFromDesc = "线下创建"; + }else if(orderFrom == 4) { + orderFromDesc = "抽奖"; + }else if(orderFrom == 5) { + orderFromDesc = "美团"; + }else if(orderFrom == 6) { + orderFromDesc = "抖音"; + }else if(orderFrom == 7) { + orderFromDesc = "快手"; } } else { orderFromDesc = "商城订单"; @@ -5575,11 +5584,12 @@ @Override @Transactional // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 - public void autoCancelOrder(String orderId) { + public void autoCancelOrder(String orderId, Integer cancelType) { //更新订单信息 Order order = this.getById(orderId); order.setOrderStatus(0); order.setCancelTime(new Date()); + order.setCancelType(cancelType); this.saveOrUpdate(order); //活动订单回退库存 if (order.getOrderFrom() == 2) { @@ -5791,11 +5801,12 @@ @Override @Transactional // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 - public void refundOrder(String orderId) { + public void refundOrder(String orderId, Integer cancelType) { // 更新订单信息 Order order = this.getById(orderId); order.setOrderStatus(0); order.setCancelTime(new Date()); + order.setCancelType(cancelType); this.saveOrUpdate(order); OrderRefund orderRefund = new OrderRefund(); String refundId = IdUtils.simpleUUID(); @@ -6534,64 +6545,39 @@ } } -// @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 - private void autoTimeCancelOrder(Order order) { - String orderId = order.getOrderId(); - order.setOrderStatus(0); - order.setCancelTime(new Date()); - this.saveOrUpdate(order); - //活动订单回退库存 - if (order.getOrderFrom() == 2) { - List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId); - if (orderGoodsList != null && !orderGoodsList.isEmpty()) { - for (OrderGoods orderGoods : orderGoodsList) { - //redis库存控制极简版 - String goodsLock = "goods_lock_" + order.getActivityId() + "_" + orderGoods.getGoodsId(); - RLock redissonLock = redissonClient.getLock(goodsLock); - try { - redissonLock.lock(30, TimeUnit.SECONDS); - Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId()); - if(null == surpNum){ - surpNum = 0; - } - redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum()); - } finally { - redissonLock.unlock(); - } - //改变活动库存 - AGStockChangeDto agStockChangeDto = new AGStockChangeDto(); - agStockChangeDto.setActivityId(order.getActivityId()); - agStockChangeDto.setGoodsId(orderGoods.getGoodsId()); - agStockChangeDto.setChangeType(1); - agStockChangeDto.setChangeNum(orderGoods.getBuyNum()); - agStockChangeDto.setShopId(order.getShopId()); - agStockChangeDto.setUserId(order.getUserId()); - remoteActivityService.changeActivityStock(agStockChangeDto); - //删除活动记录 - ActivityRecord activityRecord = new ActivityRecord(); - activityRecord.setActivityId(order.getActivityId()); - activityRecord.setGoodsId(orderGoods.getGoodsId()); - activityRecord.setUserId(order.getUserId()); - activityRecord.setOrderTime(order.getCreateTime()); - remoteActivityService.delActivityRecord(activityRecord); - } - } - } else { - if (order.getCouponMoney().compareTo(BigDecimal.ZERO) > 0) { - //回退优惠券 - List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId); - if (orderGoodsList != null && !orderGoodsList.isEmpty()) { - StringJoiner memberCouponSJ = new StringJoiner(","); - for (OrderGoods orderGoods : orderGoodsList) { - memberCouponSJ.add(orderGoods.getCouponId()); - } - if (memberCouponSJ != null) { - remoteCouponService.backMemberCoupon(memberCouponSJ.toString()); - - } - } - } + /** + * 后台取消订单 + * 订单状态变为已取消 不退款 + * @param dto + */ + @Override + public R cancelOrderBySys(CancelOrderDTO dto) { + Order order = this.getById(dto.getOrderId()); + // 订单状态-1.删除 0.已取消 1.待支付 2.待核销 3.已完成 + if(null == order || order.getDelFlag() == -1){ + return R.fail("订单不存在"); } + + if (order.getOrderStatus() == 0) { + return R.fail(AppErrorConstant.CANCEL_CANCEL_ORDER); + } else if (order.getOrderStatus() == 1) { + //删除待支付超时取消延时任务 + redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId()); + remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+order.getOrderId()); + order.setOrderStatus(0); + order.setCancelTime(new Date()); + order.setCancelType(1); + this.saveOrUpdate(order); + } else if (order.getOrderStatus() == 2) { + // 2.待核销 + order.setOrderStatus(0); + order.setCancelTime(new Date()); + order.setCancelType(1); + this.saveOrUpdate(order); + } else { + return R.fail(AppErrorConstant.CANCEL_ERROR_ORDER); + } + return R.ok(); } /** @@ -6732,38 +6718,6 @@ } return new ArrayList<>(); } - /** - * 后台取消订单 - * 订单状态变为已取消 不退款 - * @param dto - */ - @Override - public R cancelOrderBySys(CancelOrderDTO dto) { - Order order = this.getById(dto.getOrderId()); - // 订单状态-1.删除 0.已取消 1.待支付 2.待核销 3.已完成 - if(null == order || order.getDelFlag() == -1){ - return R.fail("订单不存在"); - } - - if (order.getOrderStatus() == 0) { - return R.fail(AppErrorConstant.CANCEL_CANCEL_ORDER); - } else if (order.getOrderStatus() == 1) { - //删除待支付超时取消延时任务 - redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId()); - remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+order.getOrderId()); - order.setOrderStatus(0); - order.setCancelTime(new Date()); - this.saveOrUpdate(order); - } else if (order.getOrderStatus() == 2) { - // 2.待核销 - order.setOrderStatus(0); - order.setCancelTime(new Date()); - this.saveOrUpdate(order); - } else { - return R.fail(AppErrorConstant.CANCEL_ERROR_ORDER); - } - return R.ok(); - } @Override public R refundOrderBySys(CancelOrderDTO dto) { @@ -6778,10 +6732,10 @@ //删除待支付超时取消延时任务 redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId()); remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+ order.getOrderId()); - this.autoCancelOrder( order.getOrderId()); + this.autoCancelOrder( order.getOrderId(), 1); } else if (order.getOrderStatus() == 2) { // 2.待核销 -> 订单退款 - this.refundOrder( order.getOrderId()); + this.refundOrder( order.getOrderId(), 1); } else { return R.fail("已核销订单不能退款"); } @@ -6789,6 +6743,67 @@ } +// @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 + private void autoTimeCancelOrder(Order order) { + String orderId = order.getOrderId(); + order.setOrderStatus(0); + order.setCancelTime(new Date()); + order.setCancelType(1); + this.saveOrUpdate(order); + //活动订单回退库存 + if (order.getOrderFrom() == 2) { + List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId); + if (orderGoodsList != null && !orderGoodsList.isEmpty()) { + for (OrderGoods orderGoods : orderGoodsList) { + //redis库存控制极简版 + String goodsLock = "goods_lock_" + order.getActivityId() + "_" + orderGoods.getGoodsId(); + RLock redissonLock = redissonClient.getLock(goodsLock); + try { + redissonLock.lock(30, TimeUnit.SECONDS); + Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId()); + if(null == surpNum){ + surpNum = 0; + } + redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum()); + } finally { + redissonLock.unlock(); + } + //改变活动库存 + AGStockChangeDto agStockChangeDto = new AGStockChangeDto(); + agStockChangeDto.setActivityId(order.getActivityId()); + agStockChangeDto.setGoodsId(orderGoods.getGoodsId()); + agStockChangeDto.setChangeType(1); + agStockChangeDto.setChangeNum(orderGoods.getBuyNum()); + agStockChangeDto.setShopId(order.getShopId()); + agStockChangeDto.setUserId(order.getUserId()); + remoteActivityService.changeActivityStock(agStockChangeDto); + //删除活动记录 + ActivityRecord activityRecord = new ActivityRecord(); + activityRecord.setActivityId(order.getActivityId()); + activityRecord.setGoodsId(orderGoods.getGoodsId()); + activityRecord.setUserId(order.getUserId()); + activityRecord.setOrderTime(order.getCreateTime()); + remoteActivityService.delActivityRecord(activityRecord); + } + } + } else { + if (order.getCouponMoney().compareTo(BigDecimal.ZERO) > 0) { + //回退优惠券 + List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId); + if (orderGoodsList != null && !orderGoodsList.isEmpty()) { + StringJoiner memberCouponSJ = new StringJoiner(","); + for (OrderGoods orderGoods : orderGoodsList) { + memberCouponSJ.add(orderGoods.getCouponId()); + } + if (memberCouponSJ != null) { + remoteCouponService.backMemberCoupon(memberCouponSJ.toString()); + + } + } + } + } + } + @Override public List<MgtThirdOrderPageVo> pageMgtThirdOrder(Page<MgtThirdOrderPageVo> page, MgtThirdOrderPageDto dto) { //如果区域代码不为null获取对应的商户id -- Gitblit v1.7.1