-
Notifications
You must be signed in to change notification settings - Fork 35
订单中心设计
1.浏览商品
2.商品详情
3.加入购物车(此步骤非必须)
4.去结算
5.填写收货地址
6.提交订单
7.支付
8.等待发货
1)收货地址;2)发货方式;3)发票信息;4)买家留言;
买家提交订单后,还会给出一个最终的确认页面,用户确认后,订单才会真正提交。
一个疑问:关于支付方式的选择,应该在提交订单时选择还是提交后再选择?暂定结论:提交后再指定支付方式;
- 校验买家是否有效;
- 校验商品是否有效;
- 生成订单(状态为初始状态对买家不可见);
- 预扣库存(保留20分钟,可配置)
- 订单状态变为:等待买家付款
- 扣库存
- 订单状态变为:买家已付款
- 恢复预扣的库存
- 订单状态变为:交易关闭
- 订单状态变为:卖家已发货
- 订单状态变为:交易成功
- 订单状态变为:退款中的订单
- 订单状态变为:交易关闭
1.如何防止恶拍?恶拍的意思是买家下单后不付款,故意把你的库存耗光。
**解决方案:**黑名单、热点监控;
2.临界点问题:当用户付款后正好订单过期了怎么办?
**解决方案:**加个缓冲时间,只要过期后1分钟(可配置)内收到支付成功的通知,也算订单交易成功;
3.是否需要支持两种减库存方式的可配置:拍减库存、付减库存?
**解决方案:**需要支持,以满足不同的业务场景,有些商品希望拍减库存,有些希望付减库存。
购物车(聚合根):
买家账号ID、明细列表
购物车明细(实体):
商品ID、SKU ID、商品数量、添加时间、最后修改时间、商品快照、SKU快照
订单(聚合根):
订单号、类型、来源、状态、买家ID、支付方式、明细、运费、总价、创建时间、最后修改时间、支付时间、收货地址、发货方式、发票信息、买家留言、联系人、联系电话
订单明细(实体):
商品ID、SKU ID、SKU数量、SKU价格、总价、添加时间、最后修改时间、商品快照、SKU快照
订单变更记录(聚合根):
订单ID、变更内容、变更时间
初始状态、等待买家付款、买家已付款、卖家已发货、交易成功、交易关闭、退款中的订单
除了订单主状态外,还有一些其他的子流程状态:支付状态、库存状态、物流状态,这些子状态具体会从支付系统、库存中心、物流中心同步过来。
另外退货、退款这两个场景,也会有对应的业务流程,以及流程状态。
可销售库存、可用库存两个。
比如可销售库存为100,然后当前预扣的有20,那可用库存就是80
预扣时,减少可用库存;付款后,减少可销售库存;