-- ============================================================= -- 角色体系整理:命名规范 + 全局角色统一 -- 表:yz_system_admin_role -- -- 整理后的角色模型: -- 平台端(cid=1, tenant_id=0): -- 总管理员 平台端最高权限(rights 为空 = 全权限),管理所有租户 -- 平台管理员 平台端运营人员(由第 4 段创建) -- 租户端(cid=2, tenant_id=0,全局共用,所有租户都能看到/使用): -- 租户管理员 租户内的管理员(rights 为空 = 全权限) -- 租户用户 租户内的普通用户(原「普通租户」改名,避免被误解为"租户实体") -- 租户自建角色(cid=2, tenant_id=租户ID, is_custom=1):租户端自行创建 -- -- 说明:本脚本幂等(按「id/旧名」匹配,重复执行不会重复改、不会误改)。 -- 运行:mysql --default-character-set=utf8mb4 -h -P -u -p < update_role_system.sql -- ============================================================= -- 1) 平台端最高角色:管理员 → 总管理员;并修正 cid / tenant_id / is_custom UPDATE `yz_system_admin_role` SET `name` = '总管理员', `cid` = 1, `tenant_id` = 0, `is_custom` = 0, `update_time` = NOW() WHERE `id` = 1 AND `name` = '管理员'; -- 2) 「租户管理员」由租户专属改为全局共用(tenant_id=0): -- 迁移后所有租户共用同一条记录,由平台端统一维护; -- 若全局已存在同名角色则不重复迁移(避免出现两条全局「租户管理员」)。 UPDATE `yz_system_admin_role` SET `tenant_id` = 0, `is_custom` = 0, `update_time` = NOW() WHERE `name` = '租户管理员' AND `tenant_id` > 0 AND NOT EXISTS ( SELECT 1 FROM ( SELECT `id` FROM `yz_system_admin_role` WHERE `name` = '租户管理员' AND `tenant_id` = 0 ) t ); -- 3) 「租户用户」(租户内的普通用户):原「普通租户」更名为「租户用户」 -- 3.1 改名(若全局已存在「租户用户」则不重复改名) UPDATE `yz_system_admin_role` SET `name` = '租户用户', `update_time` = NOW() WHERE `name` = '普通租户' AND `cid` = 2 AND NOT EXISTS ( SELECT 1 FROM ( SELECT `id` FROM `yz_system_admin_role` WHERE `name` = '租户用户' AND `cid` = 2 AND `tenant_id` = 0 ) t ); -- 3.2 确保「租户用户」为全局角色(幂等保险,已是全局时不生效) UPDATE `yz_system_admin_role` SET `cid` = 2, `tenant_id` = 0, `is_custom` = 0, `update_time` = NOW() WHERE `name` = '租户用户' AND `cid` = 2 AND (`tenant_id` <> 0 OR `is_custom` <> 0); -- 4) 平台端第二级角色「平台管理员」(幂等:已存在则跳过;默认未分配用户,按需在平台端用户管理中绑定) INSERT INTO `yz_system_admin_role` (`tenant_id`, `cid`, `is_custom`, `name`, `status`, `create_time`, `update_time`) SELECT 0, 1, 0, '平台管理员', 1, NOW(), NOW() WHERE NOT EXISTS ( SELECT 1 FROM (SELECT `id` FROM `yz_system_admin_role` WHERE `cid` = 1 AND `tenant_id` = 0 AND `name` = '平台管理员') t ); -- 5) 清理租户旧的预置角色「部门负责人」「员工」(仅删租户级预置角色,无用户绑定则删除无影响) -- 本环境已执行过;其它环境如仍在业务中使用请勿执行,租户需要时可在租户端自建自定义角色。 DELETE FROM `yz_system_admin_role` WHERE `name` IN ('部门负责人', '员工') AND `tenant_id` > 0 AND `is_custom` = 0; -- 校验:整理后的角色清单 SELECT id, cid, tenant_id, is_custom, name, status FROM yz_system_admin_role ORDER BY cid, tenant_id, id;