Files
BMS/bms-back/sql/customer+supplier/role_credit_quota.sql
T
2026-09-20 10:26:30 +08:00

77 lines
5.2 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================================
-- 角色额度池 + 客户信用额度有效期 改造
-- 1. customer_account 新增信用额度生效/失效日期(与临时额度口径一致,到期次日自动清零)
-- 2. customer_credit_apply 新增 approve_role_id,记录审批占用的额度池角色
-- 3. customer_credit_flow 新增 role_id,流水留痕额度池归属角色
-- 4. 新表 sys_role_credit_quota:管理员为角色设置的可分配额度总额(额度池)
-- 5. 新表 customer_credit_grant:审批增量额度的占用台账(池余额=该表remaining求和)
-- 2026-09-20
-- 说明:ALTER 语句非自动幂等,若字段/表已存在,对应语句会报 Duplicate/already exists,忽略即可
-- =============================================================
SET NAMES utf8mb4;
-- -------------------------------------------------------------
-- 1. customer_account:信用额度有效期
-- -------------------------------------------------------------
ALTER TABLE `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. customer_credit_apply / customer_credit_flow:额度池归属
-- -------------------------------------------------------------
ALTER TABLE `customer_credit_apply`
ADD COLUMN `approve_role_id` BIGINT(20) DEFAULT NULL COMMENT '审批占用的额度池角色ID(NULL=超管审批不占池)' AFTER `approve_user_id`;
ALTER TABLE `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 `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='客户授信额度分配台账(角色池占用明细)';