-- ============================================= -- 租户相关数据库变更脚本 -- 用于若依框架 SAAS 化迁移 -- ============================================= -- ---------------------------- -- 1. 创建租户表 -- ---------------------------- DROP TABLE IF EXISTS `sys_tenant`; CREATE TABLE `sys_tenant` ( `tenant_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '租户ID', `tenant_code` varchar(50) NOT NULL COMMENT '租户编码(唯一)', `tenant_name` varchar(100) NOT NULL COMMENT '租户名称', `tenant_type` varchar(20) NOT NULL DEFAULT 'COMPANY' COMMENT '租户类型: COMPANY-企业', `company_type` varchar(20) NULL COMMENT '公司类型: BANK-银行, CLIENT-甲方, LABOR-劳务公司', `contact_person` varchar(50) NULL COMMENT '联系人', `contact_phone` varchar(20) NULL COMMENT '联系电话', `contact_email` varchar(100) NULL COMMENT '联系邮箱', `domain` varchar(100) NULL COMMENT '租户域名', `logo_url` varchar(500) NULL COMMENT 'Logo URL', `status` varchar(10) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态: ACTIVE-正常, FROZEN-冻结, DELETED-已删除', `max_users` int(11) NULL DEFAULT 10 COMMENT '最大用户数', `max_companies` int(11) NULL DEFAULT 5 COMMENT '最大公司数', `expire_date` date NULL COMMENT '过期日期', `package_id` bigint(20) NULL COMMENT '套餐ID', `create_by` varchar(64) NULL DEFAULT '' COMMENT '创建者', `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) NULL DEFAULT '' COMMENT '更新者', `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `remark` varchar(500) NULL COMMENT '备注', PRIMARY KEY (`tenant_id`), UNIQUE INDEX `uk_tenant_code`(`tenant_code` ASC), INDEX `idx_status`(`status` ASC), INDEX `idx_company_type`(`company_type` ASC) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='租户表'; -- ---------------------------- -- 2. 初始化默认租户 (兼容现有数据) -- ---------------------------- INSERT INTO `sys_tenant` (`tenant_id`, `tenant_code`, `tenant_name`, `tenant_type`, `company_type`, `status`, `max_users`, `max_companies`, `remark`) VALUES (1, 'DEFAULT', '默认租户', 'COMPANY', NULL, 'ACTIVE', 1000, 100, '系统默认租户,兼容历史数据'); -- ---------------------------- -- 3. 为 sys_user 表添加 tenant_id 字段 -- ---------------------------- ALTER TABLE `sys_user` ADD COLUMN `tenant_id` bigint(20) NULL DEFAULT 1 COMMENT '租户ID' AFTER `del_flag`; ALTER TABLE `sys_user` ADD INDEX `idx_user_tenant_id`(`tenant_id` ASC); -- ---------------------------- -- 4. 为 sys_dept 表添加 tenant_id 字段 -- ---------------------------- ALTER TABLE `sys_dept` ADD COLUMN `tenant_id` bigint(20) NULL DEFAULT 1 COMMENT '租户ID' AFTER `dept_id`; ALTER TABLE `sys_dept` ADD INDEX `idx_dept_tenant_id`(`tenant_id` ASC); -- ---------------------------- -- 5. 为 dc_contract 表添加 tenant_id 字段 -- ---------------------------- ALTER TABLE `dc_contract` ADD COLUMN `tenant_id` bigint(20) NULL DEFAULT 1 COMMENT '租户ID' AFTER `contract_id`; ALTER TABLE `dc_contract` ADD INDEX `idx_contract_tenant_id`(`tenant_id` ASC); -- ---------------------------- -- 6. 为 dc_service_contract 表添加 tenant_id 字段 -- ---------------------------- ALTER TABLE `dc_service_contract` ADD COLUMN `tenant_id` bigint(20) NULL DEFAULT 1 COMMENT '租户ID' AFTER `service_contract_id`; ALTER TABLE `dc_service_contract` ADD INDEX `idx_service_contract_tenant_id`(`tenant_id` ASC); -- ---------------------------- -- 7. 为 dc_employee_info 表添加 tenant_id 字段 -- ---------------------------- ALTER TABLE `dc_employee_info` ADD COLUMN `tenant_id` bigint(20) NULL DEFAULT 1 COMMENT '租户ID' AFTER `employee_id`; ALTER TABLE `dc_employee_info` ADD INDEX `idx_employee_tenant_id`(`tenant_id` ASC); -- ---------------------------- -- 8. 为 dc_employee_library 表添加 tenant_id 字段 -- ---------------------------- ALTER TABLE `dc_employee_library` ADD COLUMN `tenant_id` bigint(20) NULL DEFAULT 1 COMMENT '租户ID' AFTER `library_id`; ALTER TABLE `dc_employee_library` ADD INDEX `idx_library_tenant_id`(`tenant_id` ASC); -- ---------------------------- -- 9. 为 dc_credit 表添加 tenant_id 字段 -- ---------------------------- ALTER TABLE `dc_credit` ADD COLUMN `tenant_id` bigint(20) NULL DEFAULT 1 COMMENT '租户ID' AFTER `credit_id`; ALTER TABLE `dc_credit` ADD INDEX `idx_credit_tenant_id`(`tenant_id` ASC); -- ---------------------------- -- 10. 为 dc_financing 表添加 tenant_id 字段 -- ---------------------------- ALTER TABLE `dc_financing` ADD COLUMN `tenant_id` bigint(20) NULL DEFAULT 1 COMMENT '租户ID' AFTER `financing_id`; ALTER TABLE `dc_financing` ADD INDEX `idx_financing_tenant_id`(`tenant_id` ASC); -- ---------------------------- -- 11. 为 dc_company_relationship 表添加 tenant_id 字段 -- ---------------------------- ALTER TABLE `dc_company_relationship` ADD COLUMN `tenant_id` bigint(20) NULL DEFAULT 1 COMMENT '租户ID' AFTER `relationship_id`; ALTER TABLE `dc_company_relationship` ADD INDEX `idx_relationship_tenant_id`(`tenant_id` ASC); -- ---------------------------- -- 12. 为 dc_bank_institution 表添加 tenant_id 字段 -- ---------------------------- ALTER TABLE `dc_bank_institution` ADD COLUMN `tenant_id` bigint(20) NULL DEFAULT 1 COMMENT '租户ID' AFTER `bank_id`; ALTER TABLE `dc_bank_institution` ADD INDEX `idx_bank_tenant_id`(`tenant_id` ASC); -- ---------------------------- -- 13. 为 dc_service_period 表添加 tenant_id 字段 -- ---------------------------- ALTER TABLE `dc_service_period` ADD COLUMN `tenant_id` bigint(20) NULL DEFAULT 1 COMMENT '租户ID' AFTER `service_period_id`; ALTER TABLE `dc_service_period` ADD INDEX `idx_service_period_tenant_id`(`tenant_id` ASC); -- ---------------------------- -- 14. 为 dc_service_period_loan 表添加 tenant_id 字段 -- ---------------------------- ALTER TABLE `dc_service_period_loan` ADD COLUMN `tenant_id` bigint(20) NULL DEFAULT 1 COMMENT '租户ID' AFTER `link_id`; ALTER TABLE `dc_service_period_loan` ADD INDEX `idx_loan_tenant_id`(`tenant_id` ASC); -- ---------------------------- -- 15. 更新现有数据的 tenant_id (根据 company_id 关联) -- ---------------------------- -- 注意:此脚本需要在确认现有公司数据后再执行 -- 以下为示例逻辑,实际执行时需要根据具体业务逻辑调整 -- 更新用户的 tenant_id 为 1 (默认租户) UPDATE sys_user SET tenant_id = 1 WHERE tenant_id IS NULL; -- 更新部门的 tenant_id 为 1 (默认租户) UPDATE sys_dept SET tenant_id = 1 WHERE tenant_id IS NULL;