1 下单过程
- 预订者浏览某个已发布的会议;
- 进入会议的详情页面,该页面显示了所有可预订的座位分类信息;
- 预订者选择好要预订的座位分类,录入每个分类的预定数量;
- 预订者点击提交按钮,提交下单请求到Server端;
2 Server端订单处理过程
- Server端Controller提交处理订单的命令到分布式消息队列,然后后台的Command Processor就可以消费该命令并异步处理订单了。核心处理步骤:
- 生成订单(初始状态);
- 扣减库存(内部有预扣逻辑);
- 更新订单状态;
- Server端Controller发送命令后,立即重定向页面到查单订单处理结果页面,该页面会以轮训的方式查看订单处理结果;
3 用户等待订单处理结果
- 如果下单成功(库存足够),预订者被导航到支付页面进行支付;预订者可以选择支付,也可以放弃支付;
- 如果下单失败(库存不足),则提示用户下单失败,因为库存不足;
- 如果轮训等待超时,则告诉用户暂时无法知道订单处理状态,然后当前页面继续定时(5s)轮训订单处理结果;
4 用户支付订单
- 如果支付成功,则提示预订者订单处理完成,交易完成;
- 如果拒绝支付,则关闭订单;
- 如果超过规定时间(15分钟)未支付,则视作订单已过期,系统自动回收订单所预定的座位;
5 流程结束