Files
oil/server-tp6/qyt_migration_waybill_status.sql
2026-09-10 20:56:46 +08:00

38 lines
2.3 KiB
SQL

-- ============================================================
-- 企油通对接 · 7.8 发放结果轮询
-- 生成:2026-09-08
-- ------------------------------------------------------------
-- 依据《企油通接口对接文档.md》§5 第 7 条与 7.7 响应说明:
-- 「7.7 是异步的,成功只代表受理;结果必须用 7.8 按 batch_no 查」
-- 因此 oil_status_zsy 增加一个中间态:
-- 0 未提交 / 1 发放中(7.7已受理,等7.8结果) / 2 发放成功 / 3 发放失败
-- 只有 7.8 返回 handle_status=2 才置成功并回调下游。
--
-- 执行顺序:qyt_migration.sql -> _channel.sql -> _enterprise.sql -> 本文件
-- ============================================================
ALTER TABLE `yoshop_partners_order`
ADD COLUMN `qyt_query_time` int(11) NOT NULL DEFAULT 0 COMMENT '最近一次调用7.8查询发放结果的时间' AFTER `qyt_order_code`,
ADD COLUMN `qyt_query_num` int(11) NOT NULL DEFAULT 0 COMMENT '7.8查询次数(用于退避与超时告警)' AFTER `qyt_query_time`,
ADD INDEX `idx_zsy_query` (`oil_status_zsy`, `qyt_query_time`);
-- 兼容说明:
-- 历史上 oil_status_zsy 只有 0/2/3,没有值为 1 的数据,加中间态不影响存量。
-- 后台「重新发放」只打回 3->0,不会碰 1,避免把发放中的单重复提交。
-- 回滚:
-- ALTER TABLE `yoshop_partners_order`
-- DROP COLUMN `qyt_query_time`, DROP COLUMN `qyt_query_num`, DROP INDEX `idx_zsy_query`;
-- ------------------------------------------------------------
-- 重发计数:让「后台重新发放」能拿到全新的 batch_no
-- ------------------------------------------------------------
-- 编号是按订单号确定性派生的(崩溃重试要保持一致,避免重复发放)。
-- 但这也意味着重发会复用同一个 batch_no,而企油通按 batch_no 幂等,
-- 7.8 会一直返回那条旧的失败记录 —— 重发将永远不可能成功。
-- 因此把重发次数并入派生种子:第 N 次重发的编号带 R{N} 后缀。
ALTER TABLE `yoshop_partners_order`
ADD COLUMN `qyt_retry_num` int(11) NOT NULL DEFAULT 0 COMMENT '后台重新发放次数(并入编号派生种子,保证每次重发都是新批次)' AFTER `qyt_query_num`;
-- 回滚:ALTER TABLE `yoshop_partners_order` DROP COLUMN `qyt_retry_num`;