diff --git a/src/main/java/com/hmdp/service/impl/VoucherServiceImpl.java b/src/main/java/com/hmdp/service/impl/VoucherServiceImpl.java index 8a8a3f6..77a09db 100644 --- a/src/main/java/com/hmdp/service/impl/VoucherServiceImpl.java +++ b/src/main/java/com/hmdp/service/impl/VoucherServiceImpl.java @@ -1,19 +1,21 @@ package com.hmdp.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.hmdp.config.RedissonConfig; import com.hmdp.dto.Result; import com.hmdp.entity.Voucher; import com.hmdp.mapper.VoucherMapper; import com.hmdp.entity.SeckillVoucher; import com.hmdp.service.ISeckillVoucherService; import com.hmdp.service.IVoucherService; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; +import static com.hmdp.utils.RedisConstants.SECKILL_STOCK_KEY; + /** *

* 服务实现类 @@ -26,6 +28,8 @@ import java.util.List; public class VoucherServiceImpl extends ServiceImpl implements IVoucherService { @Resource private ISeckillVoucherService seckillVoucherService; + @Resource + private StringRedisTemplate stringRedisTemplate; @Override public Result queryVoucherOfShop(Long shopId) { @@ -47,5 +51,7 @@ public class VoucherServiceImpl extends ServiceImpl impl seckillVoucher.setBeginTime(voucher.getBeginTime()); seckillVoucher.setEndTime(voucher.getEndTime()); seckillVoucherService.save(seckillVoucher); + // 顺便把 stock 存到 redis 中 + stringRedisTemplate.opsForValue().set(SECKILL_STOCK_KEY + voucher.getId(), voucher.getStock().toString()); } } diff --git a/src/main/resources/seckill.lua b/src/main/resources/seckill.lua new file mode 100644 index 0000000..603d3d1 --- /dev/null +++ b/src/main/resources/seckill.lua @@ -0,0 +1,16 @@ +--- +--- Generated by EmmyLua(https://github.com/EmmyLua) +--- Created by fang. +--- DateTime: 2025/3/25 9:43 +--- +--- 将创建用户购买优惠券订单的前部分验证放在脚本中 + +--- 已经在创建秒杀券的时候就把stock存进redis了这里直接取就行 +local voucherID = ARGV[1] +local userID = ARGV[2] +local orderID = ARGV[3] + +local stockKey = "seckill:stock:" .. voucherID +local orderKey = "seckill:order:" .. voucherID + +local stock = redis.call("get", stockKey); \ No newline at end of file