003_menu.sql 的招聘中心一级菜单写死 id=95,与 014_house_presale_menu.sql 的 新房预售菜单(id=95,挂看房中心 90)ON DUPLICATE 互相覆盖,后导入者赢。 本地已实际发生覆盖。改为 id=96,951-954 父级同步改 96,超管角色绑定列表同步。
60 lines
5.4 KiB
Go
60 lines
5.4 KiB
Go
-- 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.sql;admin_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
|
||
(96, 0, '招聘中心', 'mdi:briefcase-search', 1, '/recruitment', '', 'recruitment:center', 7, 1, 0, NOW(), NOW()),
|
||
(951, 96, '招聘公告', 'mdi:file-document', 1, 'recruitment/info', 'recruitment/info/index', 'recruitment:info', 1, 1, 0, NOW(), NOW()),
|
||
(952, 96, '数据看板', 'mdi:chart-box', 1, 'recruitment/dashboard','recruitment/dashboard/index','recruitment:dashboard', 2, 1, 0, NOW(), NOW()),
|
||
(953, 96, '数据源', 'mdi:web-sync', 1, 'recruitment/crawler', 'recruitment/crawler/index', 'recruitment:crawler', 3, 1, 0, NOW(), NOW()),
|
||
(954, 96, '推送订阅', '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 (96,951,952,953,954,9510,9511,9520,9521,9530,9531,9540,9541,9542,9543);
|