优化
This commit is contained in:
@@ -65,9 +65,44 @@ CALL finance_fee_source_add_column('fin_inbox_event', 'result_resource_id',
|
||||
"BIGINT UNSIGNED NULL COMMENT '成功处理生成或定位的费用来源快照ID' AFTER payload_hash");
|
||||
CALL finance_fee_source_add_column('fin_inbox_event', 'error_code',
|
||||
"VARCHAR(64) NULL COMMENT '处理失败时的稳定FIN错误码' AFTER result_resource_id");
|
||||
CALL finance_fee_source_add_column('fin_cost', 'cost_origin',
|
||||
"VARCHAR(24) NOT NULL DEFAULT 'MANUAL' COMMENT '成本来源:MANUAL人工补充、FIRSTLEG_DIRECT_PAID头程直接已付' AFTER cost_type");
|
||||
CALL finance_fee_source_add_column('fin_cost', 'source_system',
|
||||
"VARCHAR(32) NULL COMMENT '来源系统,头程直接已付固定FIRSTLEG' AFTER cost_origin");
|
||||
CALL finance_fee_source_add_column('fin_cost', 'source_type',
|
||||
"VARCHAR(32) NULL COMMENT '来源费用类型快照' AFTER source_system");
|
||||
CALL finance_fee_source_add_column('fin_cost', 'source_fee_id',
|
||||
"BIGINT UNSIGNED NULL COMMENT '来源费用ID' AFTER source_type");
|
||||
CALL finance_fee_source_add_column('fin_cost', 'source_fee_version',
|
||||
"INT UNSIGNED NULL COMMENT '来源费用版本' AFTER source_fee_id");
|
||||
CALL finance_fee_source_add_column('fin_cost', 'source_hash',
|
||||
"CHAR(64) NULL COMMENT '来源不可变快照SHA-256' AFTER source_fee_version");
|
||||
CALL finance_fee_source_add_column('fin_cost', 'paid_at',
|
||||
"DATETIME(3) NULL COMMENT '直接已付时间' AFTER voucher_file_ids");
|
||||
CALL finance_fee_source_add_column('fin_cost', 'payment_method',
|
||||
"VARCHAR(32) NULL COMMENT '直接已付方式' AFTER paid_at");
|
||||
CALL finance_fee_source_add_column('fin_cost', 'payment_reference_no',
|
||||
"VARCHAR(128) NULL COMMENT '直接已付流水号' AFTER payment_method");
|
||||
|
||||
DROP PROCEDURE IF EXISTS finance_fee_source_add_column;
|
||||
|
||||
DROP PROCEDURE IF EXISTS finance_fee_source_add_index;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE finance_fee_source_add_index()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.statistics
|
||||
WHERE table_schema=DATABASE() AND table_name='fin_cost'
|
||||
AND index_name='uk_fin_cost_source_version'
|
||||
) THEN
|
||||
ALTER TABLE fin_cost ADD UNIQUE KEY uk_fin_cost_source_version
|
||||
(source_system, source_type, source_fee_id, source_fee_version);
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
CALL finance_fee_source_add_index();
|
||||
DROP PROCEDURE IF EXISTS finance_fee_source_add_index;
|
||||
|
||||
-- 产品确认无历史财务数据;以下兼容值仅用于空环境重复迁移时保证结构收敛。
|
||||
UPDATE fin_fee_source
|
||||
SET source_type = COALESCE(source_type, 'INBOUND_FEE'),
|
||||
@@ -116,6 +151,18 @@ BEGIN
|
||||
'customer_confirmed_by_name','customer_confirmed_at')) <> 4 THEN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Finance客户对账单确认字段不完整';
|
||||
END IF;
|
||||
IF (SELECT COUNT(*) FROM information_schema.columns
|
||||
WHERE table_schema = DATABASE() AND table_name = 'fin_cost'
|
||||
AND column_name IN ('cost_origin','source_system','source_type','source_fee_id',
|
||||
'source_fee_version','source_hash','paid_at','payment_method',
|
||||
'payment_reference_no')) <> 9 THEN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Finance直接已付成本字段不完整';
|
||||
END IF;
|
||||
IF (SELECT COUNT(*) FROM information_schema.statistics
|
||||
WHERE table_schema=DATABASE() AND table_name='fin_cost'
|
||||
AND index_name='uk_fin_cost_source_version') <> 4 THEN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Finance直接已付成本唯一索引不完整';
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
CALL finance_fee_source_assert_schema();
|
||||
|
||||
Reference in New Issue
Block a user