feat: Add permissions for public job fair management and enhance role access

This commit is contained in:
2026-07-15 10:09:26 +08:00
parent 8395b390b0
commit 8538de3776
2 changed files with 131 additions and 0 deletions

View File

@@ -0,0 +1,95 @@
-- 公共招聘会权限补充
--
-- 目的:
-- 1. 补充 CMS 公共招聘会详情/报名列表/企业岗位关联查询权限;
-- 2. 将查询权限授予已经拥有公共招聘会列表权限的角色(包括“企业”角色)。
--
-- 说明:
-- - 当前 CMS 详情、报名列表、企业及岗位关联接口统一使用
-- cms:publicJobFair:query。
-- - 企业端“报名并填写岗位”使用 POST /app/fair/company/signUp服务层会校验
-- 企业身份并创建岗位及招聘会-岗位关联,不需要 CMS 菜单权限。
-- - 不将 cms:publicJobFair:edit 授予企业角色。该权限同时控制修改招聘会、
-- 添加/移除企业和添加/移除岗位,属于后台管理权限。
--
-- 本脚本可重复执行:菜单和角色菜单关联均通过权限标识/关联关系幂等处理。
-- Step 1: 在“线上招聘会”菜单下补充按钮权限。
-- 使用 MAX(menu_id)+1避免依赖某个固定的菜单 ID当前生产 2056 为列表菜单。
INSERT INTO "shz"."sys_menu" (
"menu_id", "menu_name", "parent_id", "order_num", "path", "component",
"query", "route_name", "is_frame", "is_cache", "menu_type", "visible",
"status", "perms", "icon", "create_by", "create_time", "update_by",
"update_time", "remark"
)
SELECT
(SELECT COALESCE(MAX("menu_id"), 0) + 1 FROM "shz"."sys_menu"),
'公共招聘会查询',
parent_menu."menu_id",
1,
'',
'',
'',
'',
1,
0,
'F',
'0',
'0',
'cms:publicJobFair:query',
'#',
'admin',
CURRENT_TIMESTAMP,
'',
NULL,
'公共招聘会详情、报名及企业岗位关联查询权限'
FROM (
SELECT "menu_id"
FROM "shz"."sys_menu"
WHERE "perms" = 'cms:publicJobFair:list'
AND "path" = '/jobfair/public-job-fair'
ORDER BY "menu_id"
LIMIT 1
) parent_menu
WHERE NOT EXISTS (
SELECT 1
FROM "shz"."sys_menu"
WHERE "perms" = 'cms:publicJobFair:query'
);
-- Step 2: 给已经有列表权限的角色补充查询权限。
-- 这样企业角色(当前 role_id=1102以及其他已有列表权限的角色都会生效。
INSERT INTO "shz"."sys_role_menu" ("role_id", "menu_id")
SELECT DISTINCT
list_role."role_id",
query_menu."menu_id"
FROM "shz"."sys_role_menu" list_role
JOIN "shz"."sys_menu" list_menu
ON list_menu."menu_id" = list_role."menu_id"
AND list_menu."perms" = 'cms:publicJobFair:list'
CROSS JOIN (
SELECT "menu_id"
FROM "shz"."sys_menu"
WHERE "perms" = 'cms:publicJobFair:query'
ORDER BY "menu_id"
LIMIT 1
) query_menu
WHERE NOT EXISTS (
SELECT 1
FROM "shz"."sys_role_menu" existing_role_menu
WHERE existing_role_menu."role_id" = list_role."role_id"
AND existing_role_menu."menu_id" = query_menu."menu_id"
);
-- 可选验证:
-- SELECT menu_id, menu_name, perms
-- FROM shz.sys_menu
-- WHERE perms LIKE 'cms:publicJobFair:%'
-- ORDER BY menu_id;
--
-- SELECT r.role_id, r.role_name, m.menu_name, m.perms
-- FROM shz.sys_role_menu rm
-- JOIN shz.sys_role r ON r.role_id = rm.role_id
-- JOIN shz.sys_menu m ON m.menu_id = rm.menu_id
-- WHERE m.perms = 'cms:publicJobFair:query'
-- ORDER BY r.role_id;