B2C自营商城的订单设计方案

16 评论 45810 浏览 333 收藏 6 分钟

去年我们的美妆社区APP,上线了自有商城。之后经过多次版本迭代,商城系统的模块已经基本健全,值此时间分享一些经验出来,希望可以共同交流。

有了商品之后才有可能产生交易。所以先讲了《B2C自营商城的商品设计方案》,这篇讲解我们的订单模块怎么设计。

一、订单是什么

订单的本意是指你购买商品之后生成的单据凭证,只是在电商中,它是虚拟的。

主流的下单方式

整个电商体系中常见的下单方式有2种,购物车下单直接下单

淘宝称之为购物车结算和立即购买,正常情况下你可以任选一种去购物。但是在秒杀之类的特殊场景中,只支持直接下单。

京东也称之为购物车结算和立即购买,不同的是,正常情况下你必须通过购物车去结算,秒杀情况下你可以选择立即购买和购物车结算。

订单的类型

由于不同的下单方式,其实导致订单的类型有2种。

简单来说购物车结算的订单肯定包含了基于sku不同的多个子订单,而每个子订单包含n件同一sku。而立即购买的订单是包含n件同一sku。

然后淘宝的PM因为后续增加了购物车结算这一下单方式,而不得不想出一套规则,那就是父订单和子订单。当然还有很多其他原因。

此次购物,整体称之为交易,生成了一个父订单号。如果它是购物车结算,那么有N个子订单。如果他是立即购买,那么只有1个子订单。

从技术角度来定义,那就是trade称为父订单,order称为子订单,或者说trade是一笔交易单,子订单是每笔交易中的商品明细单,trade与order可以是一对多的关系,trade是由使用购物车生成。

当一笔交易只有一个子订单,那么tid=oid,这个时候主要看trade结构体里面的内容,当一笔交易有多笔子订单(类似于购物车购买方式),那么tid=oid,这个时候主要看order结构体里面的内容。

二、订单的逻辑拆分

根据以上的规则,订单逻辑上面应该按照这样的方式来拆分。

基于这样的设计方式,才可以去支持退款退货,以及设计活动、优惠券等营销功能。

三、订单的金额拆分

进而得到订单的金额是如何拆分的,其中营销得来的优惠拆分到每一个子订单,以及每一个sku的实际支付单价。

四、订单状态机

订单的状态是一个很复杂的事情,决定着用户,商家的每一个操作。

不含退款退货

如果你们的商城比较特殊,无需提供退款退货功能,那么订单状态机比较简单。

包含退款退货

那么比较复杂,相当于多了一层状态机。具体可以查看我的另外一篇文章《如何绘画状态机来描述业务变化》。

五、总结

订单模块的架构设计,以上基本上把主要的内容讲了一遍。按照这样的方式去设计,至少可以兼顾大部分商城的订单需求。

以上内容可以点击我的订单模块原型来详细查看。

至于订单模块和商品模块,和营销模块的耦合,后续的文章会再讲讲。

相关阅读

B2C自营商城的商品设计方案

B2C自营商城的优惠券设计方案(上篇)

#专栏作家#

浪子,人人都是产品经理专栏作家,业务型PM,浪子PRD系列51prd.com,公众号langzisay。

本文由 @浪子 原创发布于人人都是产品经理。未经许可,禁止转载。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
海报
评论
评论请登录
  1. 当一笔交易只有一个子订单,那么tid=oid,这个时候主要看trade结构体里面的内容,当一笔交易有多笔子订单(类似于购物车购买方式),那么tid=oid,这个时候主要看order结构体里面的内容。

    这句里怎么有2个tid=oid?

    来自上海 回复
  2. 原型还要收费

    来自山东 回复
  3. 如果能结合实例就好了,订单是根据什么进行拆分,店铺,折扣,优惠券

    回复
  4. 钱款全退为什么sku会有未全退的情况,一个订单SKU退完了,钱才全退的吧

    来自四川 回复
    1. 一个订单的所有SKU都申请过退款并退了钱,不代表所有的钱都退了。
      你可以去淘宝或者有赞等去下一个多sku订单试试。

      来自江苏 回复
    2. 一个父订单下面的子订单全部申请退款,不应该是退所有实际支付的钱吗(包邮的情况下)?非包邮要扣运费?希望大佬点拨下

      来自浙江 回复
  5. 你的文章我都读了,迷妹迷妹 🙂

    来自江苏 回复
    1. 好难得,tks 😳

      来自上海 回复
  6. 还是没有明白父订单和子订单的意思 求赐教啊

    回复
    1. 一个订单里面如果包含多个物品,这些物品可以根据某些规则分成一些子订单,这样便于后期对这些分出来的子订单进行特殊的操作:评论啊/退换货/啊。。。。我理解的

      来自四川 回复
    2. 去淘宝用购物车下单,使用优惠券。
      然后退款其中的个别商品。
      跑几次,就能理解父订单和子订单的运用场景了。

      来自上海 回复
    3. 子订单号一般是背后的逻辑吧?对客展示一般只展示一个父订单号吧?

      来自江苏 回复
    4. 嗯,通常是这样。但是不展示子订单号,不代表不展示子订单信息和子订单功能。

      来自江苏 回复
    5. 感谢,我也是这么理解,正准备提问的

      来自浙江 回复
  7. 很有帮助,感谢浪子,一系列电商产品的经验分享干货十足啊,作为电商产品新人受益颇多

    来自湖北 回复
    1. 哈哈,有用就行。谢谢支持哈

      回复