yeg
2026-09-17 1805a7b9648ff9cfbd19129255a5a4fa62f0261e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
-- 编号让位(2026-09-17):本文件原为 V151,同批让号后顺延为 V154(远端那两个提交占了 V148–V150)。
-- 「取消意图」要能跨请求活到关单结论回来的那一刻。
--
-- 用户在通道说「关单处理中」时点了取消,服务端当次只能回一句「取消处理中」——真正该取消的时机是
-- 几分钟后关单有了结论。旧实现没有把这次意图落库,于是关单真的关掉之后没有任何人去收那笔订单:
-- 用户点的取消丢了,订单还是「待支付」,页面上看着就是「点了取消还是卡住」,只能再点一次取消,
-- 或者等到订单 15 分钟过期被清理收掉。
--
-- cancel_requested_at 记的是「这次取消请求被受理的时间」,由对账在「每笔尝试都有结论」之后落地
-- (见 PaymentReconciliationService.cancelOrdersAwaitingCloseConclusion)。
--
-- 与 V149 同样的理由,这一列必须同样落到开发库:开发库(局域网共享的 talent_card)Flyway 关闭、
-- 结构不由迁移维护,只写迁移会让开发库缺列,取消接口直接以 Unknown column 500。
-- 等价的纯 DDL 在 scripts/dev-schema-v151-order-cancel-request.sql。
DROP PROCEDURE IF EXISTS add_order_cancel_request_column;
DELIMITER //
CREATE PROCEDURE add_order_cancel_request_column()
BEGIN
    IF NOT EXISTS (SELECT 1 FROM information_schema.columns
                   WHERE table_schema = DATABASE() AND table_name = 'benefit_order'
                     AND column_name = 'cancel_requested_at') THEN
        ALTER TABLE benefit_order
            ADD COLUMN cancel_requested_at DATETIME DEFAULT NULL COMMENT '人才端点过取消、等关单结论的时间';
    END IF;
END //
DELIMITER ;
CALL add_order_cancel_request_column();
DROP PROCEDURE add_order_cancel_request_column;