From 0a7f6391385e7a86d6f1532116a7a7288e8a6f1b Mon Sep 17 00:00:00 2001 From: caojia <1301869380@qq.com> Date: Thu, 15 Oct 2026 18:49:16 +0800 Subject: [PATCH] sql --- .../order_source_button_permissions.sql | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 bms-back/sql/monitor/order_source_button_permissions.sql diff --git a/bms-back/sql/monitor/order_source_button_permissions.sql b/bms-back/sql/monitor/order_source_button_permissions.sql new file mode 100644 index 00000000..bba76438 --- /dev/null +++ b/bms-back/sql/monitor/order_source_button_permissions.sql @@ -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 +-- );