订单系统设计
总体设计
1.每次下单时间少于3秒 2.库存验证不存在多买的情况 3.订单能够按照不同供应商进程拆分 4. 物流信息能够回传
订单状态机设计
1.待系统审核 2.待支付 3.待发货 4.待签收 5.已完成 6.订单关闭
订单状态流转如下图示:
1)审核失败 2)未支付(待支付24小时) 3)支付失败 4)配送失败 以上4种状态为订单关闭原因
- 在审核时有以下情况 审核失败
1) 同一用户在过去一个月有3次退单
2) 用户使用货到货付款拒付
3) 用户配送地址3次以上无法送达, 电话无法联系
4) 与配送人员冲突
5) 其他渠道黑名单
- 库存设计
1.针对促销商品: 这里采用的是在付款时锁定库存,在支付成功时候扣减库存,支付失败释放库存。当然没有库存时在商品详情页面不能加入购物车 既能确定购买意向,又不影响其他用户,买卖手慢无,技术也好处理功能逻辑
2.针对普通商品: 单占用库存(O)当生成订单时,可用库存数量减少,订单占用库存(Order Occupied Inventory)数量增多,变化的数量即订单中的产品数量,这个很容易理解:订单的生成和库房的发货在时间上是异步的。这样做的优点在于:保证已经生成订单的库存,这部分客户可以顺利收货;而且客户在下订单时,能够保证有产品发货。若不设立订单占用库存,则会产生客户下订单后,库存发现无货可发的尴尬情况。而处理订单时,针对的只是已经被订单所占用的库存,与前台的销售无关。订单出库后,系统中扣减的也只是订单所占用库存
- 订单拆分
由于在电商网站中存在多个的供应商,一张订单时能够包括多个供应商,因此需要按照不同的供应商进行拆单,形成子父订单概念