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