From 0b806dd3c5159d8fac767cf027b0301e583d1161 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期三, 26 七月 2023 09:13:59 +0800
Subject: [PATCH] Merge branch 'master' of ssh://sinata.cn:20202/java/HongRuiTang into master

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |   88 +++++++++++++++++++++++++++++++++++++------
 1 files changed, 75 insertions(+), 13 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 52cceca..282deb4 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
@@ -236,8 +236,8 @@
                     couponType = appMemberCouponVo.getCouponType();
                     if (couponType == 1 && appMemberCouponVo.getMoneyThreshold() != null && appMemberCouponVo.getDiscountMoney() != null) {
                         moneyThreshold = appMemberCouponVo.getMoneyThreshold();
-                        if (goodsTotalPrice.compareTo(moneyThreshold) >= 0) {
-                            discountMoney = appMemberCouponVo.getDiscountMoney();
+                        discountMoney = appMemberCouponVo.getDiscountMoney();
+                        if (goodsTotalPrice.compareTo(moneyThreshold) >= 0 && goodsTotalPrice.compareTo(discountMoney)>0) {
                             goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
                             useCoupon = 1;
                             userCouponIdSet.add(memberCouponId);
@@ -252,13 +252,15 @@
                         appSureOrderGoodsVo.setMemberCouponId(memberCouponId);
                     } else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) {
                         discountMoney = appMemberCouponVo.getDiscountMoney();
-                        goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
-                        if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){
-                            goodsRealPrice = BigDecimal.ZERO;
+                        if(goodsTotalPrice.compareTo(discountMoney)>0){
+                            goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
+                            if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){
+                                goodsRealPrice = BigDecimal.ZERO;
+                            }
+                            useCoupon = 1;
+                            userCouponIdSet.add(memberCouponId);
+                            appSureOrderGoodsVo.setMemberCouponId(memberCouponId);
                         }
-                        useCoupon = 1;
-                        userCouponIdSet.add(memberCouponId);
-                        appSureOrderGoodsVo.setMemberCouponId(memberCouponId);
                     }
                 }
             }
@@ -302,10 +304,14 @@
                 appGoodsMemberCouponVoList = new ArrayList<>();
                 for(AppMemberCouponVo entity : appMemberCouponVoList){
                     if(StringUtils.isBlank(entity.getRelGoodsIds())||entity.getRelGoodsIds().contains(sureOrderGoodsVo.getGoodsId())){
-                        if(entity.getCouponType()!=1){
+                        if(entity.getCouponType()==1){
+                            if(entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice())<0&&entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice())<0){
+                                appGoodsMemberCouponVoList.add(entity);
+                            }
+                        }else if(entity.getCouponType()==2){
                             appGoodsMemberCouponVoList.add(entity);
-                        }else{
-                            if(entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice())<0){
+                        }else if(entity.getCouponType()==3){
+                            if(entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice())<0){
                                 appGoodsMemberCouponVoList.add(entity);
                             }
                         }
@@ -3787,8 +3793,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