Files
iotlcm/admin-svr/server/storage/data/pool_warn_config_permission.sql
T

100 lines
5.0 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ============================================================
-- 流量池预警配置独立权限码(业务受理入口卡片可独立隐藏)
-- ============================================================
-- 背景:
-- 「业务受理」页的入口卡片按 accessCodes 过滤显隐。
-- 「流量预警配置」与「流量池预警配置」原先共用同一组
-- cpm:iot:tSimWarningConfig:* 权限码,导致收权时两个入口一起消失。
-- 本脚本为流量池预警配置新增专属权限项
-- cpm:iot:tSimPoolWarnConfig:*,与原权限项并存。
--
-- 前置条件:Admin / UI 版本已包含「入口卡片按权限独立隐藏」的改动。
--
-- 兼容性:
-- 1) sys_menu 保留原有 4 条 tSimWarningConfig 权限项,不动。
-- 2) 新增的 4 条 tSimPoolWarnConfig 权限项,按「拥有对应旧权限项的角色」自动授权,
-- 因此存量角色在执行本脚本后:
-- - 仍能看到「流量预警配置」入口(旧权限码保留)
-- - 仍能看到「流量池预警配置」入口(新权限码已自动补授)
-- - 调用 /iot/tSimWarningConfig/* 接口不会 403
-- (后端已把接口的 x-check-permission 改为「新码 OR 旧码」)
-- 3) 后续若只想关闭「流量池预警配置」,管理员在角色管理里去掉新权限项即可,
-- 不再影响「流量预警配置」。
-- 4) 超级管理员(role_id=1)走独立的超管判定,不依赖菜单权限,无需授权。
--
-- 执行范围:生产 / 预演 / 演示 环境各自的 db_iotlcm 库。
-- 幂等:可重复执行(先删后插)。
--
-- ============================================================
-- ------------------------------------------------------------
-- 1) 新增 4 条流量池预警配置权限项(挂在「业务受理」菜单下)
-- ------------------------------------------------------------
DELETE FROM sys_menu
WHERE perms IN (
'iot:tSimPoolWarnConfig:excel:template',
'iot:tSimPoolWarnConfig:excel:submit',
'iot:tSimPoolWarnConfig:input:submit',
'iot:tSimPoolWarnConfig:range:submit'
);
INSERT INTO sys_menu
(menu_name, parent_id, level, order_num, path, component, query_param,
is_frame, is_cache, menu_type, visible, status, perms, icon, remark)
SELECT permissions.name, parent.menu_id, 2, permissions.order_num, '', '', '',
1, 0, 'F', '0', '0', permissions.perms, '#', '流量池预警配置(独立权限)'
FROM sys_menu AS parent
JOIN (
SELECT '下载流量池预警配置Excel模板' AS name, 20 AS order_num, 'iot:tSimPoolWarnConfig:excel:template' AS perms
UNION ALL SELECT '提交流量池预警配置Excel', 21, 'iot:tSimPoolWarnConfig:excel:submit'
UNION ALL SELECT '批量输入流量池预警配置', 22, 'iot:tSimPoolWarnConfig:input:submit'
UNION ALL SELECT '连号流量池预警配置', 23, 'iot:tSimPoolWarnConfig:range:submit'
) AS permissions
WHERE parent.component = 'iotlcm/tCommunication/tBusinessAcceptance/index';
-- ------------------------------------------------------------
-- 2) 角色授权:把新权限项授予「原本就拥有对应旧权限项」的角色
-- (即拥有 tSimWarningConfig 权限的角色,同步获得 tSimPoolWarnConfig)
-- 注意:sys_role_menu 的 (tenant_id, role_id, menu_id) 是联合主键,
-- data_scope 为 NOT NULL,沿用旧授权行的取值。
-- ------------------------------------------------------------
DELETE FROM sys_role_menu
WHERE menu_id IN (
SELECT menu_id FROM sys_menu
WHERE perms IN (
'iot:tSimPoolWarnConfig:excel:template',
'iot:tSimPoolWarnConfig:excel:submit',
'iot:tSimPoolWarnConfig:input:submit',
'iot:tSimPoolWarnConfig:range:submit'
)
);
INSERT INTO sys_role_menu (tenant_id, role_id, menu_id, data_scope)
SELECT old.tenant_id, old.role_id, new.menu_id, old.data_scope
FROM sys_role_menu AS old
JOIN sys_menu AS old_menu ON old_menu.menu_id = old.menu_id
JOIN sys_menu AS new
ON new.parent_id = old_menu.parent_id
AND new.perms = REPLACE(old_menu.perms, 'iot:tSimWarningConfig:', 'iot:tSimPoolWarnConfig:')
WHERE old_menu.perms IN (
'iot:tSimWarningConfig:excel:template',
'iot:tSimWarningConfig:excel:submit',
'iot:tSimWarningConfig:input:submit',
'iot:tSimWarningConfig:range:submit'
);
-- ------------------------------------------------------------
-- 3) 校验(执行后手工跑,确认与预期一致)
-- ------------------------------------------------------------
-- SELECT perms, COUNT(*) FROM sys_menu
-- WHERE perms LIKE 'iot:tSimPoolWarnConfig:%' GROUP BY perms;
-- 期望 4 行,各 1 条
--
-- SELECT r.role_id, r.role_name, COUNT(*) AS new_perms
-- FROM sys_role_menu rm
-- JOIN sys_menu m ON m.menu_id = rm.menu_id
-- JOIN sys_role r ON r.role_id = rm.role_id
-- WHERE m.perms LIKE 'iot:tSimPoolWarnConfig:%'
-- GROUP BY r.role_id, r.role_name;
-- 期望:与拥有 tSimWarningConfig 权限的角色集合完全相同