南理工体育活动-创建联合工会菜单-设置管理员:新增‘体育活动联合工会管理员’角色(代替原来的工会管理员角色H04);

This commit is contained in:
2026-09-23 17:29:56 +08:00
parent 98a8b8cace
commit 4b110407c6
21 changed files with 305 additions and 90 deletions
@@ -0,0 +1,95 @@
/*
体育活动联合工会管理员角色初始化脚本
说明:本脚本创建新角色、复制H04在指定体育活动菜单下的权限,并为现有联合工会的历史管理员补充新角色;不删除任何H04用户关系。
*/
SET @sports_activity_union_admin_role_id = 'b72001e1783448edbba585b441955676';
SET @h04_role_id = '5d342e614e9a48288d50154bcdcc75d3';
INSERT INTO sys_role
(id, name, code, aliasName, disabled, note, createdBy, createdAt, updatedBy, updatedAt, delFlag)
SELECT
@sports_activity_union_admin_role_id,
'体育活动联合工会管理员',
'SportsActivityUnionAdmin',
'体育活动联合工会管理员',
0,
'仅用于体育活动联合工会报名和管理,不属于组织机构H04角色',
'',
0,
'',
0,
0
WHERE NOT EXISTS (
SELECT 1
FROM sys_role
WHERE id = @sports_activity_union_admin_role_id
OR code = 'SportsActivityUnionAdmin'
);
INSERT INTO sys_role_menu (roleId, menuId)
SELECT DISTINCT
@sports_activity_union_admin_role_id,
parent_menu.id
FROM sys_menu parent_menu
INNER JOIN sys_role_menu h04_parent
ON h04_parent.menuId = parent_menu.id
AND h04_parent.roleId = @h04_role_id
WHERE EXISTS (
SELECT 1
FROM sys_menu target_menu
INNER JOIN sys_role_menu h04_target
ON h04_target.menuId = target_menu.id
AND h04_target.roleId = @h04_role_id
WHERE target_menu.path LIKE CONCAT(parent_menu.path, '%')
AND (
target_menu.permission = 'activity.apply'
OR target_menu.permission LIKE 'activity.apply.%'
OR target_menu.permission = 'activity.reading'
OR target_menu.permission LIKE 'activity.reading.%'
OR target_menu.permission = 'activity.union.apply'
OR target_menu.permission LIKE 'activity.union.apply.%'
OR target_menu.permission = 'activity.union.info'
OR target_menu.permission LIKE 'activity.union.info.%'
OR target_menu.permission = 'activity.basic.scope'
OR target_menu.permission LIKE 'activity.basic.scope.%'
OR target_menu.permission = 'activity.basic.user'
OR target_menu.permission LIKE 'activity.basic.user.%'
)
)
AND NOT EXISTS (
SELECT 1
FROM sys_role_menu current_role_menu
WHERE current_role_menu.roleId = @sports_activity_union_admin_role_id
AND current_role_menu.menuId = parent_menu.id
);
/*
为当前仍有组成单位的联合工会历史H04管理员补充体育活动专用角色。
只新增缺失关系,不修改或删除原H04关系;重复执行不会重复插入。
*/
INSERT INTO sys_user_role (roleId, userId, unionid)
SELECT DISTINCT
@sports_activity_union_admin_role_id,
historical_admin.userId,
historical_admin.unionid
FROM sys_user_role historical_admin
INNER JOIN activity_basic_union activity_union
ON activity_union.id = historical_admin.unionid
WHERE historical_admin.roleId = @h04_role_id
AND historical_admin.userId IS NOT NULL
AND historical_admin.userId <> ''
AND historical_admin.unionid IS NOT NULL
AND historical_admin.unionid <> ''
AND EXISTS (
SELECT 1
FROM activity_basic_unit activity_unit
WHERE activity_unit.unionid = historical_admin.unionid
)
AND NOT EXISTS (
SELECT 1
FROM sys_user_role current_admin
WHERE current_admin.roleId = @sports_activity_union_admin_role_id
AND current_admin.userId = historical_admin.userId
AND current_admin.unionid = historical_admin.unionid
);