-- 数据权限管理 — RBAC 菜单与权限码种子 -- 前端路由:/system/dataPerm/users、/system/dataPerm/templates、/system/dataPerm/audit -- PermissionCode 须在 PermissionDefinitionProvider 注册后方能分配 SET @ADMIN_USER_ID = ( SELECT `Id` FROM `user` WHERE `Account` = 'admin' AND (`IsDeleted` = 0 OR `IsDeleted` IS NULL) LIMIT 1 ); SET @ADMIN_USER_ID = IFNULL(@ADMIN_USER_ID, '08de4226-3fd4-4a5c-83e5-70e164b15f2f'); SET @ROOT_PID = '00000000-0000-0000-0000-000000000000'; -- 查找「系统管理」父菜单(若无则挂根) SET @SYSTEM_PID = ( SELECT `Id` FROM `menu` WHERE (`Route` = '/system' OR `Name` = '系统管理') AND (`IsDeleted` = 0 OR `IsDeleted` IS NULL) ORDER BY `Order` LIMIT 1 ); SET @SYSTEM_PID = IFNULL(@SYSTEM_PID, @ROOT_PID); INSERT INTO `menu` ( `Id`, `PId`, `Name`, `PermissionCode`, `Type`, `Icon`, `Route`, `Component`, `Order`, `IsHidden`, `IsCached`, `Description`, `IsDeleted`, `ConcurrencyStamp`, `CreateUserId`, `CreateTime`, `UpdateUserId`, `UpdateTime` ) VALUES ( 'da100001-0000-4000-8000-000000000001', @SYSTEM_PID, '数据权限', 'Rbac.DataPerm', 1, 'icon-safe', '/system/dataPerm', NULL, 90, 0, 1, '多维数据权限配置', 0, UUID(), @ADMIN_USER_ID, NOW(), @ADMIN_USER_ID, NOW() ), ( 'da100001-0000-4000-8000-000000000002', 'da100001-0000-4000-8000-000000000001', '用户数据权限', 'Rbac.DataPerm.Query', 1, NULL, '/system/dataPerm/users', 'views/system/dataPerm/users/index', 1, 0, 1, NULL, 0, UUID(), @ADMIN_USER_ID, NOW(), @ADMIN_USER_ID, NOW() ), ( 'da100001-0000-4000-8000-000000000003', 'da100001-0000-4000-8000-000000000001', '权限模板', 'Rbac.DataPerm.Template', 1, NULL, '/system/dataPerm/templates', 'views/system/dataPerm/templates/index', 2, 0, 1, NULL, 0, UUID(), @ADMIN_USER_ID, NOW(), @ADMIN_USER_ID, NOW() ), ( 'da100001-0000-4000-8000-000000000004', 'da100001-0000-4000-8000-000000000001', '访问审计', 'Rbac.DataPerm.Audit', 1, NULL, '/system/dataPerm/audit', 'views/system/dataPerm/audit/index', 3, 0, 0, NULL, 0, UUID(), @ADMIN_USER_ID, NOW(), @ADMIN_USER_ID, NOW() ), ( 'da100001-0000-4000-8000-000000000005', 'da100001-0000-4000-8000-000000000002', '保存用户权限', 'Rbac.DataPerm.Update', 2, NULL, NULL, NULL, 1, 0, 0, NULL, 0, UUID(), @ADMIN_USER_ID, NOW(), @ADMIN_USER_ID, NOW() ) ON DUPLICATE KEY UPDATE `Name` = VALUES(`Name`), `PId` = VALUES(`PId`), `PermissionCode` = VALUES(`PermissionCode`), `Route` = VALUES(`Route`), `Component` = VALUES(`Component`), `Order` = VALUES(`Order`); -- 超管角色分配数据权限(若存在 Admin 角色) INSERT INTO `role_permission` (`Id`, `RoleId`, `PermissionCode`, `CreateUserId`, `CreateTime`) SELECT UUID(), r.`Id`, p.`Code`, @ADMIN_USER_ID, NOW() FROM `role` r CROSS JOIN ( SELECT 'Rbac.DataPerm' AS Code UNION ALL SELECT 'Rbac.DataPerm.Query' UNION ALL SELECT 'Rbac.DataPerm.Update' UNION ALL SELECT 'Rbac.DataPerm.Template' UNION ALL SELECT 'Rbac.DataPerm.Audit' ) p WHERE r.`Code` = 'Admin' AND (r.`IsDeleted` = 0 OR r.`IsDeleted` IS NULL) AND NOT EXISTS ( SELECT 1 FROM `role_permission` rp WHERE rp.`RoleId` = r.`Id` AND rp.`PermissionCode` = p.`Code` );