2.3 KiB
2.3 KiB
2026-08-11 M09-D2 商品订单、支付与库存生命周期
- 版本:
2026081108_m09d2_product_order_payment_inventory。 - 新增 7 张表:
qipai_product_orders、qipai_product_order_items、qipai_product_order_events、qipai_product_payments、qipai_product_refunds、qipai_product_payment_callbacks、qipai_product_refund_events。 - 商品订单保存客户端请求指纹、库存业务号/请求号、履约方式、房间订单、金额/数量汇总、库存状态、各阶段时间和版本;数据库 CHECK 保证金额、数量、来源、指纹、版本和房间履约组合合法。
- 订单项保存商品/SKU 代码与名称、规格 JSON、单位、单价、数量、小计和备注快照;订单项行号和订单事件请求/版本均唯一,双触发器禁止更新或删除订单项与订单事件。
- 支付与商品订单分表;有效支付、支付业务号、客户端请求、provider paymentId 均唯一,退款同样约束有效单据、provider refundId 和返库请求。金额统一整数分。
- 支付回调以 provider/callbackId 唯一,保存 payload 指纹、验签结果、处理状态和脱敏 payload;订单/支付/退款/回调复合外键阻止跨租户、跨门店或跨单据串接。
- 退款保存
RESTOCK/NO_RESTOCK决策和PENDING/SUCCEEDED/FAILED/NOT_REQUIRED库存状态;退款事件记录每次状态、库存结果和版本,双触发器禁止修改或删除历史。 - 新增
goods.order.read、goods.order.manage并授予活动 STAFF、STORE_ADMIN、TENANT_ADMIN、PLATFORM_ADMIN;新租户通过登录和 RBAC 初始化路径取得相同权限,避免迁移后创建的租户缺少授权。 - down 先删除不可变触发器、角色权限,再按回调/退款/支付/事件/订单项/订单依赖逆序删除 7 张表和 marker;M09-D1 崩溃重试测试先执行本迁移 down,避免直接删除被 D2 外键引用的库存请求表。
- verify 校验 7 张表、列排序规则、22 个唯一/查询索引、18 个复合外键、34 个 CHECK、6 个不可变触发器、2 项权限、完整角色授权和迁移 checksum。
- MySQL 8.4.10 已完成 201 up、150 verify、187 down 的
up → verify → down → up → verify;并发支付单次扣减、取消/超时释放、退款返库、门店范围、事件不可变与跨阶段重试均通过。