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

289 lines
7.3 KiB
Markdown
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.

# 角色权限配置指南
> **作者**:湖北新华业务中台研发团队
> **日期**2026-01-31
> **用途**:管理员角色菜单权限配置和问题修复
---
## 一、问题说明
### 1.1 问题现象
登录管理后台后,左侧菜单栏**只显示盘古业务菜单**缺少RuoYi系统管理菜单
**缺失菜单**
-**系统管理**(用户管理、角色管理、菜单管理、部门管理等)
-**系统监控**(在线用户、定时任务、数据监控等)
-**系统工具**(表单构建、代码生成、系统接口)
-**若依官网**
**仅显示**
-**盘古管理**(学校、会员、学生、应用、基础数据)
### 1.2 原因分析
**根本原因**管理员角色role_id=1缺少RuoYi系统菜单的权限
**验证方法**
```sql
-- 检查管理员角色的菜单权限数量
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目录
```bash
cd /path/to/pangu-user-platform/sql
```
#### 步骤2执行修复脚本
```bash
./fix_admin_permissions.sh
```
#### 步骤3按提示确认
```
是否为管理员角色添加所有菜单权限?(y/n): y
```
#### 步骤4退出登录并重新登录
**⚠️ 重要**:权限修改后,必须**退出登录并重新登录**才会生效!
### 2.2 方法二手动执行SQL
```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 数据库验证
```sql
-- 验证权限总数
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 备份权限数据
```sql
-- 备份所有角色权限
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 恢复权限数据
```sql
-- 恢复角色权限
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*