-- 公共招聘会权限补充 -- -- 目的: -- 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;