pangu-user-platform/docs/07-运维文档/角色权限配置指南.md

7.3 KiB
Raw Blame History

角色权限配置指南

作者:湖北新华业务中台研发团队
日期2026-01-31
用途:管理员角色菜单权限配置和问题修复


一、问题说明

1.1 问题现象

登录管理后台后,左侧菜单栏只显示盘古业务菜单缺少RuoYi系统管理菜单

缺失菜单

  • 系统管理(用户管理、角色管理、菜单管理、部门管理等)
  • 系统监控(在线用户、定时任务、数据监控等)
  • 系统工具(表单构建、代码生成、系统接口)
  • 盘古官网

仅显示

  • 盘古管理(学校、会员、学生、应用、基础数据)

1.2 原因分析

根本原因管理员角色role_id=1缺少RuoYi系统菜单的权限

验证方法

-- 检查管理员角色的菜单权限数量
SELECT COUNT(*) FROM sys_role_menu WHERE role_id = 1;

-- 统计各类型菜单权限
SELECT 
    CASE 
        WHEN m.menu_id < 2000 THEN 'RuoYi系统菜单'
        ELSE '盘古业务菜单'
    END AS menu_type,
    COUNT(*) as count
FROM sys_role_menu rm
INNER JOIN sys_menu m ON rm.menu_id = m.menu_id
WHERE rm.role_id = 1
GROUP BY CASE WHEN m.menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END;

问题权限配置

RuoYi系统菜单0条    ❌ (应该有72条)
盘古业务菜单:  30条   ✅
合计:         30条   ❌ (应该有118条)

二、解决方案

2.1 方法一:使用修复脚本(推荐)

步骤1进入SQL目录

cd /path/to/pangu-user-platform/sql

步骤2执行修复脚本

./fix_admin_permissions.sh

步骤3按提示确认

是否为管理员角色添加所有菜单权限?(y/n): y

步骤4退出登录并重新登录

⚠️ 重要:权限修改后,必须退出登录并重新登录才会生效!

2.2 方法二手动执行SQL

-- 1. 删除管理员角色现有权限
DELETE FROM sys_role_menu WHERE role_id = 1;

-- 2. 为管理员角色添加所有菜单权限
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT 1, menu_id FROM sys_menu;

-- 3. 验证权限数量
SELECT COUNT(*) as total FROM sys_role_menu WHERE role_id = 1;
-- 预期结果118条

2.3 方法三:通过管理界面配置

步骤

  1. 以管理员身份登录(如果能看到系统管理菜单)
  2. 进入 系统管理 > 角色管理
  3. 点击超级管理员角色的修改按钮
  4. 菜单权限标签页,勾选所有菜单
  5. 点击提交保存

注意:此方法前提是能看到系统管理菜单。如果看不到,请使用方法一或方法二。


三、验证结果

3.1 数据库验证

-- 验证权限总数
SELECT COUNT(*) as total FROM sys_role_menu WHERE role_id = 1;
-- 预期结果118条

-- 验证各类型菜单权限
SELECT 
    CASE 
        WHEN m.menu_id < 2000 THEN 'RuoYi系统菜单'
        ELSE '盘古业务菜单'
    END AS menu_type,
    COUNT(*) as count
FROM sys_role_menu rm
INNER JOIN sys_menu m ON rm.menu_id = m.menu_id
WHERE rm.role_id = 1
GROUP BY CASE WHEN m.menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END;
-- 预期结果:
-- RuoYi系统菜单  72
-- 盘古业务菜单    46

-- 验证顶级菜单权限
SELECT m.menu_id, m.menu_name, m.order_num
FROM sys_menu m
INNER JOIN sys_role_menu rm ON m.menu_id = rm.menu_id
WHERE rm.role_id = 1 AND m.parent_id = 0
ORDER BY m.order_num;
-- 预期结果:盘古管理、系统管理、系统监控、系统工具、盘古官网

3.2 前端页面验证

退出登录并重新登录后,菜单栏应显示:

📋 盘古管理 ✅
  ├─ 学校管理
  ├─ 会员管理
  ├─ 学生管理
  ├─ 应用管理
  └─ 基础数据

⚙️ 系统管理 ✅ (新增)
  ├─ 用户管理
  ├─ 角色管理
  ├─ 菜单管理
  ├─ 部门管理
  ├─ 岗位管理
  ├─ 字典管理
  ├─ 参数设置
  ├─ 通知公告
  └─ 日志管理

📊 系统监控 ✅ (新增)
  ├─ 在线用户
  ├─ 定时任务
  ├─ 数据监控
  ├─ 服务监控
  └─ 缓存监控

🔧 系统工具 ✅ (新增)
  ├─ 表单构建
  ├─ 代码生成
  └─ 系统接口

🌐 盘古官网 ✅ (新增)

四、角色权限管理

4.1 权限分配原则

角色 权限范围 建议配置
超级管理员 所有菜单 118个菜单全部勾选
普通管理员 业务菜单 盘古管理46个菜单
教师 部分业务菜单 会员管理、学生管理
家长 查看功能 学生查询、学校查询

4.2 新建角色权限配置

步骤

  1. 系统管理 > 角色管理 > 点击新增
  2. 填写角色信息(角色名称、权限字符、排序)
  3. 设置菜单权限
    • 系统管理员:勾选所有菜单
    • 业务管理员:只勾选盘古管理下的菜单
    • 教师/家长:根据需要勾选特定菜单
  4. 设置数据权限(本部门数据/全部数据等)
  5. 点击提交保存

4.3 修改用户角色

步骤

  1. 系统管理 > 用户管理 > 点击用户的修改按钮
  2. 角色下拉框中选择角色
  3. 点击提交保存
  4. ⚠️ 用户需要退出登录并重新登录

五、常见问题

Q1修复权限后仍然看不到菜单

A:请按以下步骤排查:

  1. 退出登录并重新登录(必须!)
  2. 清除浏览器缓存
  3. 检查菜单状态:SELECT menu_id, menu_name, visible, status FROM sys_menu WHERE parent_id = 0;
    • visible = '0' 表示显示
    • status = '0' 表示正常
  4. 检查用户角色:SELECT * FROM sys_user_role WHERE user_id = 1;

Q2只想给部分菜单权限怎么办

A:不要使用修复脚本,通过管理界面手动勾选:

  1. 系统管理 > 角色管理 > 修改角色
  2. 菜单权限标签页,只勾选需要的菜单
  3. 点击提交保存

Q3新用户如何分配权限

A

  1. 系统管理 > 用户管理 > 新增用户
  2. 角色下拉框中选择合适的角色
  3. 如果需要特殊权限,先创建新角色再分配

Q4权限修复脚本会影响其他角色吗

A不会。脚本只修复role_id=1超级管理员的权限其他角色不受影响。


六、权限数据备份

6.1 备份权限数据

-- 备份所有角色权限
CREATE TABLE sys_role_menu_backup_20260131 AS 
SELECT * FROM sys_role_menu;

-- 备份用户角色关系
CREATE TABLE sys_user_role_backup_20260131 AS 
SELECT * FROM sys_user_role;

6.2 恢复权限数据

-- 恢复角色权限
TRUNCATE TABLE sys_role_menu;
INSERT INTO sys_role_menu SELECT * FROM sys_role_menu_backup_20260131;

-- 恢复用户角色
TRUNCATE TABLE sys_user_role;
INSERT INTO sys_user_role SELECT * FROM sys_user_role_backup_20260131;

七、相关文件

文件路径 说明
sql/fix_admin_permissions.sh 管理员权限自动修复脚本
sql/sys_menu_complete.sql 完整菜单数据SQL
docs/07-运维文档/菜单数据恢复指南.md 菜单数据恢复文档

八、技术支持

如有问题,请联系:湖北新华业务中台研发团队


最后更新2026-01-31