# 菜单数据恢复指南

> **作者**：湖北新华业务中台研发团队  
> **日期**：2026-01-31  
> **用途**：恢复完整的系统菜单（RuoYi系统管理菜单 + 盘古业务菜单）

---

## 一、问题说明

### 1.1 问题现象

系统菜单栏缺少RuoYi默认的系统管理菜单，只显示盘古业务菜单，导致无法访问：

- **系统管理**：用户管理、角色管理、菜单管理、部门管理、岗位管理、字典管理、参数设置、通知公告、日志管理
- **系统监控**：在线用户、定时任务、数据监控、服务监控、缓存监控
- **系统工具**：表单构建、代码生成、系统接口

### 1.2 原因分析

初始化数据库时，只导入了盘古业务菜单（`pangu_menu.sql`），缺少RuoYi系统菜单数据。

---

## 二、解决方案

### 2.1 完整菜单SQL文件

已创建完整菜单SQL文件：**`sql/sys_menu_complete.sql`**

包含内容：
- **RuoYi系统菜单**：72条（menu_id 1-1999）
- **盘古业务菜单**：46条（menu_id 2000-2070）
- **合计**：118条菜单

### 2.2 方法一：使用导入脚本（推荐）

#### 步骤1：进入SQL目录
```bash
cd /path/to/pangu-user-platform/sql
```

#### 步骤2：执行导入脚本
```bash
./import_menu.sh
```

#### 步骤3：按提示确认
```
此操作将清空并重新导入菜单数据，是否继续？(y/n): y
```

#### 步骤4：查看导入结果
脚本会自动显示菜单统计信息和顶级菜单列表。

### 2.3 方法二：手动导入SQL

```bash
mysql -h127.0.0.1 -P3306 -uroot -p123456 pangu_user_platform < sql/sys_menu_complete.sql
```

### 2.4 方法三：使用数据库客户端

1. 使用Navicat/DataGrip/DBeaver等工具连接数据库
2. 打开`sql/sys_menu_complete.sql`文件
3. 执行SQL脚本

---

## 三、验证结果

### 3.1 数据库验证

```sql
-- 统计菜单总数
SELECT COUNT(*) AS total FROM sys_menu;
-- 预期结果：118条

-- 统计各类型菜单
SELECT 
    CASE 
        WHEN menu_id < 2000 THEN 'RuoYi系统菜单'
        ELSE '盘古业务菜单'
    END AS menu_type,
    COUNT(*) AS count
FROM sys_menu
GROUP BY CASE WHEN menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END;
-- 预期结果：
-- RuoYi系统菜单  72
-- 盘古业务菜单    46

-- 查看顶级菜单
SELECT menu_id, menu_name, order_num, visible, status 
FROM sys_menu 
WHERE parent_id = 0 
ORDER BY order_num;
-- 预期结果：
-- 1    系统管理    1    0    0
-- 2    系统监控    2    0    0
-- 3    系统工具    3    0    0
-- 4    若依官网    4    0    0
-- 2000 盘古管理    0    0    0
```

### 3.2 前端页面验证

刷新浏览器，菜单栏应该显示：

```
📋 盘古管理 (menu_id 2000，order_num 0 - 最前面)
  ├─ 学校管理
  ├─ 会员管理
  ├─ 学生管理
  ├─ 应用管理
  └─ 基础数据
      ├─ 年级管理
      ├─ 班级管理
      ├─ 学科管理
      └─ 区域管理

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

📊 系统监控 (menu_id 2，order_num 2)
  ├─ 在线用户
  ├─ 定时任务
  ├─ 数据监控
  ├─ 服务监控
  └─ 缓存监控

🔧 系统工具 (menu_id 3，order_num 3)
  ├─ 表单构建
  ├─ 代码生成
  └─ 系统接口

🌐 若依官网 (menu_id 4，order_num 4)
```

---

## 四、注意事项

### 4.1 数据备份

**重要**：执行导入前，建议备份当前菜单数据：

```sql
-- 备份菜单表
CREATE TABLE sys_menu_backup_20260131 AS SELECT * FROM sys_menu;
```

### 4.2 权限影响

导入菜单后，需要检查角色权限配置：

```sql
-- 查看admin角色的菜单权限
SELECT COUNT(*) FROM sys_role_menu WHERE role_id = 1;
```

如果权限不足，需要在**系统管理 > 角色管理**中重新分配菜单权限。

### 4.3 菜单顺序

- **盘古管理**：`order_num = 0`（显示在最前面）
- **系统管理**：`order_num = 1`
- **系统监控**：`order_num = 2`
- **系统工具**：`order_num = 3`
- **若依官网**：`order_num = 4`

如需调整顺序，可在**系统管理 > 菜单管理**中修改`显示排序`字段。

### 4.4 菜单ID范围

为避免ID冲突，请遵守以下规则：
- **RuoYi系统菜单**：menu_id 1-1999
- **盘古业务菜单**：menu_id >= 2000

新增业务菜单时，menu_id从2100开始。

---

## 五、常见问题

### Q1：导入后菜单显示不全？

**A**：清除浏览器缓存或使用无痕模式重新登录。

### Q2：导入失败提示"Access denied"？

**A**：检查数据库用户权限，确保有`DELETE`和`INSERT`权限。

### Q3：菜单顺序不对？

**A**：在**系统管理 > 菜单管理**中调整`显示排序`字段。

### Q4：部分菜单无法访问？

**A**：在**系统管理 > 角色管理**中，为对应角色分配菜单权限。

---

## 六、相关文件

| 文件路径 | 说明 |
|---------|------|
| `sql/sys_menu_complete.sql` | 完整菜单SQL（RuoYi + 盘古） |
| `sql/import_menu.sh` | 自动导入脚本 |
| `sql/pangu_menu.sql` | 盘古业务菜单（仅业务部分） |
| `sql/ry_20250522.sql` | RuoYi原始完整SQL |

---

## 七、技术支持

如有问题，请联系：**湖北新华业务中台研发团队**

---

*最后更新：2026-01-31*
