service.xpcool.com/manifest/sql/recruitment/003_menu.sql
夏犀麟 e18b25f32a fix(recruitment): 招聘中心菜单 96→97,为 015 安全日志菜单(96)让位
015_server_security.sql 已在生产部署使用 id=96(安全日志,挂系统监控),
招聘中心不能再占 96。95=新房预售、96=安全日志、97=招聘中心。
2026-08-27 12:27:44 +08:00

60 lines
5.4 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 003_menu.sql
-- 招聘考试聚合模块菜单 + API 权限种子
-- 约定 011_house_menu.sql 一致
-- type=1 菜单component 指向 views/<path>/index不含 views/ 前缀与 .vue 后缀
-- permission 用于前端侧边栏可见性
-- type=2 按钮path 为完整 "METHOD /api/service/admin/..."permission RBAC 权限码
-- RBAC 中间件按 method+path 反查该权限码并校验管理员是否持有
-- 依赖先执行 001_init.sql + 002_seed_sources.sqladmin_menu/admin_role_menu 已存在
-- 幂等INSERT ... ON DUPLICATE KEY UPDATE + INSERT IGNORE可重复执行
-- ============ 1) 招聘中心菜单type=1 ============
INSERT INTO admin_menu (id, parent_id, name, icon, type, path, component, permission, sort, status, hidden, created_at, updated_at) VALUES
(97, 0, '招聘中心', 'mdi:briefcase-search', 1, '/recruitment', '', 'recruitment:center', 7, 1, 0, NOW(), NOW()),
(951, 97, '招聘公告', 'mdi:file-document', 1, 'recruitment/info', 'recruitment/info/index', 'recruitment:info', 1, 1, 0, NOW(), NOW()),
(952, 97, '数据看板', 'mdi:chart-box', 1, 'recruitment/dashboard','recruitment/dashboard/index','recruitment:dashboard', 2, 1, 0, NOW(), NOW()),
(953, 97, '数据源', 'mdi:web-sync', 1, 'recruitment/crawler', 'recruitment/crawler/index', 'recruitment:crawler', 3, 1, 0, NOW(), NOW()),
(954, 97, '推送订阅', 'mdi:bell-ring', 1, 'recruitment/push', 'recruitment/push/index', 'recruitment:push', 4, 1, 0, NOW(), NOW())
ON DUPLICATE KEY UPDATE parent_id=VALUES(parent_id), name=VALUES(name), icon=VALUES(icon), type=VALUES(type),
path=VALUES(path), component=VALUES(component), permission=VALUES(permission), sort=VALUES(sort),
status=VALUES(status), hidden=VALUES(hidden), deleted_at=NULL;
-- ============ 2) 招聘公告按钮type=2 ============
INSERT INTO admin_menu (id, parent_id, name, icon, type, path, component, permission, sort, status, hidden, created_at, updated_at) VALUES
(9510, 951, '查询', '', 2, 'POST /api/service/admin/recruitment/info/list', '', 'recruitment:info:list', 1, 1, 0, NOW(), NOW()),
(9511, 951, '详情', '', 2, 'POST /api/service/admin/recruitment/info/detail', '', 'recruitment:info:detail', 2, 1, 0, NOW(), NOW())
ON DUPLICATE KEY UPDATE parent_id=VALUES(parent_id), name=VALUES(name), icon=VALUES(icon), type=VALUES(type),
path=VALUES(path), component=VALUES(component), permission=VALUES(permission), sort=VALUES(sort),
status=VALUES(status), hidden=VALUES(hidden), deleted_at=NULL;
-- ============ 3) 数据看板按钮type=2 ============
INSERT INTO admin_menu (id, parent_id, name, icon, type, path, component, permission, sort, status, hidden, created_at, updated_at) VALUES
(9520, 952, '统计', '', 2, 'POST /api/service/admin/recruitment/stats', '', 'recruitment:dashboard:stats', 1, 1, 0, NOW(), NOW()),
(9521, 952, '趋势', '', 2, 'POST /api/service/admin/recruitment/trend', '', 'recruitment:dashboard:trend', 2, 1, 0, NOW(), NOW())
ON DUPLICATE KEY UPDATE parent_id=VALUES(parent_id), name=VALUES(name), icon=VALUES(icon), type=VALUES(type),
path=VALUES(path), component=VALUES(component), permission=VALUES(permission), sort=VALUES(sort),
status=VALUES(status), hidden=VALUES(hidden), deleted_at=NULL;
-- ============ 4) 数据源按钮type=2 ============
INSERT INTO admin_menu (id, parent_id, name, icon, type, path, component, permission, sort, status, hidden, created_at, updated_at) VALUES
(9530, 953, '列表', '', 2, 'POST /api/service/admin/recruitment/source/list', '', 'recruitment:crawler:list', 1, 1, 0, NOW(), NOW()),
(9531, 953, '触发', '', 2, 'POST /api/service/admin/recruitment/crawl/trigger', '', 'recruitment:crawler:trigger', 2, 1, 0, NOW(), NOW())
ON DUPLICATE KEY UPDATE parent_id=VALUES(parent_id), name=VALUES(name), icon=VALUES(icon), type=VALUES(type),
path=VALUES(path), component=VALUES(component), permission=VALUES(permission), sort=VALUES(sort),
status=VALUES(status), hidden=VALUES(hidden), deleted_at=NULL;
-- ============ 5) 推送订阅按钮type=2 ============
INSERT INTO admin_menu (id, parent_id, name, icon, type, path, component, permission, sort, status, hidden, created_at, updated_at) VALUES
(9540, 954, '列表', '', 2, 'POST /api/service/admin/recruitment/subscription/list', '', 'recruitment:push:list', 1, 1, 0, NOW(), NOW()),
(9541, 954, '测试', '', 2, 'POST /api/service/admin/recruitment/push/test', '', 'recruitment:push:test', 2, 1, 0, NOW(), NOW()),
(9542, 954, '保存', '', 2, 'POST /api/service/admin/recruitment/subscription/save', '', 'recruitment:push:save', 3, 1, 0, NOW(), NOW()),
(9543, 954, '删除', '', 2, 'POST /api/service/admin/recruitment/subscription/delete', '', 'recruitment:push:delete', 4, 1, 0, NOW(), NOW())
ON DUPLICATE KEY UPDATE parent_id=VALUES(parent_id), name=VALUES(name), icon=VALUES(icon), type=VALUES(type),
path=VALUES(path), component=VALUES(component), permission=VALUES(permission), sort=VALUES(sort),
status=VALUES(status), hidden=VALUES(hidden), deleted_at=NULL;
-- ============ 6) 超管角色绑定新菜单role_id=1 超管 ============
INSERT IGNORE INTO admin_role_menu (role_id, menu_id, created_at, updated_at)
SELECT 1, id, NOW(), NOW() FROM admin_menu
WHERE id IN (97,951,952,953,954,9510,9511,9520,9521,9530,9531,9540,9541,9542,9543);