中台后台配置秒杀活动如下图:
业务流程图:
流程说明:
用户在点击秒杀按钮,选择规格尺寸,数量后,点击确认最终跳转到确认订单页。
在点击"确认"按钮后,api会把相关参数封装后调用促销结算接口。
1.促销这边首先做基本参数的校验判断,然后是单用户每次最大购买数量,单用户最大购买次数判断,秒杀活动时间,秒杀会员范围判断。
2.促销这边判断完以后再做计算商品秒杀金额,并组装前端商品信息,是否包邮信息,并将这些信息返回给api.
3.提交订单,调用订单系统保存订单接口。
4.保存订单接口先做订单主信息,订单明细信息的校验。然后是做防重复提交,前端提交订单时,传递的checkId,用于防止后台重复处理,如下图所示。
5.生成订单号,调用促销预占秒杀活动库存接口。
6.预占秒杀活动接口先判断秒杀活动是否存在,活动状态是否是进行中,如果是进行中则计算秒杀库存,redis中存有秒杀预占库存,秒杀一次,秒杀预占库存就加秒杀商品的数量,加完以后跟秒杀活动库存比较,如果大于秒杀活动库存则提示库存不足,如果库存足够,则继续往下执行,会员购买次数加1,存入redis.返回true给订单。
7.订单中心如果捕捉到异常则调促销中心加库存接口。扣减订单真实库存,订单侧的预占库存加秒杀商品的数量,可用库存减秒杀商品的数量,订单商品总库存不变,一开始订单商品总库存==订单可用库存。如果订单侧扣减失败则要回滚库存,要调促销侧的加库存接口。
8.促销侧加库存接口逻辑是,活动库存加回来,会员购买次数减1.
9.订单侧扣减完库存,更新缓存和DB。
10.订单支付完成后,调订单接口,修改订单状态。
11.订单发货完成后,扣订单商品总库存。