69 lines
3.5 KiB
PL/PgSQL
69 lines
3.5 KiB
PL/PgSQL
-- =============================================================================
|
|
-- Migration: Analytics V1 Permissions & Legacy Menu Deactivation
|
|
-- Target: KingbaseES, schema public
|
|
-- Scope: Deactivate legacy dropped score menus, add attendance analytics menu & dashboard permissions
|
|
-- =============================================================================
|
|
|
|
BEGIN;
|
|
|
|
-- 1. Deactivate legacy score menus (2166, 2175, 2176)
|
|
UPDATE public.sys_menu
|
|
SET status = '1', visible = '1', update_by = 'admin', update_time = CURRENT_TIMESTAMP, remark = '已废弃旧表停用(V2架构)'
|
|
WHERE menu_id IN (2166, 2175, 2176);
|
|
|
|
-- 2. Insert attendance analytics menu under '统计分析' (parent_id = 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, update_by, update_time, remark)
|
|
SELECT 2251, '考勤分析', 2169, 1, 'attendance', 'train/analysis/attendance/index', '', 1, 0,
|
|
'C', '0', '0', 'train:analysis:attendance', 'chart', 'admin', CURRENT_TIMESTAMP, '', NULL, '考勤专题分析页面'
|
|
WHERE NOT EXISTS (SELECT 1 FROM public.sys_menu WHERE menu_id = 2251);
|
|
|
|
-- 3. Insert attendance query button permission
|
|
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, update_by, update_time, remark)
|
|
SELECT 2252, '考勤分析查询', 2251, 1, '#', '', '', 1, 0,
|
|
'F', '0', '0', 'train:analysis:attendance:query', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, '考勤分析数据查询'
|
|
WHERE NOT EXISTS (SELECT 1 FROM public.sys_menu WHERE menu_id = 2252);
|
|
|
|
-- 4. Insert dashboard button permission
|
|
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, update_by, update_time, remark)
|
|
SELECT 2253, '管理驾驶舱', 2169, 0, '#', '', '', 1, 0,
|
|
'F', '0', '0', 'train:analysis:dashboard', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, '管理端驾驶舱权限'
|
|
WHERE NOT EXISTS (SELECT 1 FROM public.sys_menu WHERE menu_id = 2253);
|
|
|
|
-- 5. Grant permissions to train_admin role (role_id = 3)
|
|
INSERT INTO public.sys_role_menu (role_id, menu_id)
|
|
SELECT 3, 2251
|
|
WHERE NOT EXISTS (SELECT 1 FROM public.sys_role_menu WHERE role_id = 3 AND menu_id = 2251);
|
|
|
|
INSERT INTO public.sys_role_menu (role_id, menu_id)
|
|
SELECT 3, 2252
|
|
WHERE NOT EXISTS (SELECT 1 FROM public.sys_role_menu WHERE role_id = 3 AND menu_id = 2252);
|
|
|
|
INSERT INTO public.sys_role_menu (role_id, menu_id)
|
|
SELECT 3, 2253
|
|
WHERE NOT EXISTS (SELECT 1 FROM public.sys_role_menu WHERE role_id = 3 AND menu_id = 2253);
|
|
|
|
-- 6. Verification
|
|
DO $$
|
|
BEGIN
|
|
IF (SELECT count(*) FROM public.sys_menu WHERE menu_id = 2251 AND perms = 'train:analysis:attendance') <> 1 THEN
|
|
RAISE EXCEPTION 'Menu 2251 verification failed';
|
|
END IF;
|
|
IF (SELECT count(*) FROM public.sys_menu WHERE menu_id = 2252 AND perms = 'train:analysis:attendance:query') <> 1 THEN
|
|
RAISE EXCEPTION 'Menu 2252 verification failed';
|
|
END IF;
|
|
IF (SELECT count(*) FROM public.sys_menu WHERE menu_id = 2253 AND perms = 'train:analysis:dashboard') <> 1 THEN
|
|
RAISE EXCEPTION 'Menu 2253 verification failed';
|
|
END IF;
|
|
IF (SELECT count(*) FROM public.sys_role_menu WHERE role_id = 3 AND menu_id IN (2251, 2252, 2253)) <> 3 THEN
|
|
RAISE EXCEPTION 'Role assignment verification failed';
|
|
END IF;
|
|
END $$;
|
|
|
|
COMMIT;
|