-- ===================================================================== -- 部门管理 ·「包含子组」落库(方案:部门管理-包含子组落库方案.md) -- sys_group 增列 include_children:学校节点上的一个开关, -- 1 = 部门列表连同下级部门一起列出(默认)/ 0 = 只列一级部门 -- 交付文件,不在本机执行;由人工在 160 执行 -- 执行前请备份;JPA 实体已同名映射,执行后重启后端即可生效 -- ===================================================================== -- --------------------------------------------------------------------------- -- 1. 增列 include_children -- 粒度:1 学校 : 1 值,与 status 同为节点自身属性,故直接挂在 sys_group,不另建表 -- 默认 1:与升级前的页面表现一致,存量学校无需回填 -- ⚠ application.yml 是 ddl-auto=update,后端先发也会自动加列,但**不带** NOT NULL/DEFAULT/COMMENT, -- 存量会留 NULL。因此本脚本建议先执行,保证列定义可控;即使漏执行,前端已按 null = 含子组 兜底 -- --------------------------------------------------------------------------- SET @col := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sys_group' AND COLUMN_NAME = 'include_children'); SET @sql := IF(@col = 0, 'ALTER TABLE sys_group ADD COLUMN include_children TINYINT(1) NOT NULL DEFAULT 1 COMMENT ''包含子组:1=部门列表含下级部门,0=仅本级'' AFTER status', 'SELECT ''include_children already exists'' AS msg'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- --------------------------------------------------------------------------- -- 2. 核验(可选) -- --------------------------------------------------------------------------- -- SHOW COLUMNS FROM sys_group LIKE 'include_children'; -- SELECT COUNT(*) AS total, SUM(include_children = 1) AS include_on FROM sys_group; -- --------------------------------------------------------------------------- -- 回滚(仅当确认不再需要该能力时执行;只加列不改列,代码回滚无需删列) -- --------------------------------------------------------------------------- -- ALTER TABLE sys_group DROP COLUMN include_children;