-- 首页:根级一级菜单 menu_code=dashboard(id=90),无二级子菜单 -- 兼容旧版「90 目录 + 91 子菜单」;可重复执行 START TRANSACTION; -- 下线旧首页目录(仅类型为目录且无编码的 id=90) UPDATE bx_menu SET del_flag = 1, update_time = NOW() WHERE id = 90 AND parent_id = 0 AND menu_type = 1 AND (menu_code IS NULL OR menu_code = ''); -- 旧子菜单 91 先提升为根级(便于后续把权限迁到 90) UPDATE bx_menu SET parent_id = 0, menu_name = '首页', menu_code = 'dashboard', menu_type = 2, path = '/home', sort_order = 0, del_flag = 0, update_time = NOW() WHERE id = 91 AND menu_code = 'dashboard'; -- 统一主键为 90:插入或覆盖为根级首页 INSERT INTO bx_menu ( id, parent_id, menu_name, menu_code, menu_type, path, icon, sort_order, visible, status, remark, create_by, create_time, update_by, update_time, del_flag ) VALUES ( 90, 0, '首页', 'dashboard', 2, '/home', NULL, 0, 1, 1, NULL, 'system', NOW(), 'system', NOW(), 0 ) ON DUPLICATE KEY UPDATE parent_id = VALUES(parent_id), menu_name = VALUES(menu_name), menu_code = VALUES(menu_code), menu_type = VALUES(menu_type), path = VALUES(path), sort_order = VALUES(sort_order), del_flag = 0, status = 1, update_time = NOW(); -- 原只授权了 91 的角色,补授权 90 INSERT IGNORE INTO bx_menu_role (menu_id, role_id, create_time) SELECT 90, role_id, NOW() FROM bx_menu_role WHERE menu_id = 91; -- 下线重复的 91 UPDATE bx_menu SET del_flag = 1, update_time = NOW() WHERE id = 91; DELETE FROM bx_menu_role WHERE menu_id = 91; -- 已删除的旧目录 90 的无效角色关联 DELETE FROM bx_menu_role WHERE menu_id = 90 AND NOT EXISTS ( SELECT 1 FROM bx_menu m WHERE m.id = 90 AND m.del_flag = 0 ); -- 所有角色具备首页(若尚未配置) INSERT IGNORE INTO bx_menu_role (menu_id, role_id, create_time) SELECT 90, r.id, NOW() FROM bx_role r WHERE r.del_flag = 0; COMMIT;