guomengjiao 1 месяц назад
Родитель
Сommit
ccb8abe713

+ 2 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/marketing/seckill/service/ISeckillActivityProductService.java

@@ -92,4 +92,6 @@ public interface ISeckillActivityProductService {
     SeckillActivityAppVO flashSale(SeckillActivityProductBo bo);
 
     SeckillActivityAppVO startFlashSale(SeckillActivityProductBo bo);
+
+    void returnProductStock(Long seckillId);
 }

+ 11 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/marketing/seckill/service/impl/SeckillActivityProductServiceImpl.java

@@ -430,4 +430,15 @@ public class SeckillActivityProductServiceImpl implements ISeckillActivityProduc
         return vo;
     }
 
+    @Override
+    public void returnProductStock(Long seckillId) {
+        List<SeckillActivityProduct> seckillActivityProducts = baseMapper.selectList(new LambdaQueryWrapper<SeckillActivityProduct>().eq(SeckillActivityProduct::getSeckillId, seckillId));
+        for (SeckillActivityProduct seckillActivityProduct : seckillActivityProducts) {
+            //1、还库存到普通商品
+            productSkuSetStockService.returnActivityStock(seckillActivityProduct);
+            //创建信号量
+            createAndSetSemaphore(seckillActivityProduct);
+        }
+    }
+
 }

+ 13 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/marketing/seckill/service/impl/SeckillActivityServiceImpl.java

@@ -274,4 +274,17 @@ public class SeckillActivityServiceImpl implements ISeckillActivityService {
         }
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Boolean discard(Long id) {
+        SeckillActivity activity = loadById(id, true);
+        activity.setDiscard(!activity.getDiscard());
+        boolean flag = baseMapper.updateById(activity) > 0;
+        if (flag) {
+            //归还秒杀产品库存
+            iSeckillActivityProductService.returnProductStock(id);
+        }
+        return flag;
+    }
+
 }