Files
railwaysystem/qa-bootstrap/sql/07_restore_training_menus_and_notice.sql
T

184 lines
16 KiB
PL/PgSQL

-- =============================================================================
-- SYFJGYD学员管理系统 数据库补全脚本: 07_restore_training_menus_and_notice.sql
-- 目标数据库: railwaysystem_fusion_qa_20261013, Schema: public
-- 任务内容:
-- 1. 创建 sys_notice_read 表以解决 relation "sys_notice_read" does not exist
-- 2. 补齐原系统全部一级目录 (人员管理、教学设施、课程管理、自主学习、统计分析、学员画像)
-- 3. 补齐原系统全部二级业务菜单 (教师、学员、教室、实训、宿舍、电子班牌、设备物联、住宿安排、开班计划、课程、签到、时长等)
-- 4. 保留并有序组织 IoT 智能门锁业务菜单 (公寓分组、网关、门锁、人脸、授权、通行、命令、报文等)
-- 5. 隐蔽无关的若依官网外链 (menu_id=4)
-- 6. 全量授予超级管理员 (role_id=1) 和培训管理员 (role_id=3) 菜单与操作权限
-- =============================================================================
BEGIN;
-- 1. 创建 sys_notice_read 表
CREATE TABLE IF NOT EXISTS public.sys_notice_read (
read_id BIGSERIAL PRIMARY KEY,
notice_id BIGINT NOT NULL,
user_id BIGINT NOT NULL,
read_time TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT uk_notice_user UNIQUE (notice_id, user_id)
);
CREATE INDEX IF NOT EXISTS idx_notice_read_user ON public.sys_notice_read (user_id);
GRANT SELECT, INSERT, UPDATE, DELETE ON public.sys_notice_read TO fusion_qa_app;
GRANT USAGE, SELECT ON SEQUENCE public.sys_notice_read_read_id_seq TO fusion_qa_app;
-- 2. 停用并隐藏若依官网菜单 (menu_id = 4)
UPDATE public.sys_menu
SET visible = '1', status = '1', update_by = 'admin', update_time = CURRENT_TIMESTAMP
WHERE menu_id = 4;
-- 3. 补齐原系统顶级目录与业务页面菜单 (幂等插入 / 更新)
-- 3.1 人员管理 (2159)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2159, '人员管理', 0, 1, 'person', NULL, NULL, 1, 0, 'M', '0', '0', '', 'user', 'admin', CURRENT_TIMESTAMP, '人员管理目录')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=0, order_num=1, path='person', visible='0', status='0';
-- 3.1.1 教师信息 (2155)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2155, '教师信息', 2159, 1, 'teacher', 'train/teacher', NULL, 1, 0, 'C', '0', '0', 'train:teacher:list', 'people', 'admin', CURRENT_TIMESTAMP, '教师信息')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=2159, order_num=1, path='teacher', component='train/teacher', perms='train:teacher:list', visible='0', status='0';
-- 3.1.2 学员信息 (2156)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2156, '学员信息', 2159, 2, 'student', 'train/student', NULL, 1, 0, 'C', '0', '0', 'train:student:list', 'peoples', 'admin', CURRENT_TIMESTAMP, '学员信息')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=2159, order_num=2, path='student', component='train/student', perms='train:student:list', visible='0', status='0';
-- 3.2 教学设施 (2154)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2154, '教学设施', 0, 2, 'equip', NULL, NULL, 1, 0, 'M', '0', '0', '', 'excel', 'admin', CURRENT_TIMESTAMP, '教学设施目录')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=0, order_num=2, path='equip', visible='0', status='0';
-- 3.2.1 教室信息 (2157)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2157, '教室信息', 2154, 1, 'classroom', 'train/classroom', NULL, 1, 0, 'C', '0', '0', '', 'build', 'admin', CURRENT_TIMESTAMP, '教室信息')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=2154, order_num=1, path='classroom', component='train/classroom', visible='0', status='0';
-- 3.2.2 实训场地 (2158)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2158, '实训场地', 2154, 2, 'site', 'train/site', NULL, 1, 0, 'C', '0', '0', '', 'row', 'admin', CURRENT_TIMESTAMP, '实训场地')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=2154, order_num=2, path='site', component='train/site', visible='0', status='0';
-- 3.2.3 宿舍信息 (2161)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2161, '宿舍信息', 2154, 3, 'dormitory', 'train/dormitory', NULL, 1, 0, 'C', '0', '0', '', 'table', 'admin', CURRENT_TIMESTAMP, '宿舍信息')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=2154, order_num=3, path='dormitory', component='train/dormitory', visible='0', status='0';
-- 3.2.4 电子班牌 (2174)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2174, '电子班牌', 2154, 4, 'board', 'train/board', NULL, 1, 0, 'C', '0', '0', '', 'message', 'admin', CURRENT_TIMESTAMP, '电子班牌')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=2154, order_num=4, path='board', component='train/board', visible='0', status='0';
-- 3.2.5 设备物联 (2160)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2160, '设备物联', 2154, 5, 'extra', 'train/extra', NULL, 1, 0, 'C', '0', '0', '', 'cascader', 'admin', CURRENT_TIMESTAMP, '设备物联')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=2154, order_num=5, path='extra', component='train/extra', visible='0', status='0';
-- 3.2.6 住宿管理 (2261)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2261, '住宿管理', 2154, 6, 'accommodation', 'train/accommodation/index', NULL, 1, 0, 'C', '0', '0', 'train:accommodation:list', 'table', 'admin', CURRENT_TIMESTAMP, '住宿管理')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=2154, order_num=6, path='accommodation', component='train/accommodation/index', perms='train:accommodation:list', visible='0', status='0';
-- 3.2.7 门禁管理 (2060)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2060, '门禁管理', 2154, 7, 'auth', 'train/auth/index', NULL, 1, 0, 'C', '0', '0', 'train:access:query', 'lock', 'admin', CURRENT_TIMESTAMP, '门禁管理')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=2154, order_num=7, path='auth', component='train/auth/index', perms='train:access:query', visible='0', status='0';
-- 3.2.8 教学资源 (2251)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2251, '教学资源', 2154, 8, 'resource', 'train/resource/index', NULL, 1, 0, 'C', '0', '0', 'train:resource:list', 'documentation', 'admin', CURRENT_TIMESTAMP, '教学资源')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=2154, order_num=8, path='resource', component='train/resource/index', perms='train:resource:list', visible='0', status='0';
-- 3.3 课程管理 (2162)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2162, '课程管理', 0, 3, 'coursemgr', NULL, NULL, 1, 0, 'M', '0', '0', '', 'date', 'admin', CURRENT_TIMESTAMP, '课程管理目录')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=0, order_num=3, path='coursemgr', visible='0', status='0';
-- 3.3.1 课程信息 (2163)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2163, '课程信息', 2162, 1, 'course', 'train/course', NULL, 1, 0, 'C', '0', '0', '', 'education', 'admin', CURRENT_TIMESTAMP, '课程信息')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=2162, order_num=1, path='course', component='train/course', visible='0', status='0';
-- 3.3.2 开班计划 (2164)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2164, '开班计划', 2162, 2, 'plan', 'train/plan', NULL, 1, 0, 'C', '0', '0', '', 'job', 'admin', CURRENT_TIMESTAMP, '开班计划')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=2162, order_num=2, path='plan', component='train/plan', visible='0', status='0';
-- 3.4 自主学习 (2167)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2167, '自主学习', 0, 4, 'self', NULL, NULL, 1, 0, 'M', '0', '0', '', 'skill', 'admin', CURRENT_TIMESTAMP, '自主学习目录')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=0, order_num=4, path='self', visible='0', status='0';
-- 3.4.1 电子设备 (2168)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2168, '电子设备', 2167, 1, 'equipment', 'train/equipment', NULL, 1, 0, 'C', '0', '0', '', 'monitor', 'admin', CURRENT_TIMESTAMP, '电子设备')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=2167, order_num=1, path='equipment', component='train/equipment', visible='0', status='0';
-- 3.5 统计分析 (2169)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2169, '统计分析', 0, 5, 'analysis', NULL, NULL, 1, 0, 'M', '0', '0', '', 'chart', 'admin', CURRENT_TIMESTAMP, '统计分析目录')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=0, order_num=5, path='analysis', visible='0', status='0';
-- 3.5.1 开班签到 (2170)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2170, '开班签到', 2169, 1, 'report', 'train/report', NULL, 1, 0, 'C', '0', '0', 'train:report:list', 'list', 'admin', CURRENT_TIMESTAMP, '开班签到')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=2169, order_num=1, path='report', component='train/report', perms='train:report:list', visible='0', status='0';
-- 3.5.2 课程签到 (2171)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2171, '课程签到', 2169, 2, 'checkin', 'train/checkin', NULL, 1, 0, 'C', '0', '0', 'train:attendance:list', 'time', 'admin', CURRENT_TIMESTAMP, '课程签到')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=2169, order_num=2, path='checkin', component='train/checkin', perms='train:attendance:list', visible='0', status='0';
-- 3.5.3 学习时长 (2172)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2172, '学习时长', 2169, 3, 'duration', 'train/duration', NULL, 1, 0, 'C', '0', '0', 'train:learning:list', 'time-range', 'admin', CURRENT_TIMESTAMP, '学习时长')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=2169, order_num=3, path='duration', component='train/duration', perms='train:learning:list', visible='0', status='0';
-- 3.6 学员画像 (2173)
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2173, '学员画像', 0, 6, 'portrait', 'train/portrait', NULL, 1, 0, 'C', '0', '0', 'train:portrait:query', 'user', 'admin', CURRENT_TIMESTAMP, '学员画像')
ON CONFLICT (menu_id) DO UPDATE SET parent_id=0, order_num=6, path='portrait', component='train/portrait', perms='train:portrait:query', visible='0', status='0';
-- 3.7 门禁管理 / 智能门锁 (2000) 调整排序为 7
UPDATE public.sys_menu
SET menu_name = '智能门锁', parent_id = 0, order_num = 7, path = 'iot', component = NULL,
menu_type = 'M', visible = '0', status = '0', icon = 'lock', update_by = 'admin', update_time = CURRENT_TIMESTAMP
WHERE menu_id = 2000;
-- 3.8 调整系统工具、系统管理、系统监控排序为 8, 9, 10
UPDATE public.sys_menu SET order_num = 8 WHERE menu_id = 3; -- 系统工具
UPDATE public.sys_menu SET order_num = 9 WHERE menu_id = 1; -- 系统管理
UPDATE public.sys_menu SET order_num = 10 WHERE menu_id = 2; -- 系统监控
-- 3.9 确保住宿管理按钮级权限 (2262, 2263, 2264, 2265) 挂载在 2261
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2262, '住宿查询', 2261, 1, '#', '', '', 1, 0, 'F', '0', '0', 'train:accommodation:query', '#', 'admin', CURRENT_TIMESTAMP, '住宿查询')
ON CONFLICT (menu_id) DO NOTHING;
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2263, '住宿办理', 2261, 2, '#', '', '', 1, 0, 'F', '0', '0', 'train:accommodation:edit', '#', 'admin', CURRENT_TIMESTAMP, '住宿办理(入住/调房/退宿)')
ON CONFLICT (menu_id) DO NOTHING;
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2264, '分配住宿', 2261, 3, '#', '', '', 1, 0, 'F', '0', '0', 'train:accommodation:add', '#', 'admin', CURRENT_TIMESTAMP, '分配住宿')
ON CONFLICT (menu_id) DO NOTHING;
INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES (2265, '住宿删除', 2261, 4, '#', '', '', 1, 0, 'F', '0', '0', 'train:accommodation:remove', '#', 'admin', CURRENT_TIMESTAMP, '住宿删除')
ON CONFLICT (menu_id) DO NOTHING;
-- 4. 角色菜单授权:全量授予 role_id = 1 (超级管理员) 所有可用菜单
INSERT INTO public.sys_role_menu (role_id, menu_id)
SELECT 1, menu_id FROM public.sys_menu
ON CONFLICT DO NOTHING;
-- 5. 角色菜单授权:授予 role_id = 3 (培训管理员) 培训业务菜单与智能门锁菜单
INSERT INTO public.sys_role_menu (role_id, menu_id)
SELECT 3, menu_id FROM public.sys_menu
WHERE menu_id BETWEEN 2000 AND 3999
ON CONFLICT DO NOTHING;
COMMIT;