33 lines
1.6 KiB
SQL
33 lines
1.6 KiB
SQL
-- =============================================================
|
|
-- 角色「平台下发 + 租户只读」显式锁定 - 增量迁移
|
|
--
|
|
-- 场景:平台端可建 cid=2 且 tenant_id=0 的全局角色下发到租户后台。
|
|
-- 此前"租户不可改/不可删"的判定绑死在 tenant_id==0 上,
|
|
-- 一是无法表达"落到具体租户头上但仍只读",
|
|
-- 二是后端看 tenant_id、前端看 is_custom,两处口径不一致会漂移。
|
|
-- 本迁移把锁定语义收敛为独立列 is_locked。
|
|
--
|
|
-- 执行顺序:
|
|
-- 1) 加 is_locked / source_role_id 两列
|
|
-- 2) 回填:现存全局租户角色(cid=2 且 tenant_id=0)标记为锁定,
|
|
-- 保证代码改用 is_locked 判定后,这两个角色不会突然变得可被租户改写。
|
|
--
|
|
-- 注意:MySQL 不支持 ADD COLUMN IF NOT EXISTS,本脚本重复执行会在第 1 步
|
|
-- 报 Duplicate column name 并停止,属预期,不会破坏已回填的数据。
|
|
-- =============================================================
|
|
|
|
-- 1. 角色表补锁定列
|
|
ALTER TABLE `yz_system_admin_role`
|
|
ADD COLUMN `is_locked` TINYINT UNSIGNED NOT NULL DEFAULT 0
|
|
COMMENT '1=平台下发,租户端只读(不可改名/改权限/删除)' AFTER `is_custom`,
|
|
ADD COLUMN `source_role_id` BIGINT UNSIGNED NOT NULL DEFAULT 0
|
|
COMMENT '来源角色ID(平台下发时记录,0=非下发)' AFTER `is_locked`;
|
|
|
|
-- 2. 回填存量全局租户角色
|
|
UPDATE `yz_system_admin_role`
|
|
SET `is_locked` = 1
|
|
WHERE `cid` = 2
|
|
AND `tenant_id` = 0
|
|
AND `delete_time` IS NULL
|
|
AND `is_locked` = 0;
|