sql
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
-- 订单列表:补齐当前代码实际使用的按钮权限(MySQL)。
|
||||
-- 同步计费 / 同步选中 / 行内同步计费:monitor:orderSource:sync。
|
||||
-- 检测产品:monitor:orderSource:list,与查询共用,无独立权限键。
|
||||
-- 操作记录:前端无独立权限指令,后端接口使用 monitor:orderSource:list。
|
||||
-- 只补菜单,不自动扩大业务角色权限;执行后在角色管理中勾选「同步计费」。
|
||||
-- 可重复执行;menu_id 使用自增,避免固定 ID 被占用。
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- 先确认订单列表父菜单。若无结果,需先补页面菜单,本脚本不会插入孤立按钮。
|
||||
SELECT menu_id, menu_name, parent_id, component, perms
|
||||
FROM sys_menu
|
||||
WHERE menu_type = 'C'
|
||||
AND (component = 'monitor/orderSource/index' OR perms = 'monitor:orderSource:list');
|
||||
|
||||
INSERT INTO sys_menu
|
||||
(menu_name, parent_id, order_num, path, component, is_frame, is_cache,
|
||||
menu_type, visible, status, perms, icon, create_by, create_time, remark)
|
||||
SELECT N'同步计费', p.menu_id, 2, '', NULL, 1, 0,
|
||||
'F', '0', '0', 'monitor:orderSource:sync', '#', 'admin', sysdate(),
|
||||
N'订单列表:同步计费、同步选中、行内同步计费共用权限'
|
||||
FROM sys_menu p
|
||||
WHERE p.menu_type = 'C'
|
||||
AND (p.component = 'monitor/orderSource/index' OR p.perms = 'monitor:orderSource:list')
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_menu b
|
||||
WHERE b.parent_id = p.menu_id
|
||||
AND b.menu_type = 'F'
|
||||
AND b.perms = 'monitor:orderSource:sync'
|
||||
);
|
||||
|
||||
-- 核对结果:应在订单列表下面看到「查询」「同步计费」。
|
||||
SELECT p.menu_id AS page_menu_id, p.menu_name AS page_name,
|
||||
b.menu_id AS button_menu_id, b.menu_name AS button_name, b.perms, b.status
|
||||
FROM sys_menu p
|
||||
LEFT JOIN sys_menu b ON b.parent_id = p.menu_id AND b.menu_type = 'F'
|
||||
WHERE p.menu_type = 'C'
|
||||
AND (p.component = 'monitor/orderSource/index' OR p.perms = 'monitor:orderSource:list')
|
||||
ORDER BY p.menu_id, b.order_num, b.menu_id;
|
||||
|
||||
-- 可选:如需 SQL 授权,确认目标角色 ID 后单独执行以下语句。
|
||||
-- 不要把截图中的角色权限字符 ORA_6043 直接当作数据库 role_id。
|
||||
-- SET @target_role_id = 6043; -- 请替换为已确认的 sys_role.role_id
|
||||
-- INSERT INTO sys_role_menu (role_id, menu_id)
|
||||
-- SELECT r.role_id, b.menu_id
|
||||
-- FROM sys_role r
|
||||
-- JOIN sys_role_menu granted ON granted.role_id = r.role_id
|
||||
-- JOIN sys_menu p ON p.menu_id = granted.menu_id AND p.menu_type = 'C'
|
||||
-- JOIN sys_menu b ON b.parent_id = p.menu_id AND b.menu_type = 'F'
|
||||
-- WHERE r.role_id = @target_role_id
|
||||
-- AND (p.component = 'monitor/orderSource/index' OR p.perms = 'monitor:orderSource:list')
|
||||
-- AND b.perms = 'monitor:orderSource:sync'
|
||||
-- AND NOT EXISTS (
|
||||
-- SELECT 1 FROM sys_role_menu rm
|
||||
-- WHERE rm.role_id = r.role_id AND rm.menu_id = b.menu_id
|
||||
-- );
|
||||
Reference in New Issue
Block a user