admin/sql/seed_data_perm_rbac_menu.sql
2026-07-03 11:58:24 +08:00

118 lines
3.2 KiB
SQL

-- 数据权限管理 — 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`
);