-- 支付与 SIM 履约加固。执行前请备份数据库,并先检查现有重复数据。 UPDATE payment_transaction SET provider_trade_no = NULL WHERE provider_trade_no = ''; UPDATE traffic_order SET provider_trade_no = NULL WHERE provider_trade_no = ''; ALTER TABLE payment_transaction DROP INDEX uk_payment_provider_trade, MODIFY COLUMN provider_trade_no VARCHAR(128) NULL DEFAULT NULL COMMENT '第三方交易号', ADD COLUMN provider_payload TEXT NULL COMMENT 'AGPay下单响应快照' AFTER provider_trade_no, ADD COLUMN requested_at DATETIME NULL COMMENT '最近一次请求AGPay时间' AFTER status, ADD UNIQUE KEY uk_payment_provider_trade (provider, provider_trade_no), ADD UNIQUE KEY uk_payment_business (provider, business_type, business_order_id); ALTER TABLE traffic_order DROP INDEX uk_traffic_order_provider_trade, MODIFY COLUMN provider_trade_no VARCHAR(128) NULL DEFAULT NULL COMMENT '第三方交易号', ADD UNIQUE KEY uk_traffic_order_provider_trade (payment_provider, provider_trade_no); ALTER TABLE sim_recharge_order ADD COLUMN fulfillment_lease_token VARCHAR(64) NULL COMMENT '履约租约令牌' AFTER fulfillment_status, ADD COLUMN fulfillment_lease_until DATETIME NULL COMMENT '履约租约截止时间' AFTER fulfillment_lease_token, ADD KEY idx_sim_recharge_lease (fulfillment_status, fulfillment_lease_until);