-- ============================================================ -- 报表统计菜单(tenant_id=10606,挂在「商城」顶级菜单下) -- 作用:让前端动态路由 /statistics 自动生效(component=shop/statistics) -- 说明:sys_menu 在 gxwebsoft_core 库;本 SQL 用全限定名,可在任意有权限的库执行。 -- ============================================================ -- 1) 插入报表统计菜单 -- parent_id / app_id 自动取自「商城」顶级菜单(title 含"商城",parent_id=0) -- NOT EXISTS 防止重复插入(重复执行安全) INSERT INTO gxwebsoft_core.sys_menu (parent_id, title, path, component, menu_type, sort_number, authority, icon, hide, tenant_id, app_id, deleted) SELECT p.menu_id, -- 商城父级 menu_id '报表统计', '/statistics', 'shop/statistics', 0, -- 0=菜单 60, -- 排序号(放商城菜单末尾) 'shop:statistics:view', 'BarChartOutlined', 0, -- 0=显示 10606, p.app_id, 0 FROM gxwebsoft_core.sys_menu p WHERE p.tenant_id = 10606 AND p.parent_id = 0 AND p.title LIKE '%商城%' AND NOT EXISTS ( SELECT 1 FROM gxwebsoft_core.sys_menu s WHERE s.tenant_id = 10606 AND s.component = 'shop/statistics' ) LIMIT 1; -- 2) 把新菜单分配给「商城」父级已有的角色(否则角色没有该菜单权限,左侧导航看不到) INSERT INTO gxwebsoft_core.sys_role_menu (role_id, menu_id) SELECT rm.role_id, m.menu_id FROM gxwebsoft_core.sys_menu m JOIN gxwebsoft_core.sys_menu p ON p.menu_id = m.parent_id JOIN gxwebsoft_core.sys_role_menu rm ON rm.menu_id = p.menu_id WHERE m.tenant_id = 10606 AND m.component = 'shop/statistics' AND NOT EXISTS ( SELECT 1 FROM gxwebsoft_core.sys_role_menu x WHERE x.role_id = rm.role_id AND x.menu_id = m.menu_id ); -- ============================================================ -- 排查辅助:若第1步未插入(商城父级标题不含"商城"),先用下面语句确认父级 menu_id -- SELECT menu_id, title, app_id FROM gxwebsoft_core.sys_menu -- WHERE tenant_id=10606 AND parent_id=0 AND title LIKE '%商城%'; -- ============================================================