新零售 SaaS 架构:订单履约系统的概念模型设计
订单履约系统的概念模型
![](https://static001.geekbang.org/infoq/45/45adc80ff2f000257bf6bdf70b5c937f.png)
订单:客户提交购物请求后,生成的买卖合同,通常包含客户信息、下单日期、所购买的商品或服务明细、价格、数量、收货地址以及支付方式等详细信息。
子订单:为了更高效地进行履约,大订单可能会被拆分成多个子订单,子订单会根据商品类型、配送地址、仓库位置或供应商等因素进行拆分。
发货单:根据子订单生成,指导完成订单的具体履约任务,如商品的拣选、包装、出库、配送等。
在整个订单履约过程中,订单是起始,子订单是订单拆分的结果,用于处理更细粒度的履约逻辑,发货单则是具体的执行单据,指导商品从仓库到客户手中的具体操作任务。这三个模型层层递进,确保整个履约链条的高效管理。
订单拆分场景
单门店履约场景
在连锁模式下,系统会自动根据用户的收货地址匹配最近的门店。如果匹配到某个门店,且门店库存充足,能完成履约服务。在这种情况下,不会对订单进行拆分,直接分配给门店进行发货配送。
![](https://static001.geekbang.org/infoq/59/5904db38f92242ebcf2503d6d1094681.png)
多仓库履约场景
有些商家有多个仓库,不同的商品存放在不同的门店或仓库里。
当用户下单时,如果订单内的商品在不同的仓库,就需要拆分订单,把拆分后的子订单匹配到对应的仓库中,然后根据商品的数量进行备货和出库。
![](https://static001.geekbang.org/infoq/e5/e5e237bcf0dc105084040d850144d95c.png)
按订单类型、商品类型拆分
由于订单和商品类型的差异,我们需要将其拆分成不同类型的子订单。
商品中包括跨境商品、分销商品等,我们会根据不同的商品类型自动拆分。
对于生鲜水果、冷链食品以及其他易碎物品,由于它们对快递的保护性和及时性有较高的要求,我们需要单独包装并发货。如果订单中包含这类商品,会对订单进行拆分处理。
![](https://static001.geekbang.org/infoq/fe/feebdf7e7ba002af6a168f46d360eed7.png)
按物流场景拆分
物流公司通常对包裹的重量和体积有限制。如果订单中的商品超过这些限制,就需要将订单拆分为多个发货单来发货。
从成本的角度考虑,在某些情况下,将大量商品分成多个发货单可能会比一个大包裹发货更省钱。
客户可能会有特殊的物流要求,如分批送达或特定时间送达,需要将订单拆分为多个发货单。例如预售商品与其他商品一起下单,需要等到预售商品到货后再发货。
![](https://static001.geekbang.org/infoq/4d/4d6a930ab072ef9da1b03cd86ad60214.png)
文章转载自:架构师汤师爷
评论