从0到1设计订单系统
概述
本文主要讲述了在传统电商企业中,订单系统应承载的角色,就订单系统所包含的主要功能模块梳理了设计思路,并对订单系统未来的发展做了一些思考。O u $ { D v
1、订单系统在企业中的角色
在搭建企业订单系统之前,需要先梳理企业整g s V 0 e体业务系统之间的关系和订单系统上下游关系,只有划分清业务系统边界,才能确V @ Z W定订单系统的职责与功能,R S n . G Q s进而保证各系统之间高效简洁6 * m } u的工作。
2、订单系统与各业务系统的关系
(1)对外系统:
所有给企业外部用户使用的系统都在这一层,包括官网、普通用户使用的C端,还包括给商户使用的商家后台和在各个销售渠道进行分销的系统,比如与银行信用卡中心合作、微信合作在合作商的平台露出. C ] : 1 ?本企业的产品。这类系统站在与客户接触的最前线,是公司实现商业模式的桥头堡。
(2)管理中后台:
每个C端的业务形态都会有一个对应的系统模块,如负责管理平台交易的订单系统,管理优惠信息的促销系统,管理平台所有产品的产品系统,以及管理所有对外系统显示内容的内容系统等。
(3)公共服务系统:
随着企业的发展,信息化建设到达一定程度后,企业需要将通用功能服务化、平台化,以保证应用架构的合理性,提升服务- . Z效率Q # h P : x。这类系统主要给其他应用系统提供基础服务能力支持。
3、订单系统上下游关系
由此可见,订单t % q T 8 x m Y X系统对上接收用K R { l户信息,将用户信息转化为产品订单,同时管理并跟踪订单信息和数据,承载了公司整个交易线的重要对客环节。对下则衔接产品系统、促销系统、仓储系统、会员系统 6 ; j o 9 r是,这也带来了一个问题,比 w w Z如:订单创建的场景下需要获取的信息分散在各个系统。
如果需要从各个公共服务系统调用:一是会花费大量时间( a g 7,二是代码的维护成本非常高。因此,订单系统接入所需的公共服务模块接口,在订单系统即可 t p U * + I ( (完成对接公M c ? 6共系统的服务。
订单系统核心A m x o功能
1、订单中所包含的内容信息
为了使订单系统能够对订单进行高效、精准的管理和跟踪,订单会储E Q U v . 1 , t +存关于产品、优惠、用户、支付信息等一系列的订单实时数据,来和下游系统,如:促销、仓储、物流进行交互。
以一个通用B2C商城的订单为例,梳理其包含的信息如下:
这里要注意的是订单类型,随着平台业务的不断发展,品类丰富、交易方式丰富后,需要对订单进行多维度的分类管理,同时订单类型利于订单系统的扩展性。每种订= $ u单类型将会对应一套流程及一套状态,便于对订单进行分类管理和复用。
2、流程引擎
流程是指从平台角度出发,将订单从创建到完成的整个流转过程进行抽象,从而形成了一套标准流程规则。而不同的^ E t s产品类型或交易类型在系统中的流程会千差万别,因此为了方便对订单流程进行管理,会组建流程引擎模块。
每套订单流程中会包含正向流程及逆向流程,正向流程可以比作一次顺h 6 & W l ] Z P 利的网购体验过{ p Y H程中,后台系统之间的信息流转。逆向流程则是修改订单、取消订单、退款、退货等各种动作2 x Z引起的后台系统流程,同时每个流程触发的条件又可分为系统触发和人工触发两种场景。
(1)正向流程
以一个通用B2C商城的订单系统为例,根据其实际业务场景,其订单流程可抽象为5大步骤:订单创建p w | #>订单支付>订单生产>订单确认>订单完成。
而每个步骤的背后,订单是如何在多系统之间交互流转的,可概括如下图:
订单创建:
用户下单后,系统需要生成订单,此时需要先获取下单中涉及的商品信息,+ a c然后获取该商品所涉及到的优惠信息,如果商品不参与优惠信息,则无此环节。
接着获取该账户的会员权益,这里要注意的是:优惠信息与会员权益的区别,比如:商品满减是优惠信息,SUPg C 1 tER会员全场9.8折指的是会员权益,一个是针对商品,另一个是针对账户。其次就是优惠活动的叠加规则和优先级规则等。
增减库存规则是指订单中的商品,何时从仓储系统中对相应商品库存进行扣除,目前主流有两种方式:
下单减} n . 7 a R库存——即用户下单成功时减少库存数量
- 优势:用户体验友好,系统逻辑简洁;
- 缺点:会导致恶意下单或下单后却不买,使得真正有需求的用户无法购买,影响真实销量;
解决办法:
- 设置订单有效时间,若订单创建成功N分钟不付款,则订单取消,库存回L e 4 E滚;
- 限购,用各种条件来限制买家X o _ ` L的购买件数,比如一个账号、一个ip,只能买一件;
- 风控,从技术角度进行判断,屏蔽恶意账号,禁止恶意账号购买。
付款减库存——即用户支付完Q N l 5 V成并反馈给平台后再减少库存数量
- 优势:减少无效订单带来的资源损耗;
- 缺点:因第三方支付返回结果存在时差,同m 一时间多个用户同时付款成功,会导致下单数目超过库存,商家P @ ( ; G @ c库存不足容易引发断货和投诉,成本增加。
解决办法:
- 付款前再次校验库存,如确认订单要付款时再验证一次,并友好提示用户库存不足;
- 增加提示信息:在商品详情页,订单步骤页面提示不及时付款,不能保证有库存等。
综上{ ^ b %所述,两种方式各有优缺点,因此,需结合实际场景进行考虑,如:秒杀、U a x $抢购、促销活动等,可使用? ; 7 X T x [ +下单减库存的方式。而对于产品库存量大,并发流量没) J R + o v m有那么强的产品使用付款减库存的方式。
将两种方式带入到销售场景中,关联商5 ^ ? k 3 )品类型、促销类2 U V e 4 = J J [型、供需关系等,灵活使4 9 c用,以充分发挥计算机系统的优势。
订单支付:
用户支付完订a P X m = [ X单后,需要获取订单的支付信息,包括支付流水号M ! U ` k Y @、支付时间等。支付完订单接着就是等商家发货,但在发货过程中,根据平台业务模式的不同,可能会涉及到订单的拆分。
订单拆分一般K N : ^ Q a 0 v分两种:
- 一种是用户挑选的商品来自于不同渠道(自营与商家,商家与商家);
- 另一: l y种是在SKU层面上f : ; _ + j Q拆分订单:不同仓库,不同运输要求的SKU,包裹重量体积限制等因素需要将订单拆分。
订单拆分也是一个相对独立的模块4 + O y a t,这里就不详细描述了。
订单生产:订单生产,是指产品从企业到u ^ } b B E _用户这一流程的概述。如电商平台中,商家发货过程已有一个标准化的流程,[ - ` Q订单内容会发送到仓库,仓库对商品进行打单、拣货、包装、交接快递进行配送。
订单确认:收到货后,订单系统需要在快递被签收后提醒用户对) _ h _ ( - k t 0商品做评价。这里要注意,a 8 Z 3 F J确认收到货不代表交易成功,k ; v U o a相反是售后服务的开始。
订单完成:| K : u Y g t订单完成是指在收到货X天的状态,此时订单不N Q ~ # 2 { q在售后的支持时间范围内。到此,一个订单的正向流程就算走完了。$ # B v y 2 z {
(2)逆向流程
上面说到逆向流程是各种修改订单、取消订单、退款、退货等操作,需要梳理清楚这些流程与正向流程的关系,才能理清订单系统完整的订单流程_ p t * g。
订单修改:可梳理订单内信息,根据信息关联程度; 8 0 K及业务诉求,设定订单的可修改范围是什么,比如:客户下单后,想修改收货人地址及电话e ( X k * R F v。此时只需对相应数据进行更新即可。
订单取消:用户提交订单后没有进行支付操作,此时用户原则V e 7 O d j上属于取消订单,因为m x ? / 3还未付款,则比较简单,只需要将原本提交订单时扣减的库存补回,促销优惠中使2 W M s U 2 8用的优惠券,权益等视平台{ ^ d ~规则,进行相应补回。
退款:用户支付成o 3 X } * 4 R 2 .功后,客户发出退Z a W J _ -,考虑优惠分摊的逻辑,在发生退款/退货时,优惠该如何z k =退回的处理规则和流程。
(3)状态机
状态机是管理订单状态逻辑的工具。状态机可归纳o v o为3个要素,即现态、P ` - p I对应的订单状态都会有所区别0 u W E 6 Q # v。所以,订单系统中一般会储存多4 ; L # F M X套状态机,以满足不同的订单类型来使用。
订单系统的发展
订单系统的主体框架,和主要业务模块已基本讲0 n P k ! 8 t完,那么随着企业的发展,业务量和业务形式不断变化,企业有可能形成多个订单系统并存以满足不同的业务需要的情况。
业务系统; # T % ` 4 + v .架构如下:
这种状况的出现,将会给平台带来非常大的发展瓶颈,如:
三个订单系统,每个订单系统处理不同类型的订单,没有统一的订单销量、订单状态信息,网站前台对订单的状态展示与控制不统7 6 (一,只能是在网站前台会员中心硬代码维护一X 6 V X z - [ X @套面向会员的统一订单明细与状态数据。而无线侧上线后,由于不了解前台网站会员中心的订单状态管理逻辑,所以需要把前台网站的订单明细C N w Z + )及状态管理再^ } i - d在无线应用侧再实现一遍。
三套后台订单系统与公共业务系统如会员中心、支付与财务、促销工具、客户分单等系统都需要对接一遍,公共业务处理逻辑不统一,一旦逻辑变更多个系统统一个J o O接口都要修改一遍,接口的重复维护开发工作量大。
订单开发目前分到事业部,各个事业部只会考虑自己的逻辑,不会考虑公h K k f共架构,只会越? 7 w ? 4 y走越远。碰到像无线这样的项目,需要对接各c + 3 2 ! l h个事业部,无线侧# q B V m [ J ` p应用上线进展慢。
因此未来的订单系统可拆分为| | 6 & x 8订单中心与业务订单& 5 . 0 5 2 v系统两个模块,以管理公司所有订单数据,并为各个模块提供统一服务。
业务系统架构如下:
最后
对于企业订单系统的搭建,并不是要做的大j n H 7而全、也不是要小而精。而需要结合市场、公司、业务的实际情况来最终制定系统设计方案和产品迭代计划。
最终,和公司整体发展相互协z { & y B s % X j调,相辅相成。
作者:码农小光
链接:htt} L X | 2 4 v =ps://www.jianshu.com/p/dd i @ n g [ &ad33add4daa
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业m c L n转载请注明出处。