-- ================================================== -- 修复毕业生菜单结构 - 404错误解决方案 -- 创建日期: 2025-01-26 -- 说明: 将错误的C类型嵌套改为正确的M类型目录+C类型页面结构 -- ================================================== -- 1. 查看修复前的结构 SELECT '=== 修复前的菜单结构 ===' as info; SELECT menu_id, parent_id, menu_name, path, component, menu_type, visible FROM sys_menu WHERE menu_id BETWEEN 8800 AND 8804 ORDER BY menu_id; -- 2. 删除现有的错误权限关联 DELETE FROM sys_role_menu WHERE menu_id BETWEEN 8801 AND 8816; -- 3. 重新创建毕业生管理目录菜单(M类型) INSERT INTO sys_menu ( menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark ) VALUES ( 8800, '毕业生管理', 8000, 3, 'graduate', NULL, NULL, 1, 0, 'M', '0', '0', NULL, 'education', 103, NOW(), 103, NOW(), '毕业生信息管理目录' ); -- 4. 修改现有菜单的parent_id和path,改为正确的目录结构 UPDATE sys_menu SET parent_id = 8800, path = 'info', order_num = 1 WHERE menu_id = 8801; UPDATE sys_menu SET parent_id = 8800, path = 'info/add', order_num = 2, visible = '1' WHERE menu_id = 8802; UPDATE sys_menu SET parent_id = 8800, path = 'info/edit/:id(\\d+)', order_num = 3, visible = '1' WHERE menu_id = 8803; UPDATE sys_menu SET parent_id = 8800, path = 'statistics', order_num = 4 WHERE menu_id = 8804; -- 5. 重新分配权限给超级管理员 INSERT INTO sys_role_menu (role_id, menu_id) VALUES (1, 8800), -- 毕业生管理目录菜单 (1, 8801), -- 毕业生信息子菜单 (1, 8802), -- 毕业生信息新增页面 (1, 8803), -- 毕业生信息编辑页面 (1, 8804), -- 毕业生统计分析页面 (1, 8810), -- 毕业生信息查询权限 (1, 8811), -- 毕业生信息新增权限 (1, 8812), -- 毕业生信息修改权限 (1, 8813), -- 毕业生信息删除权限 (1, 8814), -- 毕业生信息导出权限 (1, 8815), -- 毕业生信息审核权限 (1, 8816); -- 毕业生统计分析权限 -- 6. 验证修复后的结构 SELECT '=== 修复后的菜单结构 ===' as info; SELECT menu_id, parent_id, menu_name, path, component, menu_type, visible FROM sys_menu WHERE menu_id BETWEEN 8800 AND 8804 ORDER BY menu_id; -- 7. 验证权限分配结果 SELECT '=== 超级管理员权限分配验证 ===' as info; SELECT rm.role_id, r.role_name, rm.menu_id, m.menu_name, m.path FROM sys_role_menu rm JOIN sys_role r ON rm.role_id = r.role_id JOIN sys_menu m ON rm.menu_id = m.menu_id WHERE rm.role_id = 1 AND rm.menu_id BETWEEN 8800 AND 8816 ORDER BY rm.menu_id;