68 lines
3.6 KiB
SQL
68 lines
3.6 KiB
SQL
-- =============================================================
|
|
-- 角色体系整理:命名规范 + 全局角色统一
|
|
-- 表: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<host> -P<port> -u<user> -p <db> < 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;
|