Files
qipai/docs/db-changelog/2026-08-11-M09-D2-product-order-payment-inventory.md
T

2.3 KiB

2026-08-11 M09-D2 商品订单、支付与库存生命周期

  • 版本:2026081108_m09d2_product_order_payment_inventory
  • 新增 7 张表:qipai_product_ordersqipai_product_order_itemsqipai_product_order_eventsqipai_product_paymentsqipai_product_refundsqipai_product_payment_callbacksqipai_product_refund_events
  • 商品订单保存客户端请求指纹、库存业务号/请求号、履约方式、房间订单、金额/数量汇总、库存状态、各阶段时间和版本;数据库 CHECK 保证金额、数量、来源、指纹、版本和房间履约组合合法。
  • 订单项保存商品/SKU 代码与名称、规格 JSON、单位、单价、数量、小计和备注快照;订单项行号和订单事件请求/版本均唯一,双触发器禁止更新或删除订单项与订单事件。
  • 支付与商品订单分表;有效支付、支付业务号、客户端请求、provider paymentId 均唯一,退款同样约束有效单据、provider refundId 和返库请求。金额统一整数分。
  • 支付回调以 provider/callbackId 唯一,保存 payload 指纹、验签结果、处理状态和脱敏 payload;订单/支付/退款/回调复合外键阻止跨租户、跨门店或跨单据串接。
  • 退款保存 RESTOCK/NO_RESTOCK 决策和 PENDING/SUCCEEDED/FAILED/NOT_REQUIRED 库存状态;退款事件记录每次状态、库存结果和版本,双触发器禁止修改或删除历史。
  • 新增 goods.order.readgoods.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;并发支付单次扣减、取消/超时释放、退款返库、门店范围、事件不可变与跨阶段重试均通过。