这是一个秒杀方案
前台页面控制
- 进入抢购页面判断是否登录,没有登录请登录
- 倒计时 活动没有开始 抢购按钮不可点击 文案为活动尚未开始
- 页面通过倒计时的 控制 点击按钮是否可点击
- 点击抢购按钮 按钮置为灰色不可点击 并跳转至结果页面
- 从结果页面返回可再次发起抢购
- 抢购结束 按钮不可点击 文案改变为活动已经结束
接口
- 中间件判断是否登录 jwt
- 判断时间是否在活动范围内
redis 使用lua脚本判断
- 用户是否已经抢购成功(集合 不可重复购买) 有则返回
- 抢购成功的用户是否在冷静期(集合 可重复购买规则) 有则返回
- 查询库存是否有 没有库存 则返回
- 缓存减1是否大于0 增加推送到订单队列,冷静队列 或成功队列