2025年探讨一次订单拆单流程

探讨一次订单拆单流程欢迎大家关注公众号 JAVA 前线 查看更多精彩分享文章 主要包括源码分析 实际应用 架构思维 职场分享 产品思考等等 同时欢迎大家加我微信 java front 一起交流学习 1 文章概述 消费者在购物时 电商平台会生成订单 订单相当于是购物者和电商平台签订的合同 后续电商平台会进行履约

大家好,我是讯享网,很高兴认识大家。

欢迎大家关注公众号「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」一起交流学习

小讯
上一篇 2025-02-27 18:18
下一篇 2025-01-29 11:13

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/21601.html