feat(M04-B): 完成订单状态机与迁移历史

This commit is contained in:
Codex
2026-06-20 13:53:55 +08:00
parent 725028cb2d
commit 40c891f1b7
19 changed files with 698 additions and 16 deletions
@@ -0,0 +1,9 @@
# M04-B 订单状态机 API
- `GET /app-api/orders/:orderId/history`:订单所有者或有门店管理权限的人员查看完整状态历史。
- `POST /app-api/orders/:orderId/cancel`:订单所有者发起取消。
- `POST /admin-api/orders/:orderId/actions`:管理员提交受控业务动作。
管理接口只接受 `SUBMIT``CONFIRM_PAYMENT``RESERVE``START``FINISH``CANCEL``BEGIN_REFUND``COMPLETE_REFUND``CLOSE`,由服务端映射目标状态并校验合法迁移。请求不能直接提交目标状态或最终金额。
每次迁移记录操作者、来源、原因和 traceId;相同订单和 traceId 的重试幂等返回第一次结果。
@@ -0,0 +1,9 @@
# M04-B 订单状态机数据库变更
- 迁移版本:`2026062012`
- `qipai_orders` 新增 `status_version``status_updated_at`
- 新增 `qipai_order_status_history`,保存旧状态、新状态、业务动作、操作者、来源、原因、traceId 和版本元数据。
- `(tenant_id, order_id, trace_id)` 唯一约束用于状态迁移幂等。
- 已有订单在迁移时补一条 `MIGRATED` 基线历史。
状态迁移与房间预占、订单现场访问授权更新处于同一数据库事务。进入已支付/已预留/使用中时消费预占;取消、退款完成或关闭时释放预占并撤销现场权限。