102 lines
4.1 KiB
SQL
102 lines
4.1 KiB
SQL
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||
|
||
-- 外部来源必须把申请时的费率、手续费和实际打款额作为不可变事实提交。
|
||
-- 四列均允许 NULL 兼容历史申请;迁移只做 INSTANT 元数据变更,不建索引、不扫描或回填提现大表。
|
||
SET @service_charge_ratio_exists = (
|
||
SELECT COUNT(*)
|
||
FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA = DATABASE()
|
||
AND TABLE_NAME = 'admin_user_withdrawal_applications'
|
||
AND COLUMN_NAME = 'service_charge_ratio'
|
||
);
|
||
SET @service_charge_ratio_ddl = IF(
|
||
@service_charge_ratio_exists = 0,
|
||
'ALTER TABLE admin_user_withdrawal_applications ADD COLUMN service_charge_ratio DECIMAL(9,4) NULL COMMENT ''来源申请时手续费率快照,单位为百分比点'' AFTER balance_before, ALGORITHM=INSTANT',
|
||
'SELECT 1'
|
||
);
|
||
PREPARE stmt FROM @service_charge_ratio_ddl;
|
||
EXECUTE stmt;
|
||
DEALLOCATE PREPARE stmt;
|
||
|
||
SET @service_charge_exists = (
|
||
SELECT COUNT(*)
|
||
FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA = DATABASE()
|
||
AND TABLE_NAME = 'admin_user_withdrawal_applications'
|
||
AND COLUMN_NAME = 'service_charge'
|
||
);
|
||
SET @service_charge_ddl = IF(
|
||
@service_charge_exists = 0,
|
||
'ALTER TABLE admin_user_withdrawal_applications ADD COLUMN service_charge DECIMAL(18,2) NULL COMMENT ''来源申请时手续费金额快照,单位为 USD'' AFTER service_charge_ratio, ALGORITHM=INSTANT',
|
||
'SELECT 1'
|
||
);
|
||
PREPARE stmt FROM @service_charge_ddl;
|
||
EXECUTE stmt;
|
||
DEALLOCATE PREPARE stmt;
|
||
|
||
SET @actual_amount_exists = (
|
||
SELECT COUNT(*)
|
||
FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA = DATABASE()
|
||
AND TABLE_NAME = 'admin_user_withdrawal_applications'
|
||
AND COLUMN_NAME = 'actual_amount'
|
||
);
|
||
SET @actual_amount_ddl = IF(
|
||
@actual_amount_exists = 0,
|
||
'ALTER TABLE admin_user_withdrawal_applications ADD COLUMN actual_amount DECIMAL(18,2) NULL COMMENT ''来源申请时实际打款金额快照,单位为 USD'' AFTER service_charge, ALGORITHM=INSTANT',
|
||
'SELECT 1'
|
||
);
|
||
PREPARE stmt FROM @actual_amount_ddl;
|
||
EXECUTE stmt;
|
||
DEALLOCATE PREPARE stmt;
|
||
|
||
SET @actual_amount_minor_exists = (
|
||
SELECT COUNT(*)
|
||
FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA = DATABASE()
|
||
AND TABLE_NAME = 'admin_user_withdrawal_applications'
|
||
AND COLUMN_NAME = 'actual_amount_minor'
|
||
);
|
||
SET @actual_amount_minor_ddl = IF(
|
||
@actual_amount_minor_exists = 0,
|
||
'ALTER TABLE admin_user_withdrawal_applications ADD COLUMN actual_amount_minor BIGINT NULL COMMENT ''来源申请时实际打款金额最小单位快照,USD 为美分'' AFTER actual_amount, ALGORITHM=INSTANT',
|
||
'SELECT 1'
|
||
);
|
||
PREPARE stmt FROM @actual_amount_minor_ddl;
|
||
EXECUTE stmt;
|
||
DEALLOCATE PREPARE stmt;
|
||
|
||
-- 外部来源财务回调不能与 Admin 本地终态共用一个事务:回调 2xx 后若本地提交失败,
|
||
-- nullable claim 字段保存第一次决策边界;审核人、备注、凭证、command 和时间复用现有财务审计列。
|
||
SET @external_finance_claim_decision_exists = (
|
||
SELECT COUNT(*)
|
||
FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA = DATABASE()
|
||
AND TABLE_NAME = 'admin_user_withdrawal_applications'
|
||
AND COLUMN_NAME = 'external_finance_claim_decision'
|
||
);
|
||
SET @external_finance_claim_decision_ddl = IF(
|
||
@external_finance_claim_decision_exists = 0,
|
||
'ALTER TABLE admin_user_withdrawal_applications ADD COLUMN external_finance_claim_decision VARCHAR(16) NULL COMMENT ''外部来源财务首次决策 claim'' AFTER actual_amount_minor, ALGORITHM=INSTANT',
|
||
'SELECT 1'
|
||
);
|
||
PREPARE stmt FROM @external_finance_claim_decision_ddl;
|
||
EXECUTE stmt;
|
||
DEALLOCATE PREPARE stmt;
|
||
|
||
SET @external_finance_claim_status_exists = (
|
||
SELECT COUNT(*)
|
||
FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA = DATABASE()
|
||
AND TABLE_NAME = 'admin_user_withdrawal_applications'
|
||
AND COLUMN_NAME = 'external_finance_claim_status'
|
||
);
|
||
SET @external_finance_claim_status_ddl = IF(
|
||
@external_finance_claim_status_exists = 0,
|
||
'ALTER TABLE admin_user_withdrawal_applications ADD COLUMN external_finance_claim_status VARCHAR(16) NULL COMMENT ''外部来源财务 claim 状态:claimed/finalized'' AFTER external_finance_claim_decision, ALGORITHM=INSTANT',
|
||
'SELECT 1'
|
||
);
|
||
PREPARE stmt FROM @external_finance_claim_status_ddl;
|
||
EXECUTE stmt;
|
||
DEALLOCATE PREPARE stmt;
|