查看原文
其他

手把手教你设计订单系统

高晖 产品刘 2022-10-16

作者:高晖  来源公众号:杂谈暖阁

订单基本概念

设计订单系统时包含几个大的方向需要考虑,这些内容决定了订单系统的稳定性和可持续性。

订单字段

订单字段包含了订单中需要记录的信息,他的作用主要用于沟通其他系统,为下游系统提供信息依据。

订单信息

订单号作为订单识别的标识,往往由一串数字组成,根据订单的增加进行自增,也可以在设计订单号的时候考虑订单加密设置(否则别人通过订单编号就能计算出你们家的销售量)。订单号后续用作订单唯一标示用于对接WMS和TMS时的订单识别。

订单状态机在下面章节会详细描述,这里不做展开。

用户信息

这里指购买人的相关信息,主要包括姓名、地址、手机号。O2O还会多一种情况就是自提点,这样地址则会变为自提点的地址。地址信息在后续会作用在WMS和TMS上用于区分区域和配送安排。

购买商品信息

这里指购买商品的基本信息和库存,金额由于比较特殊所以我把金额独立在商品信息以外说,不过逻辑上其实都属于商品信息范畴。商品信息主要影响库存更新和WMS生产。

金额信息

订单产生的商品信息,这里面除了要记录最终的金额,过程金额也需要记录。比如商品分摊的优惠金额、支付金额,应付金额等。在后续的订单结算、退换货、财务等环节都需要使用。

时间信息

记录订单每个节点的触发时间。

订单流程

订单流程是指整个订单从产生到完成整个流转过程。他包括正向流程和逆向流程。

正向流程

订单正常生产到配送的过程。这里面列举的模块是一般电商通用的功能,部分可能根据实际业务场景有所增加调整。020场景下出库、合包裹、发票准备等工作是由商家方进行,部分工作是属于线下场景。

整个流程涉及到的环节非常多。这里面提几个细节上需要注意的地方:

  1. 订单生成环节存在超时未支付自动取消的过程。库存的占用会在订单取消后释放。

  2. 如果选择COD(货到付款)则支付环节相应转移到订单配送之后,而过程中所有与款项相关的逻辑变为只操作金额数字,不对结算和账户进行打退款操作。

  3. 金额分摊需要到品。这个在以后的文章会细说,喜欢可关注微信公众号:chanpin880

  4. 订单系统审核主要用户对恶意用户或者刷单情况进行处理。系统可根据白名单、黑名单、消费频次、促销品购买量当方面做风控规则。如果后续会进入到人工审核,则规则上可以适当从宽。当触发规则需要进行订单退订的行为。此处设计时要小心对用户体验的损害,往往前台文案上说明当前节点是审核状态或者是等待接单。

  5. 在O2O领域有催单的概念,而传统电商则是通过关联第三方物流的物流信息进行跟踪。催单触发考虑到实际场景,一般会设定一定的时间间隔,间隔时间内只触发一次催单的请求。

  6. 预售等货和移仓需要做成SOA服务,以便在交易页面计算预计时间和预计到货时间。移仓处理依赖仓库的情况,也会涉及到后续拆分和合并包裹的逻辑。

  7. 订单生产时先要判断报缺情况,如果出现报缺问题则要考虑整单报缺、部分报缺、换货或者换转退的情况(库存,仓促调拨和退款)。报缺情况分为系统报缺和实物报缺,这是承接但相对独立的两个环节。

  8. 电商系统要考虑7天无理由退货的情景,即订单状态完成后申请退货。此时主要涉及的是金额上的计算以及一些财务程序(如发票等)问题的处理。

逆向流程

逆向流程则指订单发生取消、退货等情况时引发的订单流程过程。在设计逆向流程时建议和正向独立分开,通过订单号等信息进行关联,避免耦合过多逻辑无法延展设计。

逆向流程的触发主要有几种情况

  • 用户自主取消订单(整单)

  • 风控系统触发取消订单(整单)

  • 客服接到客诉仲裁后触发取消订单(整单)

  • 超时未支付取消订单(整单)

  • 换货报缺转为退单(整单、部分报缺)

触发条件考虑两个方面

  • 订单状态机(某一节点后如订单生产后不允许取消订单)

  • 订单生成时间(主要是O2O方面,考虑到配送时间和线下流程的不规范,有可能出现状态机没触发更新但实际流程在流转的情况)

其他要注意的一些内容

  • 当退单被商家拒绝后需要转入客服仲裁的环节

  • 部分退的订单促销一般保持享用状态,但金额按照分摊的金额进行退款。

订单状态机

关于状态机,我在百度上搜索了下定义。

关于状态机的一个极度确切的描述是它是一个有向图形,由一组节点和一组相应的转移函数组成。状态机通过响应一系列事件而“运行”。每个事件都在属于“当前” 节点的转移函数的控制范围内,其中函数的范围是节点的一个子集。函数返回“下一个”(也许是同一个)节点。这些节点中至少有一个必须是终态。当到达终态, 状态机停止。

由上述定义可以看到,状态机的概念是用来表示按照一定的方向通过触发不同节点产生数据流转的过程。在订单中通过情景触发订单状态的变化来表达订单流转的过程就是订单状态机。

电商

O2O

电商和O2O的主体流程是相同的,不同的在于物流配送环节电商较O2O更为复杂,此处只表明了主要的订单状态机,仓储物流内的物流单流转不在此范围内。状态机原则上使用结果值而不使用过程值,比如使用支付成功作为节点而不使用支付中作为节点。

订单状态机要融合订单流程来设计触发节点,订单流程的逻辑点要多于状态机,一般在当前流程环节完成后最后更新状态机。

订单推送

当状态机发生变化时,需要将对应的变化情况告知给相关人员以便了解当前订单的情况。这就是订单推送的作用。

订单推送的触发依赖于状态机的变化,涉及到的信息包括

  • 推送对象(用户、物流人员、商家)

  • 推送方式(push,短信)

  • 推送节点(状态机)

订单的演变

电商平台的搭建变迁也是订单逐步稳固发展的过程。我们来看下订单的发展过程,结算环节由于是一个比较大的话题,这里面不展开说明了。

订单第一阶段:实现订单流转

平台搭建的第一阶段要实现基本的订单流转,支持一些营销活动的购买(这里依赖附属系统的搭建情况,这里默认认为具备基本功能)。

  1. 实现订单的生成、生产

  2. 支持订单审核(初期可支持人工审核即可)

  3. 支持用户端显示订单相关信息

  4. 支持促销金额的计算

这个阶段搭建时核心是解决订单的基本流转,所以原则上一些功能可以后续再逐步完善。比如催单、拆单、系统审核等。

另外在搭建订单结构的时候如果条件允许,在设计之初可以就考虑用子母单的形式,即两层结构

  • 母单负责订单整体信息的记录

  • 子单记录单个商品的详细信息和金额情况

订单第二阶段:平台化搭建

随着平台的发展,越来越多的接入方需要订单的支持,POP平台的商家接入、第三方仓配的接入,更多快递合作伙伴的接入等等。订单的功能进入第二阶段的扩充。

  1. 提供订单soa服务

  2. 支持跨平台交易单生成(即同一个大交易单内既有商家商品又有自营商品或者是多个商家的商品)

  3. 对接多个仓库,支持移仓模式

  4. 根据仓配情况计算预计送达时间(订单promise服务)

  5. 支持拆单、合单逻辑(配送单、支付单等)

  6. 支持快递分单

  7. 提供更丰富的订单推送服务,完善订单状态机

这里说几个订单复杂化以后需要注意的细节

  • 订单子母单结构,便于将信息进行梳理,减少耦合

  • 拆单、合单逻辑主要是用于解决不同系统之间的耦合问题(如配送单主要运用于TMS,支付单提交给支付系统)。他们都通过交易订单信息项重新组合后添加部分自有系统的信息项而组成,通过订单编号来做关联。交易单和支付单是1:1,交易单和物流单也叫配送单则可能是N:N的关系。

  • 移仓的逻辑和预计送达时间要依赖仓配结构和运输能力的测算,当然也可以通过拆包裹分多次发的方式减少移仓的次数,不过要考虑要前台用户体验和免责说明。

  • 当自营品和商家品或者多个商家品的时候,优惠券的分摊计算要注意。要区分商家券和全场通用券可分摊的比例和优先级。

订单第三阶段:更多类型的订单模式

当平台发展到足够大的规模,提效、稳定变成一个重要的话题。这里面介绍两种情况:

预售

场景:无实物库存,但是顾客可以下单预定。当实物到货后,按照正常订单进行配送。

预售单需要设置预售库存数和预计到货时间。用户下单后不会直接进入生产,将预售订单放入单独的订单库(或增加预售品标识)。

预售商品到货后要判断涉及到货库存和预售订单是否相等。当实际库存小雨预售订单则按下单时间释放等量订单进行生产。系统需要回告库存系统重新计算预售占用库存量。

JIT(准时制生产方式 Just In Time 简称JIT)

场景:销售驱动生产,根据订单进行生产配送。

  • JIT模式需要设定JIT波次情况和支持JIT的仓库

  • 相同JIT仓库订单按照JIT波次时间点汇总订单并驱动产生ERP采购订单;JIT和目标仓告诉采销系统

  • ERP到货回告订单系统已到货

  • 订单释放进入WMS生产

这里面需要说明的是JIT场景可以延伸为不入库直接由供应商提供物流配送后续工作,平台提供订单、发票等服务。这是流程会变为

  • 订单告知ERP,生成采购单直接回告供应商

  • 供应商物流状态对应订单状态机进行同步更新

  • 用户收货后通过邮寄方式提供发票

  • 该模式不支持换货行为

结言

订单是电商、020的生命中轴线,他主导、串联了整个全部链路的系统。所有的系统都是围绕订单进行改建和扩张的。订单系统的强壮决定了平台的稳定性。

PS: 转发此篇文章到朋友圈或者是产品经理群,并截图发给微信chanpin628,可以找我领取一份PRD。

NOTE:为了不错过每一篇干货文章,顺手星标或者置顶一下吧,这样我就更容易出现在你的微信里,毕竟我们从不说废话。

更多干货可关注微信公众号:chanpinliu880

想学习更多关于产品、职场、心理、认知等干货,可长按右边二维码,关注我们。

老司机教你做产品经理4.0

3.0的培训已经告一段落,也帮助很多小伙伴找到产品经理的工作,如果你关注我的朋友圈,应该会发现几乎每天都有小伙伴向我报喜。(这里只简单的贴几张)

有了1.0、2.0、3.0的培训经验,以及我自身的不断成长(是的,我也一直在一线互联网公司不断的实践),让我更有信心做好自己的4.0课程。

我们的课程特色如下:

1、简历优化、面试辅导

因为我是转行的产品经理,在转行的道路上我走了很多弯路,但同时也积累了很多的面试经验,哪怕现在工作稳定了,我也经常去面试,一是检验自己的市场价值,二是积累面试经验,外加辅导上百位学员面试,让我对面试有了更深的了解,简历优化可以让你有更多的面试机会,面试辅导可以让你面试成功的概率大大提升。

2、工作中的实战分享,帮你高效工作

3.0的末期课程我们已经加入了很多实战案例的分享,这些案例不仅包含我之前做过的项目,还有我身边产品小伙伴做过的项目,有些axure原型案例,你直接可以拿过去在自己的工作中复用。

同时我们还带领大家从0-1的做一个项目(包含前后台),让大家在体会产品从0到1的过程。

3、每周六项目分享群,各行各业的小伙伴分享他们的行业见解和项目经验

我们每周六还有项目分享群,会有各行各业的产品经理在此分享他们的行业见解和项目经验,视频直播分享,可以互动提问的哦,要学习好产品,无非是多学习,多总结,多交流、多实践,这就是最好的学习和交流方式。

4、多导师教学

当然我觉得我一个人的能力还不够,所以我邀请了之前曾在携程、同城旅游、途牛等多家互联网公司工作过,有六年多经验的verna姐姐作为我们课程的讲师,给大家分享经验。

同时我也会邀请一些在一线互联网公司工作的产品经理来给大家分享他们的产品知识,帮助大家更好的结交行业人脉,学习行业知识。

5、完善的知识体系

你是否看了很多产品文章,依然云里雾里?你是否觉得学习了很多产品知识,依然做不好产品经理?造成以上现象的有两个原因:1、缺少实践(什么是转行?当你找到一份满意的产品工作的时候就转行了)2、没有形成自己的知识体系,所以在我们的课程,我梳理了完善的知识体系,给到大家,以后你学习到的碎片化知识直接往里面丢。

6、有问题随时提问

当然我不能保证你随时问,随时解答你,但是我可以保证你当天问,当天解答你,相当于你找了一个老师在带你。可以看一下学生对我们的评价。(太多了,这里就不一一列举了。)

课表如下:

报名的童鞋在工作中有啥问题可随时咨询!

如果担心讲的质量,可以加我微信(yw5201a1)索要试听课程。

担心没时间听的小伙伴放心,我们会有录屏供你反复学习。

开讲时间:每周天晚上8:30(2018年12月16号开始)

总课时:终身制(只要我还在互联网行业混,就会不断的把我的经验分享出来给大家)

授课形式:CCtalk视频直播授课(同时会录屏方便大家复习)

讲师:刘大大、Verna

讲师介绍:

刘大大

我是刘大大,人人都是产品经理专栏作家,产品100年度优秀作者,现任某世界500强公司产品经理,曾在平安、麦子金服,中赢金融等理财平台担任产品经理,曾发表过热门文章《产品经理面试习题大汇总》,《产品经理如何写好MRD文档》等,从来说的都是干货!

Verna:

我是你们的小姐姐Verna,有6年多的产品经理工作经验,拥有OTA行业排名前三的携程,同程艺龙,途牛多家B端C端项目经验,比较熟悉下单预订、营销、社区等领域,在提升用户体验方面有丰富的研究与实践。我愿用女产品经理的视角带你了解互联网的方方面面。选择我,让我们一起成为优秀的互联网人~~

报名方式:本期课程报名费是3999

两人报名3900;三人报名:3800;四人报名,3700;5人报名:3600。(以3999为基础的前提下)

扫描下方的二维码,付款后加微信:yw5201a1 拉入上课群。

送福利:把此文章转发到朋友圈保留24小时即可找我领取一份想要行业的原型和PRD文档。

往期精彩文章

知识星球精华

面试一对一辅导

如何赚钱?

手把手教你设计业务系统

Keep APP产品需求文档(PRD)

万字详解|产品经理应该知道的面试经

电商后台系统:管理后台之账号管理(一)

用户体验七境界


点击“阅读原文”

即可进行报名。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存