Visual LabINTERACTIVE LEARNING
03 · ERP & SUPPLY CHAINP014 MIN

订单状态、取消与幂等

把订单从草稿到交付的合法变化和库存副作用建成显式流程。

MENTAL MODELORDER LIFECYCLE
01DRAFT
02CONFIRMED
03PROCESSING
04SHIPPED
05DELIVERED
状态不是 UI 标签,而是决定当前允许什么动作、需要什么权限、必须触发什么副作用的业务事实。
01 · CONCEPTS & BOUNDARIES

先把概念与边界说清楚

定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。

01

Order Status

描述订单生命周期阶段,如 DRAFT、CONFIRMED、PROCESSING、SHIPPED、DELIVERED。

02

Order Cancel

在允许阶段终止未完成承诺,并释放预占、停止任务、记录原因。

03

Idempotent Command

同一取消或确认命令重复到达时只产生一次有效业务结果。

02 · BLIND BOTS CASE

取消按钮点两次释放了两遍库存

问题现场

两个请求都读取 CONFIRMED,分别增加 available 并减少 reserved。

  1. 01

    状态更新带 expected_status 条件。

  2. 02

    库存释放与状态迁移同事务。

  3. 03

    重复请求返回已取消结果,不重复写 movement。

得到什么

取消只发生一次,库存流水与订单状态保持一致。

03 · PRACTICE

马上动手

  1. 列出 CONFIRMED 可执行的命令与角色。
  2. 说明 shipped 后为何需要 Return 而非 Cancel。
04 · PITFALLS

常见坑

  • 任何状态都能直接改成任意状态
  • 先发外部消息再提交状态
  • 取消只改 status 不释放资源
05 · KNOWLEDGE CHECK订单状态为什么不应该由前端直接 PATCH 任意字符串?查看答案⌄
答案

合法迁移依赖当前状态、角色、业务条件和副作用;应暴露 confirm/cancel/ship 等命令,由领域服务统一执行。