商城下单流程

做开发肯定会接到商城相关的项目吧
说说我的思路
普通下单:
1.先判断提交过来的数据是否正确(包括库存是否足够,购买量<=最大限购量)
2.预扣库存
3.创建订单
4.让用户支付(10分钟有效,超过时间则取消订单,把预扣库存放回库存中,这步通过命令行方式进行监控)

秒杀下单
1.把秒杀的商品信息放入redis中,关键参数就可以了
2.点击抢购把商品ID传过来,判断是否还有库存,有则继续执行(如果没有库存,大多数用户已经被挡在这步了。如果还要抗压的话可以在点击抢购时弄个验证码,就会在同一秒钟时间减少部分用户请求。如果已抢购则不能再次抢购。)
3.redis减少商品库存
4.把用户id依次放入未处理的数组中存入redis,并用redis的hash数据类型记录这个用户存入数组中的顺序(方便查看排队中前面的人数)
4.把用户创建订单放入队列中,让队列异步去处理,处理完订单后把处理的顺序存入redis中,把这个用户从未处理的数组中移除
5.告诉用户订单排队中。。。(前面排队人数=用户所占的顺序-已处理到的循序。如果要查询订单是否创建成功则排队用户ID是否在为处理的数组中,如果创建成功跳转订单页面让用户支付,支付时间10分钟有效,和普通下单的支付步骤一样)

以上内容纯属个人理解,如果错误之处还望指出。


更新于 2024/01/03 14:13:00

其实用不着搞那么麻烦,放队列里面处理就好了。