From d2c2889ad6405c66ac35ff68ef2438ef7aa65974 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期四, 23 五月 2024 17:20:36 +0800
Subject: [PATCH] 1.开启结束秒杀 2.添加redisson配置 3.发票基础代码生成

---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java |   47 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 46 insertions(+), 1 deletions(-)

diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java
index e39abe7..6511b81 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java
@@ -2,10 +2,12 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.constant.CacheConstants;
 import com.ruoyi.common.core.enums.StartStatusEnum;
 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.goods.controller.management.DTO.GoodsSeckillDTO;
 import com.ruoyi.goods.controller.management.DTO.GoodsSeckillQuery;
 import com.ruoyi.goods.controller.management.DTO.GoodsSeckillUpd;
@@ -39,7 +41,7 @@
 
     private final IGoodsSkuService goodsSkuService;
     private final OrderClient orderClient;
-
+    private final RedisService redisService;
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void addGoodsSeckill(GoodsSeckillDTO dto) {
@@ -117,4 +119,47 @@
         vo.setNumberOfPurchasedMembers(num);
         return vo;
     }
+
+    /**
+     * 开始秒杀
+     *
+     * @param seckillId 秒杀id
+     */
+    @Override
+    public void startSeckill(Long seckillId) {
+        log.info(">>>>>>>>>>>>>>>>>>>>{}秒杀开始<<<<<<<<<<<<<<<<<<<<", seckillId);
+        GoodsSeckill goodsSeckill = this.getById(seckillId);
+        //秒杀商品不能为空且状态为未开始
+        if (StringUtils.isNotNull(goodsSeckill)
+                && goodsSeckill.getStartStatus().equals(StartStatusEnum.NOT_STARTED)) {
+            //开始秒杀
+            this.lambdaUpdate().set(GoodsSeckill::getStartStatus, StartStatusEnum.STARTED)
+                    .eq(GoodsSeckill::getId, seckillId).update();
+//            将秒杀商品放入缓存
+            redisService.setCacheObject(
+                    CacheConstants.SECKILL_GOODS + goodsSeckill.getId(),
+                    goodsSeckill.getSeckillStock());
+        }
+        //TODO websocket 推送秒杀开始消息
+    }
+
+    /**
+     * 结束秒杀
+     *
+     * @param seckillId 秒杀id
+     */
+    @Override
+    public void endSeckill(Long seckillId) {
+        log.info(">>>>>>>>>>>>>>>>>>>>{}秒杀结束<<<<<<<<<<<<<<<<<<<<", seckillId);
+        GoodsSeckill goodsSeckill = this.getById(seckillId);
+        if (StringUtils.isNotNull(goodsSeckill)
+                && goodsSeckill.getStartStatus().equals(StartStatusEnum.STARTED)) {
+            //结束秒杀
+            this.lambdaUpdate().set(GoodsSeckill::getStartStatus, StartStatusEnum.ENDED)
+                    .eq(GoodsSeckill::getId, seckillId).update();
+//            将秒杀商品从缓存中移除
+            redisService.deleteObject(CacheConstants.SECKILL_GOODS + goodsSeckill.getId());
+        }
+        //TODO websocket 推送秒杀结束消息
+    }
 }

--
Gitblit v1.7.1