38 lines
2.3 KiB
SQL
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`;
|