编辑导读:订单管理系统是电商系统中至关重要的一部分,其复杂性不容小觑。本文将从六个方面分析订单管理系统的运作,希望能对您有所帮助。
订单管理系统负责处理订单的整个流程,包括订单输入、处理和输出。在电商系统或具备交易功能的系统中,它扮演着核心作用,尽管复杂,但理解起来并不困难。
正如我们之前从商品的输入、维护和输出流程来解析商品系统一样,本文将从订单流的角度来理解订单系统。
订单系统与众多其他系统紧密相连,例如购物车、商品系统、营销系统、会员系统、支付系统、物流系统、仓库系统、财务系统和内容系统。以下示例图展示了这些系统的关联关系:
-
- 购物车:是订单的起点,用户将商品添加到购物车,并最终提交订单。
- 商品系统:在提交订单页面,用户可以看到所购买商品的信息,包括商品名称、数量、价格、售后信息等。
- 营销系统:会显示商品的优惠信息,例如满减、优惠券。
- 会员系统:会根据会员等级提供不同的折扣信息,同时显示会员的收货地址、充值卡、运费券等。
- 仓库系统:根据收货地址显示发货仓库和自提地点,并最终负责发货操作。
- 支付系统:提供多种支付方式(货到付款、在线支付等),计算实际应付金额,并显示银行卡信息等。
- 物流系统:显示配送时间、方式和运费,并在订单发货后显示实际配送路径。
- 财务系统:显示开票信息,并在订单完成后生成发票。
- 内容系统:显示订单留言等信息。
从订单来源的角度来看,可以分成内部和外部两种情况:
- 自建商城的订单系统会涉及到上图所示的大多数系统。
- 自建商城的订单创建过程中,会有更多的判断逻辑,例如是否需要拆单、优惠信息是否可用、商品库存是否充足、会员是否正常等。
- 内部订单由于涉及支付,因此会有待付款和待评价这两个状态。
- 内部订单对订单系统的并发能力、负载能力和支付能力有很高的要求,每一步都不能出错,否则会造成营业额损失和用户流失。
- 订单数据计算和处理需要更高的精度,需要准确计算商品金额、优惠金额、抵扣金额、实际支付金额等,以便在财务报表中清晰展示。
外部订单通常来自分销系统,例如供应商的订单系统会接收外部系统的订单。
- 第三方系统传输的订单相对独立,因此涉及的相关系统较少。
- 第三方订单在接收时主要判断传输方是否有资格、商品是否上架、库存是否充足、收货人信息是否完整等。
- 由于这类订单对实时性要求较低(通常消费者已经付款,现在只是后端处理),因此对接口负载性能的要求相对较低。
- 订单数据处理方面,一般采用线下核对账单和结算款项的方式,因此主要在数据记录和处理的准确性方面有较高要求。
接下来,我们来探讨订单的处理方式。
订单系统会对订单进行各种逻辑规则判断,并根据业务规则分配订单,以下示例图展示了订单流转过程:
订单的流转处理通常在秒级甚至毫秒级内完成,无法处理或处理失败的订单会被归类到异常订单。
以下流程图展示了订单各状态的流转过程:
订单一般流转到仓库进行发货操作,仓库会将物流信息回传到订单系统,订单系统接收消息后会对订单进行发货:
- 对于内部订单,订单状态会直接改变,消费者端也会同步看到订单状态的变化。
- 对于外部订单,订单系统会通过接口通知第三方系统该订单的物流信息。
在特殊情况下,需要对订单进行人工处理,例如订单无法流转到下一级、订单有备注等。人工处理的结果可能是与消费者协商退款,也可能是手动传输订单等。
内部订单的完成并非在发货后即完成,一般来说客户收到订单商品后才算完成。
但不同类型的商城有所区别:
- 自营商城:一般客户收货后订单即完成,例如京东。
- 非自营商城:客户需要自己点击确认收货或经过一段时间后系统自动确认收货。
外部订单系统订单一般在发货后就算完成。
在设计订单系统时,应首先思考公司的业务类型和逻辑,理清订单流的起点和终点。
理清订单流后,从订单源头开始设计订单系统:
订单管理系统设计:从业务逻辑到系统架构
在设计订单管理系统时,我们需要从业务逻辑出发,逐步完善系统架构,并关注与其他系统的对接和交互。
- 订单来源与类型:
- 对于自建商城,订单模块需要与其他系统(如产品、库存等)紧密配合,这就需要与相关产品经理进行深度沟通,确定数据接口和交互流程,保证订单系统与其他系统的无缝对接。
- 对于供应链类型的订单系统,需要着重考虑如何高效地接收外部订单。我们可以选择提供标准化的API接口供第三方系统调用,也可以根据实际情况开发定制化的对接方案。
- 订单处理逻辑:
- 在确定订单输入方式后,我们需要根据公司具体的业务运营模式设计订单处理流程。这其中包括订单进入系统后的自动处理规则、异常订单的识别和处理机制等。
- 订单输出与系统对接:
- 订单处理完成后,需确定如何输出。是直接传递给WMS系统,还是需要经过其他ERP系统?由于输出过程通常是自动化的,因此需要提前规划好与相关系统的对接方式,保障数据传输的稳定和高效。
- 业务闭环验证:
- 我们需要将整个业务流程代入到系统中进行模拟运行,验证系统是否能够形成完整的闭环,并检查是否存在功能缺失或细节遗漏等问题。
考虑到订单管理系统通常需要与多个系统交互,因此在系统设计上必须遵循以下原则: