订单系统设计思路
概述概述 本文主要讲述了在传统电商企业中,订单系统应承载的角色,就订单系 统所包含的主要功能模块梳理了设计思路,并对订单系统未来的发展做了一 些思考。 1.1. 订单系统在企业中的角色订单系统在企业中的角色 在搭建企业订单系统之前,需要先梳理企业整体业务系统之间的关系和 订单系统上下游关系,只有划分清业务系统边界,才能确定订单系统的职责 与功能,进而保证各系统之间高效简洁的工作。 2.2. 订单系统与各业务系统的关系订单系统与各业务系统的关系 ((1 1)对外系统:)对外系统: 所有给企业外部用户使用的系统都在这一层,包括官网、普通用户使用 的 C 端,还包括给商户使用的商家后台和在各个销售渠道进行分销的系统, 比如与银行信用卡中心合作、微信合作在合作商的平台露出本企业的产品。 这类系统站在与客户接触的最前线,是公司实现商业模式的桥头堡。 ((2 2)管理中后台:)管理中后台: 每个 C 端的业务形态都会有一个对应的系统模块,如负责管理平台交易 的订单系统,管理优惠信息的促销系统,管理平台所有产品的产品系统,以 及管理所有对外系统显示内容的内容系统等。 ((3 3)公共服务系统:)公共服务系统: 随着企业的发展,信息化建设到达一定程度后,企业需要将通用功能服 务化、平台化,以保证应用架构的合理性,提升服务效率。这类系统主要给 其他应用系统提供基础服务能力支持。 3.3. 订单系统上下游关系订单系统上下游关系 由此可见,订单系统对上接收用户信息,将用户信息转化为产品订单, 同时管理并跟踪订单信息和数据,承载了公司整个交易线的重要对客环节。 对下则衔接产品系统、促销系统、仓储系统、会员系统、支付系统等,对整 个电商平台起着承上启下的作用。 4.4. 订单系统的业务架构订单系统的业务架构 ((1 1)订单服务)订单服务 该模块的主要功能是用户日常使用的服务和页面,主要有订单列表、订 单详情、在线下单等,还包括为公共业务模块提供的多维度订单数据服务。 ((2 2)订单逻辑)订单逻辑 订单系统的核心,起着至关重要的作用,在订单系统负责管理订单创建、 订单支付、订单生产、订单确认、订单完成、取消订单等订单流程。还涉及 到复杂的订单状态规则、订单金额计算规则以及增减库存规则等。在4 节核 心功能设计中会重点来说。 ((3 3)底层服务)底层服务 信息化建设达到一定程度的企业,一般会将公司公共服务模块化,比如: 产品,会构建对应的产品系统,代码、数据库,接口等相对独立。但是,这 也带来了一个问题,比如:订单创建的场景下需要获取的信息分散在各个系 统。 如果需要从各个公共服务系统调用:一是会花费大量时间,二是代码的 维护成本非常高。因此,订单系统接入所需的公共服务模块接口,在订单系 统即可完成对接公共系统的服务。 订单系统核心功能订单系统核心功能 1.1. 订单中所包含的内容信息订单中所包含的内容信息 为了使订单系统能够对订单进行高效、精准的管理和跟踪,订单会储存 关于产品、优惠、用户、支付信息等一系列的订单实时数据,来和下游系统, 如:促销、仓储、物流进行交互。 以一个通用 B2C 商城的订单为例,梳理其包含的信息如下: 这里要注意的是订单类型,随着平台业务的不断发展,品类丰富、交易 方式丰富后,需要对订单进行多维度的分类管理,同时订单类型利于订单系 统的扩展性。每种订单类型将会对应一套流程及一套状态,便于对订单进行 分类管理和复用。 2.2. 流程引擎流程引擎 流程是指从平台角度出发,将订单从创建到完成的整个流转过程进行抽 象,从而形成了一套标准流程规则。而不同的产品类型或交易类型在系统中 的流程会千差万别,因此为了方便对订单流程进行管理,会组建流程引擎模 块。 每套订单流程中会包含正向流程及逆向流程,正向流程可以比作一次顺利的 网购体验过程中,后台系统之间的信息流转。逆向流程则是修改订单、取消 订单、退款、退货等各种动作引起的后台系统流程,同时每个流程触发的条 件又可分为系统触发和人工触发两种场景。 ((1 1)正向流程)正向流程 以一个通用 B2C 商城的订单系统为例,根据其实际业务场景,其订单流 程可抽象为 5 大步骤:订单创建订单创建 订单支付订单支付 订单生产订单生产 订单确认订单确认 订单完成。订单完成。 而每个步骤的背后,订单是如何在多系统之间交互流转的,可概括如下图: 订单创建:订单创建: 用户下单后,系统需要生成订单,此时需要先获取下单中涉及的商品信 息,然后获取该商品所涉及到的优惠信息,如果商品不参与优惠信息,则无 此环节。 接着获取该账户的会员权益,这里要注意的是:优惠信息与会员权益的 区别,比如:商品满减是优惠信息, SUPER 会员全场 9.8 折指的是会员权益, 一个是针对商品,另一个是针对账户。其次就是优惠活动的叠加规则和优先 级规则等。 增减库存规则是指订单中的商品,何时从仓储系统中对相应商品库存进 行扣除,目前主流有两种方式: 下单减库存——即用户下单成功时减少库存数量下单减库存——即用户下单成功时减少库存数量 • 优势优势:用户体验友好,系统逻辑简洁; • 缺点缺点:会导致恶意下单或下单后却不买,使得真正有需求的用户无法购买, 影响真实销量; 解决办法:解决办法: 1. 设置订单有效时间,若订单创建成功N 分钟不付款,则订单取消,库存回滚; 2. 限购,用各种条件来限制买家的购买件数,比如一个账号、一个ip,只能买 一件; 3. 风控,从技术角度进行判断,屏蔽恶意账号,禁止恶意账号购买。 付款减库存——即用户支付完成并反馈给平台后再减少库存数量付款减库存——即用户支付完成并反馈给平台后再减少库存数量 • 优势优势:减少无效订单带来的资源损耗; • 缺点缺点:因第三方支付返回结果存在时差,同一时间多个用户同时付款成功, 会导致下单数目超过库存,商家库存不足容易引发断货和投诉,成本增加。 解决办法:解决办法: 1. 付款前再次校验库存,如确认订单要付款时再验证一次,并友好提示用户库 存不足; 2. 增加提示信息:在商品详情页,订单步骤页面提示不及时付款,不能保证有 库存等。 综上所述,两种方式各有优缺点,因此,需结合实际场景进行考虑,如: 秒杀、抢购、促销活动等,可使用下单减库存的方式。而对于产品库存量大, 并发流量没有那么强的产品使用付款减库存的方式。 将两种方式带入到销售场景中,关联商品类型、促销类型、供需关系等, 灵活使用,以充分发挥计算机系统的优势。 订单支付:订单支付: 用户支付完订单后,需要获取订单的支付信息,包括支付流水号、支付 时间等。支付完订单接着就是等商家发货,但在发货过程中,根据平台业务 模式的不同,可能会涉及到订单的拆分。 订单拆分一般分两种: • 一种是用户挑选的商品来自于不同渠道(自营与商家,商家与商家); • 另一种是在 SKU 层面上拆分订单:不同仓库,不同运输要求的SKU,包裹重 量体积限制等因素需要将订单拆分。 • 订单拆分也是一个相对独立的模块,这里就不详细描述了。 订单生产订单生产:订单生产,是指产品从企业到用户这一流程的概述。如电商平台 中,商家发货过程已有一个标准化的流程,订单内容会发送到仓库,仓库对 商品进行打单、拣货、包装