-- 全量业务菜单种子(与当前后端能力对齐:IAM 租户/部门/角色/用户/菜单 + System 参数) -- 依赖:001_iam.sql;建议在 004_seed_platform_builtin.sql 之后执行(以便角色已存在时可挂接权限) -- -- 约定: -- menu_type: 1=目录 2=菜单 3=按钮(本脚本仅录入目录+菜单,便于侧栏 /nav) -- 「概览」(/dashboard) 不入库:全员可进,由前端壳层固定展示,不参与 iam_menu 配置与角色授权 -- path 与 Next 管理端路由对齐(可按实际前端调整) -- -- 固定菜单 id 前缀 31000000-0000-4000-8000-* 便于识别与文档引用 BEGIN; INSERT INTO iam_menu ( id, parent_id, menu_name, menu_type, perms, path, component, icon, sort_order, is_visible, is_builtin, status, created_at, updated_at ) VALUES -- 工作台(目录) ( '31000000-0000-4000-8000-000000000001', '', '工作台', 1, 'workspace:root', '', '', '⌂', 10, true, true, 1, now(), now() ), ( '31000000-0000-4000-8000-000000000003', '31000000-0000-4000-8000-000000000001', '个人中心', 2, 'account:profile', '/dashboard/account', '', '👤', 20, true, true, 1, now(), now() ), -- 系统:/api/v1/system/param/* ( '31000000-0000-4000-8000-000000000010', '', '系统管理', 1, 'system:module', '', '', '⚙', 40, true, true, 1, now(), now() ), ( '31000000-0000-4000-8000-000000000011', '31000000-0000-4000-8000-000000000010', '参数配置', 2, 'system:param:list', '/dashboard/system/param', '', '🔧', 10, true, true, 1, now(), now() ), -- IAM:/api/v1/iam/* ( '31000000-0000-4000-8000-000000000020', '', '权限管理', 1, 'iam:module', '', '', '🛡', 50, true, true, 1, now(), now() ), ( '31000000-0000-4000-8000-000000000021', '31000000-0000-4000-8000-000000000020', '租户管理', 2, 'iam:tenant:list', '/dashboard/iam/tenant', '', '🏢', 10, true, true, 1, now(), now() ), ( '31000000-0000-4000-8000-000000000022', '31000000-0000-4000-8000-000000000020', '部门管理', 2, 'iam:dept:tree', '/dashboard/iam/dept', '', '🌳', 20, true, true, 1, now(), now() ), ( '31000000-0000-4000-8000-000000000023', '31000000-0000-4000-8000-000000000020', '角色管理', 2, 'iam:role:list', '/dashboard/iam/role', '', '👥', 30, true, true, 1, now(), now() ), ( '31000000-0000-4000-8000-000000000024', '31000000-0000-4000-8000-000000000020', '用户管理', 2, 'iam:user:list', '/dashboard/iam/user', '', '👤', 40, true, true, 1, now(), now() ), ( '31000000-0000-4000-8000-000000000025', '31000000-0000-4000-8000-000000000020', '资源(菜单)', 2, 'iam:menu:tree', '/dashboard/iam/resource', '', '📋', 50, true, true, 1, now(), now() ) ON CONFLICT (id) DO NOTHING; -- 将上述菜单授权给平台「超级管理员」角色(与 004 中 role id 一致) INSERT INTO iam_role_menu (id, role_id, menu_id, created_at) SELECT gen_random_uuid()::text, '20000000-0000-4000-8000-000000000002', m.id, now() FROM iam_menu m WHERE m.id IN ( '31000000-0000-4000-8000-000000000001', '31000000-0000-4000-8000-000000000003', '31000000-0000-4000-8000-000000000010', '31000000-0000-4000-8000-000000000011', '31000000-0000-4000-8000-000000000020', '31000000-0000-4000-8000-000000000021', '31000000-0000-4000-8000-000000000022', '31000000-0000-4000-8000-000000000023', '31000000-0000-4000-8000-000000000024', '31000000-0000-4000-8000-000000000025' ) ON CONFLICT (role_id, menu_id) DO NOTHING; -- 若曾执行过含「概览」菜单的旧版脚本,可手工清理(避免侧栏与前端固定入口重复): -- DELETE FROM iam_role_menu WHERE menu_id = '31000000-0000-4000-8000-000000000002'; -- DELETE FROM iam_menu WHERE id = '31000000-0000-4000-8000-000000000002'; COMMIT;