From 464254ba0e542c22fac68c7512f06a9a8df34b28 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期四, 13 六月 2024 21:09:18 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java |   37 +++++++++++++++++++++++++++++++++++--
 1 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
index 1f887b0..5b27bff 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
+import com.ruoyi.common.core.constant.CacheConstants;
 import com.ruoyi.common.core.constant.SecurityConstants;
 import com.ruoyi.common.core.enums.OrderFromEnum;
 import com.ruoyi.common.core.enums.OrderStatusEnum;
@@ -13,6 +14,7 @@
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.page.BeanUtils;
 import com.ruoyi.common.core.utils.page.PageDTO;
+import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.order.controller.management.dto.MgtMallOrderQuery;
 import com.ruoyi.order.controller.management.dto.MgtOrderConfirmShipmentDTO;
 import com.ruoyi.order.controller.management.vo.MgtMallOrderVO;
@@ -55,10 +57,16 @@
 import java.util.Collection;
 import java.util.List;
 import java.util.Set;
+import java.util.concurrent.TimeUnit;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
+
+import lombok.Synchronized;
+import org.apache.commons.beanutils.BeanUtils;
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
 import org.springframework.stereotype.Service;
 
 /**
@@ -92,8 +100,16 @@
 
     @Resource
     private SysUserClient sysUserClient;
+
     @Resource
     private IOrderReturnRequestService orderReturnRequestService;
+
+    @Resource
+    private RedissonClient redissonClient;
+
+    @Resource
+    private RedisService redisService;
+
 
     @Override
     public void saveOrderOne(OrderDTO OrderDTO) {
@@ -207,6 +223,7 @@
     }
 
     @Override
+    @Synchronized
     public MemberTiOrderVO saveMemberOrder(MemberOrderDTO memberOrderDTO) {
 
         MemberTiOrderVO memberOrderVO=new MemberTiOrderVO();
@@ -253,8 +270,22 @@
             pice=goodsSku.getPrice();
         }
         if (memberOrderDTO.getOrderFrom()==2){
-            order.setOrderFrom(OrderFromEnum.SNAP_ORDERS);
             GoodsSeckill data = goodsSkuClient.getGoodsSeckillOne(memberOrderDTO.getGoodsSkuId(), SecurityConstants.INNER).getData();
+      /*      String goodsLock = "goods_lock_" + CacheConstants.SECKILL_GOODS + data.getId();
+            RLock redissonLock = redissonClient.getLock(goodsLock);
+            Integer surpNum = 0;
+            try {
+                redissonLock.lock(30, TimeUnit.SECONDS);
+                surpNum = redisService.getCacheObject(CacheConstants.SECKILL_GOODS + data.getId());
+                if (surpNum == null || surpNum < memberOrderDTO.getGoodsQuantity()) {
+                    throw new ServiceException("商品已被抢完");
+                }
+
+            }catch (Exception e){
+                throw new ServiceException("reids 出错");
+            }*/
+            order.setOrderFrom(OrderFromEnum.SNAP_ORDERS);
+
             GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData();
             memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
             memberOrderVO.setPrice(goodsSku.getPrice());
@@ -275,7 +306,7 @@
             order.setSkuName(goodsSku.getSkuName());
             order.setPrice(data.getSeckillPrice());
             order.setCoverPic(goodsSku.getCoverPic());
-
+            /*redisService.setCacheObject(CacheConstants.SECKILL_GOODS + data.getId(), surpNum - memberOrderDTO.getGoodsQuantity());*/
         }
         if (memberOrderDTO.getOrderFrom()==3){
             order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS);
@@ -340,6 +371,8 @@
         memberOrderVO.setReceiverCity(order.getReceiverCity());
         memberOrderVO.setReceiverDetailAddress(order.getReceiverDetailAddress());
         memberOrderVO.setReceiverphone(order.getReceiverphone());
+        Integer delayTime = 30;
+        redisService.setCacheObject(CacheConstants.ORDER_AUTOMATIC_CANCEL + "-" + order.getId(), order.getId() , delayTime.longValue(), TimeUnit.MINUTES);
 
         return memberOrderVO;
     }

--
Gitblit v1.7.1