探讨一次订单拆单流程

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习


1 文章概述

消费者在购物时,电商平台会生成订单。订单相当于是购物者和电商平台签订的合同,后续电商平台会进行履约。

消费者一般只关心买什么东西、付多少钱、货什么时候送达,对底层订单逻辑并不关心,对订单拆单这个概念也比较陌生,本文我们探讨一次基本订单拆单流程。

需要说明真实拆单场景非常复杂,不同公司拆单策略也不同,本文只是讲解一个简单实例,复杂场景需要根据策略具体分析。本文使用的是测试数据仅供演示。


2 一次拆单流程

2.1 购物车

小明在电商平台购物车增加六件商品:

  • 商家S1(平台自营)
    • A商品:冰箱 1个 100元
    • B商品:纸巾 1包 20元
    • C商品:书本 1本 20元
    • D商品:饼干 1盒 20元
  • 商家S2(第三方商家)
    • E商品:充电器 1个 20元
    • F商品:显示器 1个 20元

2.2 第一次拆单(财务维度)

小明在购物车选择上述商品点击结算按钮,发生一次拆单:

  • 拆单次数:第一次
  • 拆单维度:财务维度
  • 解决问题:本次购买行为能否合成一个父订单

S1和S2是两个不同商家,在财务上完全独立,所以不能作为同一个父订单,需要拆成两个父订单:

  • orderId_1:对应商家S1
  • orderId_2:对应商家S2

2.3 第二次拆单(物流维度)

小明点击提交订单按钮发生第二次拆单:从节省物流成本考虑,商家希望将同一个用户同一次购买的所有商品,放在同一个包裹。但是由于商品体积、数量、存储条件不同,仓库位置不同,不可以放在同一个包裹,所以需要拆单。

  • 拆单次数:第二次
  • 拆单维度:物流维度
  • 解决问题:同一笔父订单商品能否放在一个包裹

对于S1自营商家,订单系统调用调度中心拆单服务:

  • 体积因素:冰箱体积远大于其它商品,所以独立成单
  • 仓库位置:纸巾在上海仓库,书本和饼干在杭州仓库,纸巾独立成单,书本和饼干属于同一个子单

对于S2第三方商家,E和F商品分别由不同供应商供货,因为不同供应商各自发货,所以E和F各自独立成单。需要注意在财务维度电商平台还是与S2商家结算。

  • order_1
    • sub_order_id_1-1:A冰箱
    • sub_order_id_1-2:B纸巾
    • sub_order_id_1-3:C书本、D饼干
  • order_2
    • sub_order_id_2-1:E充电器
    • sub_order_id_2-2:F显示器

2.4 优惠策略

小明在下单时使用以下优惠策略:

  • 平台优惠
    • 商品AF参与跨店满120元减10元活动
  • 店铺优惠
    • 商品BCD参与A店满60元减9元活动
  • 用户权益
    • 注册时赠送10个积分抵扣5元

优惠金额按照商品价格比例分摊:

  • A冰箱
    • 平台优惠:(100/120) x 10 = 8.33
    • 用户权益:(100/200) x 5 = 2.5
  • B纸巾
    • 店铺优惠:(20/60) x 9 = 3
    • 用户权益:(20/200) x 5 = 0.5
  • C书本
    • 店铺优惠:(20/60) x 9 = 3
    • 用户权益:(20/200) x 5 = 0.5
  • D饼干
    • 店铺优惠:(20/60) x 9 = 3
    • 用户权益:(20/200) x 5 = 0.5
  • E充电器
    • 用户权益:(20/200) x 5 = 0.5
  • F显示器:
    • 平台优惠:(20/120) x 10 = 1.67
    • 用户权益:(20/200) x 5 = 0.5

2.5 订单支付

在支付时小明不小心退出支付页,如果点开订单列表再完成支付时会看到两笔父订单,付款时需要支付两次:

  • orderId_1:89.17 + 16.5 x 3 = 138.67
  • orderId_2:19.5 + 17.83 = 37.33

2.6 物流配送

订单支付完成后15-30分钟,下推到调度中心。为什么不是支付完成立即下推?因为用户在支付之后短时间可能取消订单,等一段时间再下推,取消订单概率一定程度上会降低。

对于S1自营商家,订单下推经过调度中心,仓储系统、配送系统之后回传物流单号至订单中心。

对于S2第三方商家,如果商家自己发货,商家从供应商处获取物流单号后,通过订单管理后台回填物流单号。


3 流程分析

3.1 拆单维度

订单拆单总体上分为财务物流两个维度。财务维度拆单主要解决问题是:本次购买行为能否合成一个父订单,常见拆单指标是不同商家拆分为不同父订单。

物流维度主要解决问题是:同一个父订单商品能不能放在同一个包裹,常见拆单指标包括:商品体积、数量、存储条件,仓库位置,供应商等等。


3.2 子订单

父订单有多个子订单,子订单非常重要,后续订单履约按照子订单维度流转,子订单至少需要承载如下信息:

  • 父订单Id
  • 子订单Id
  • skuId
  • 购买数量
  • sku单价
  • 分摊后平台优惠金额
  • 分摊后店铺优惠金额
  • 分摊后用户权益抵扣金额
  • 实付金额
  • 供应商
  • 订单状态
  • 退款状态
  • 物流单号

4 文章总结

第一本文引出订单拆单这个概念,第二本文通过一次购物流程讲解了拆单发生原因和时机,优惠策略计算和拆单数据,第三本文对拆单流程进行分析以及子订单表如何设计。

需要说明真实拆单场景非常复杂,不同公司拆单策略也不同,本文只是讲解一个简单实例,复杂场景需要根据策略具体分析,总体上可以从财务和物流两个维度思考。


欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值