From 17f5f6052c57c1c2880a10350fe5c43611836cdd Mon Sep 17 00:00:00 2001
From: jiangqs <343695869@qq.com>
Date: 星期二, 25 七月 2023 21:38:54 +0800
Subject: [PATCH] bug

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 58 insertions(+), 2 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 9cd4c87..ca84762 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
@@ -3779,8 +3779,64 @@
         queryWrapper.eq(Order::getOrderStatus,1);
         List<Order> orderList = this.list(queryWrapper);
         if(orderList!=null&&!orderList.isEmpty()){
-            for(Order order : orderList){
-                autoCancelOrder(order.getOrderId());
+            for(Order  order: orderList){
+                autoTimeCancelOrder(order);
+            }
+        }
+    }
+
+    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());
+                        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());
+
+                    }
+                }
             }
         }
     }

--
Gitblit v1.7.1