fix: order wallet database assertions
This commit is contained in:
@@ -16531,8 +16531,6 @@ BEGIN
|
|||||||
END IF;
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
CALL assert_finance_permissions();
|
|
||||||
DROP PROCEDURE IF EXISTS assert_finance_permissions;
|
|
||||||
|
|
||||||
-- IAM 跨区安全事件可靠发送箱。来源:iam/src/main/resources/db/security-event-outbox.sql
|
-- IAM 跨区安全事件可靠发送箱。来源:iam/src/main/resources/db/security-event-outbox.sql
|
||||||
USE baiyue_iam;
|
USE baiyue_iam;
|
||||||
@@ -17602,12 +17600,6 @@ DELIMITER ;
|
|||||||
CALL baiyue_firstleg.ensure_smart_loading_candidate_indexes();
|
CALL baiyue_firstleg.ensure_smart_loading_candidate_indexes();
|
||||||
DROP PROCEDURE IF EXISTS baiyue_firstleg.ensure_smart_loading_candidate_indexes;
|
DROP PROCEDURE IF EXISTS baiyue_firstleg.ensure_smart_loading_candidate_indexes;
|
||||||
|
|
||||||
CALL baiyue_firstleg.assert_unified_final_schema();
|
|
||||||
DROP PROCEDURE IF EXISTS baiyue_firstleg.assert_unified_final_schema;
|
|
||||||
SELECT 'PASS' AS migration_status,
|
|
||||||
'统一增量全部执行完成;父子订单、履约分片、装柜门禁、订舱拖车、报关船期、船司查询、仓库角色、费用、Finance人工财务、公共资源、可靠审计及IAM安全事件结构校验通过' AS message;
|
|
||||||
|
|
||||||
|
|
||||||
-- 一件代发客户资金账户:实际余额优先,授信额度补足;冻结后结算或解冻。
|
-- 一件代发客户资金账户:实际余额优先,授信额度补足;冻结后结算或解冻。
|
||||||
USE baiyue_finance;
|
USE baiyue_finance;
|
||||||
CREATE TABLE IF NOT EXISTS fin_wallet_account (
|
CREATE TABLE IF NOT EXISTS fin_wallet_account (
|
||||||
@@ -17873,7 +17865,9 @@ DELIMITER ;
|
|||||||
CALL migrate_wallet_permissions();
|
CALL migrate_wallet_permissions();
|
||||||
DROP PROCEDURE IF EXISTS migrate_wallet_permissions;
|
DROP PROCEDURE IF EXISTS migrate_wallet_permissions;
|
||||||
|
|
||||||
SELECT '统一增量全部执行完成;父子订单、履约分片、装柜门禁、订舱拖车、报关船期、船司查询、仓库角色、费用、Finance人工财务、客户资金账户、公共资源、可靠审计及IAM安全事件结构校验通过' AS message;
|
-- 钱包写权限属于 Finance 权限总数的一部分,必须先完成钱包权限迁移再做总量断言。
|
||||||
|
CALL assert_finance_permissions();
|
||||||
|
DROP PROCEDURE IF EXISTS assert_finance_permissions;
|
||||||
|
|
||||||
USE baiyue_finance;
|
USE baiyue_finance;
|
||||||
|
|
||||||
@@ -17911,3 +17905,27 @@ CREATE TABLE IF NOT EXISTS fin_wallet_event_outbox (
|
|||||||
UNIQUE KEY uk_fin_wallet_event_key (event_key),
|
UNIQUE KEY uk_fin_wallet_event_key (event_key),
|
||||||
KEY idx_fin_wallet_event_publish (status,next_retry_at,created_at)
|
KEY idx_fin_wallet_event_publish (status,next_retry_at,created_at)
|
||||||
) ENGINE=InnoDB COMMENT='国内Finance到海外资金结果可靠发送箱';
|
) ENGINE=InnoDB COMMENT='国内Finance到海外资金结果可靠发送箱';
|
||||||
|
|
||||||
|
DROP PROCEDURE IF EXISTS assert_wallet_event_schema;
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE PROCEDURE assert_wallet_event_schema()
|
||||||
|
BEGIN
|
||||||
|
IF (SELECT COUNT(*) FROM information_schema.TABLES
|
||||||
|
WHERE TABLE_SCHEMA='baiyue_finance'
|
||||||
|
AND TABLE_NAME IN ('fin_wallet_command_inbox','fin_wallet_event_outbox')) <> 2 THEN
|
||||||
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='统一迁移失败:客户资金跨区事件表不完整';
|
||||||
|
END IF;
|
||||||
|
IF (SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||||
|
WHERE TABLE_SCHEMA='baiyue_finance' AND TABLE_NAME='fin_wallet_event_outbox'
|
||||||
|
AND INDEX_NAME='uk_fin_wallet_event_key' AND NON_UNIQUE=0) <> 1 THEN
|
||||||
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='统一迁移失败:客户资金结果事件幂等索引不完整';
|
||||||
|
END IF;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
||||||
|
CALL assert_wallet_event_schema();
|
||||||
|
DROP PROCEDURE IF EXISTS assert_wallet_event_schema;
|
||||||
|
|
||||||
|
CALL baiyue_firstleg.assert_unified_final_schema();
|
||||||
|
DROP PROCEDURE IF EXISTS baiyue_firstleg.assert_unified_final_schema;
|
||||||
|
SELECT 'PASS' AS migration_status,
|
||||||
|
'统一增量全部执行完成;父子订单、履约分片、装柜门禁、订舱拖车、报关船期、船司查询、仓库角色、费用、Finance人工财务、客户资金账户、公共资源、可靠审计及IAM安全事件结构校验通过' AS message;
|
||||||
|
|||||||
@@ -45,5 +45,10 @@ class FinanceContractTest {
|
|||||||
assertTrue(unified.contains("CREATE DATABASE IF NOT EXISTS baiyue_finance"));
|
assertTrue(unified.contains("CREATE DATABASE IF NOT EXISTS baiyue_finance"));
|
||||||
assertTrue(unified.contains("assert_finance_permissions"));
|
assertTrue(unified.contains("assert_finance_permissions"));
|
||||||
assertTrue(unified.contains("merchant:finance:statement:view"));
|
assertTrue(unified.contains("merchant:finance:statement:view"));
|
||||||
|
int walletEventSchema = unified.indexOf("CREATE TABLE IF NOT EXISTS fin_wallet_event_outbox");
|
||||||
|
int finalPass = unified.lastIndexOf("SELECT 'PASS' AS migration_status");
|
||||||
|
assertTrue(walletEventSchema >= 0);
|
||||||
|
assertTrue(finalPass > walletEventSchema);
|
||||||
|
assertTrue(unified.contains("CREATE PROCEDURE assert_wallet_event_schema()"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -66,7 +66,9 @@ class AdminPrototypeMenuPermissionSqlContractTest {
|
|||||||
.contains("客户全局 Finance 权限模板不完整")
|
.contains("客户全局 Finance 权限模板不完整")
|
||||||
.contains("客户全局管理员 Finance 模板授权不完整")
|
.contains("客户全局管理员 Finance 模板授权不完整")
|
||||||
.satisfies(content -> assertThat(content.indexOf("(5105050,0,'PLATFORM','BUTTON'"))
|
.satisfies(content -> assertThat(content.indexOf("(5105050,0,'PLATFORM','BUTTON'"))
|
||||||
.isLessThan(content.indexOf("CREATE PROCEDURE assert_finance_permissions()")));
|
.isLessThan(content.indexOf("CREATE PROCEDURE assert_finance_permissions()")))
|
||||||
|
.satisfies(content -> assertThat(content.indexOf("CALL migrate_wallet_permissions();"))
|
||||||
|
.isLessThan(content.indexOf("CALL assert_finance_permissions();")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user