订单状态机的“领域驱动设计”:如何清晰表达代购业务规则
技术领域:领域驱动设计|状态机
代购订单的状态远比普通电商复杂。普通电商可能只需要“待支付、已支付、已发货、已完成”4个状态,但代购需要8-9个状态来描述采购、到仓、验货、集运等环节。如果状态设计不清晰,业务逻辑就容易混乱。
状态设计的关键在于“粒度选择”。状态太少,业务细节丢失;状态太多,系统复杂度和状态转换规则呈指数级增长。Taocarts通过多轮迭代确定了9个核心状态:待支付、待采购、已采购、已到仓、待发货、已发货、运输中、已完成、已取消。
每个状态之间的转换规则也在代码层面约束——不是任意两个状态之间都可以转换。例如,已发货的订单不能回退到待采购状态,需要通过售后流程处理。定义合法转换矩阵后,系统运行时校验,不符合规则的转换请求会被拒绝。状态变更时,系统自动记录操作日志(变更前状态、变更后状态、操作人、操作时间、变更原因),便于追溯和排查。
领域驱动设计的好处是,业务规则直接体现在代码中,而不是散落在注释或文档里。用枚举表示状态、用Map定义转换规则、用日志记录历史——这是状态机可维护的底层逻辑。