add_home_dashboard_menu.sql 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. -- 首页:根级一级菜单 menu_code=dashboard(id=90),无二级子菜单
  2. -- 兼容旧版「90 目录 + 91 子菜单」;可重复执行
  3. START TRANSACTION;
  4. -- 下线旧首页目录(仅类型为目录且无编码的 id=90)
  5. UPDATE bx_menu SET del_flag = 1, update_time = NOW()
  6. WHERE id = 90 AND parent_id = 0 AND menu_type = 1 AND (menu_code IS NULL OR menu_code = '');
  7. -- 旧子菜单 91 先提升为根级(便于后续把权限迁到 90)
  8. UPDATE bx_menu SET
  9. parent_id = 0,
  10. menu_name = '首页',
  11. menu_code = 'dashboard',
  12. menu_type = 2,
  13. path = '/home',
  14. sort_order = 0,
  15. del_flag = 0,
  16. update_time = NOW()
  17. WHERE id = 91 AND menu_code = 'dashboard';
  18. -- 统一主键为 90:插入或覆盖为根级首页
  19. INSERT INTO bx_menu (
  20. id, parent_id, menu_name, menu_code, menu_type, path, icon, sort_order, visible, status,
  21. remark, create_by, create_time, update_by, update_time, del_flag
  22. ) VALUES (
  23. 90, 0, '首页', 'dashboard', 2, '/home', NULL, 0, 1, 1,
  24. NULL, 'system', NOW(), 'system', NOW(), 0
  25. )
  26. ON DUPLICATE KEY UPDATE
  27. parent_id = VALUES(parent_id),
  28. menu_name = VALUES(menu_name),
  29. menu_code = VALUES(menu_code),
  30. menu_type = VALUES(menu_type),
  31. path = VALUES(path),
  32. sort_order = VALUES(sort_order),
  33. del_flag = 0,
  34. status = 1,
  35. update_time = NOW();
  36. -- 原只授权了 91 的角色,补授权 90
  37. INSERT IGNORE INTO bx_menu_role (menu_id, role_id, create_time)
  38. SELECT 90, role_id, NOW() FROM bx_menu_role WHERE menu_id = 91;
  39. -- 下线重复的 91
  40. UPDATE bx_menu SET del_flag = 1, update_time = NOW() WHERE id = 91;
  41. DELETE FROM bx_menu_role WHERE menu_id = 91;
  42. -- 已删除的旧目录 90 的无效角色关联
  43. DELETE FROM bx_menu_role WHERE menu_id = 90 AND NOT EXISTS (
  44. SELECT 1 FROM bx_menu m WHERE m.id = 90 AND m.del_flag = 0
  45. );
  46. -- 所有角色具备首页(若尚未配置)
  47. INSERT IGNORE INTO bx_menu_role (menu_id, role_id, create_time)
  48. SELECT 90, r.id, NOW() FROM bx_role r WHERE r.del_flag = 0;
  49. COMMIT;