-- ============================================================= -- 角色额度池 + 客户信用额度有效期 改造 -- 1. ctr_customer_account 新增信用额度生效/失效日期(与临时额度口径一致,到期次日自动清零) -- 2. ctr_customer_credit_apply 新增 approve_role_id,记录审批占用的额度池角色 -- 3. ctr_customer_credit_flow 新增 role_id,流水留痕额度池归属角色 -- 4. 新表 sys_role_credit_quota:管理员为角色设置的可分配额度总额(额度池) -- 5. 新表 ctr_customer_credit_grant:审批增量额度的占用台账(池余额=该表remaining求和) -- 2026-09-20 -- 说明:ALTER 语句非自动幂等,若字段/表已存在,对应语句会报 Duplicate/already exists,忽略即可 -- ============================================================= SET NAMES utf8mb4; -- ------------------------------------------------------------- -- 1. ctr_customer_account:信用额度有效期 -- ------------------------------------------------------------- ALTER TABLE `ctr_customer_account` ADD COLUMN `credit_effective_date` DATE DEFAULT NULL COMMENT '信用额度生效日期' AFTER `total_credit`, ADD COLUMN `credit_expire_date` DATE DEFAULT NULL COMMENT '信用额度失效日期(空=长期;到期次日清零)' AFTER `credit_effective_date`; -- ------------------------------------------------------------- -- 2. ctr_customer_credit_apply / ctr_customer_credit_flow:额度池归属 -- ------------------------------------------------------------- ALTER TABLE `ctr_customer_credit_apply` ADD COLUMN `approve_role_id` BIGINT(20) DEFAULT NULL COMMENT '审批占用的额度池角色ID(NULL=超管审批不占池)' AFTER `approve_user_id`; ALTER TABLE `ctr_customer_credit_flow` ADD COLUMN `role_id` BIGINT(20) DEFAULT NULL COMMENT '额度池角色ID(审批调整流水留痕;NULL=超管/系统)' AFTER `operator_id`; -- ------------------------------------------------------------- -- 3. 角色额度池 -- 一个角色一行;没有记录视为额度 0(该角色用户不能审批任何增量授信) -- ------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `sys_role_credit_quota` ( `role_id` BIGINT(20) NOT NULL COMMENT '角色ID(sys_role.role_id)', `total_quota` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '可分配额度总额(CNY)', `version` INT(11) NOT NULL DEFAULT 0 COMMENT '乐观锁版本号', `create_by` VARCHAR(64) DEFAULT '' COMMENT '创建者', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` VARCHAR(64) DEFAULT '' COMMENT '更新者', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`role_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色可分配授信额度池'; -- ------------------------------------------------------------- -- 4. 额度分配台账 -- 审批通过的净增额度在此占一行(占用角色池);调减/到期按 FIFO 核销行余额。 -- 角色池已用 = SUM(remaining WHERE role_id=? AND status='0') -- role_id 为 NULL 表示超管审批(不占池)或历史/建档直配额度。 -- ------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `ctr_customer_credit_grant` ( `grant_id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '台账ID', `customer_id` BIGINT(20) NOT NULL COMMENT '客户ID', `account_id` BIGINT(20) NOT NULL COMMENT '客户账户ID', `role_id` BIGINT(20) DEFAULT NULL COMMENT '占用的额度池角色ID(NULL=超管/不占池)', `approve_user_id` BIGINT(20) DEFAULT NULL COMMENT '审批人ID', `apply_id` BIGINT(20) DEFAULT NULL COMMENT '额度申请单ID', `flow_id` BIGINT(20) DEFAULT NULL COMMENT '额度流水ID', `credit_type` VARCHAR(16) NOT NULL COMMENT '额度类型:CREDIT信用额度 TEMP临时额度', `amount` DECIMAL(18,2) NOT NULL COMMENT '原始占用池金额', `remaining` DECIMAL(18,2) NOT NULL COMMENT '仍占用池的待释放余额', `effective_date` DATE DEFAULT NULL COMMENT '生效日期', `expire_date` DATE DEFAULT NULL COMMENT '失效日期', `status` CHAR(1) NOT NULL DEFAULT '0' COMMENT '状态:0占用中 1已释放', `release_time` DATETIME DEFAULT NULL COMMENT '全部释放时间', `create_by` VARCHAR(64) DEFAULT '' COMMENT '创建者', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` VARCHAR(64) DEFAULT '' COMMENT '更新者', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注', `del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标志(0存在 2删除)', PRIMARY KEY (`grant_id`), KEY `idx_role_status` (`role_id`, `status`), KEY `idx_customer_type_status` (`customer_id`, `credit_type`, `status`), KEY `idx_apply` (`apply_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='客户授信额度分配台账(角色池占用明细)';