-- ============================================================================ -- 经侦案件智慧管理系统 — 菜单 + 角色 + 权限 初始化SQL(PostgreSQL版) -- ============================================================================ -- 说明: -- 1. 本脚本基于框架 t_menu / t_role / t_role_menu 表结构生成 -- 2. menu_type: 1=目录, 2=菜单(页面), 3=功能点(按钮权限) -- 3. web_perms 字段对应前端 v-privilege 指令 和后端 @SaCheckPermission 注解 -- 4. 使用 PL/pgSQL 匿名块处理变量引用和自增ID获取 -- 5. 执行前请确认数据库中不存在同名菜单(或先清理) -- ============================================================================ DO $$ DECLARE -- 一级目录 ID v_report_center_id BIGINT; v_case_mgmt_id BIGINT; v_fund_id BIGINT; v_property_id BIGINT; v_review_id BIGINT; v_bigscreen_id BIGINT; -- 二级菜单 ID v_reception_id BIGINT; v_extract_id BIGINT; v_audit_list_id BIGINT; v_material_view_id BIGINT; v_monitor_id BIGINT; -- 案件管理子菜单 ID v_cs1 BIGINT; v_cs2 BIGINT; v_cs3 BIGINT; v_cs4 BIGINT; v_cs5 BIGINT; v_cs6 BIGINT; -- 卷宗管理(一级菜单) v_file_mgmt_id BIGINT; -- 涉案资金子菜单 ID v_f1 BIGINT; v_f2 BIGINT; v_f3 BIGINT; -- 涉案财物子菜单 ID v_p1 BIGINT; v_p2 BIGINT; v_p3 BIGINT; v_p4 BIGINT; -- 审议流程子菜单 ID v_r1 BIGINT; v_r2 BIGINT; v_r3 BIGINT; v_r4 BIGINT; v_r5 BIGINT; -- 数据大屏子菜单 ID v_bs1 BIGINT; -- 角色 ID v_jz_admin_role_id BIGINT; v_jz_user_role_id BIGINT; v_jz_auditor_role_id BIGINT; BEGIN RAISE NOTICE '========== 开始初始化经侦案件菜单与权限 =========='; -- 先清理已存在的旧数据(避免主键冲突) DELETE FROM t_role_menu WHERE role_id IN (SELECT role_id FROM t_role WHERE role_code IN ('JZ_ADMIN','JZ_USER','JZ_AUDITOR')); DELETE FROM t_role WHERE role_code IN ('JZ_ADMIN','JZ_USER','JZ_AUDITOR'); -- 删除所有匹配的菜单(包括逻辑删除的),避免序列号冲突 DELETE FROM t_menu WHERE ( menu_name IN ('接报案中心','案件管理','涉案资金','涉案财物','审议流程','数据大屏', '接报案大厅','数据互通','审核监督','材料预览','视频监控', '案件监督','执法考评','两书一单','风险预警','涉企案件','领办包保','卷宗管理', '资金管理','资金分析','金析为证','财物管理','财物调用','财物归还','财物出库', '一般审议','监督督办','审核意见','审核组配置','流程列表','综合数据大屏') OR web_perms LIKE 'alarm:%' OR web_perms LIKE 'evidence:%' OR web_perms LIKE 'suspect:%' OR web_perms LIKE 'alarm-extract:%' OR web_perms LIKE 'alarm-audit:%' OR web_perms LIKE 'material:%' OR web_perms LIKE 'monitor:%' OR web_perms LIKE 'case:%' OR web_perms LIKE 'evaluation:%' OR web_perms LIKE 'property:%' ); -- 重置自增序列到当前最大值之后 PERFORM setval('t_menu_menu_id_seq', COALESCE((SELECT MAX(menu_id) FROM t_menu), 0) + 1, false); PERFORM setval('t_role_role_id_seq', COALESCE((SELECT MAX(role_id) FROM t_role), 0) + 1, false); PERFORM setval('t_role_menu_role_menu_id_seq', COALESCE((SELECT MAX(role_menu_id) FROM t_role_menu), 0) + 1, false); RAISE NOTICE '旧数据清理完成,开始插入新数据'; -- ============================================================================ -- 一、一级目录菜单(6个) -- ============================================================================ INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('接报案中心', 1, 0, 1, '/report-center', NULL, false, false, true, false, 1, 'FormOutlined', false, 1) RETURNING menu_id INTO v_report_center_id; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('案件管理', 1, 0, 2, '/case-management', NULL, false, false, true, false, 1, 'SolutionOutlined', false, 1) RETURNING menu_id INTO v_case_mgmt_id; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('涉案资金', 1, 0, 3, '/fund', NULL, false, false, true, false, 1, 'WalletOutlined', false, 1) RETURNING menu_id INTO v_fund_id; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('涉案财物', 1, 0, 4, '/property', NULL, false, false, true, false, 1, 'BoxPlotOutlined', false, 1) RETURNING menu_id INTO v_property_id; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('卷宗管理', 2, 0, 5, '/case-management/file-management', '/business/case-management/file-management.vue', false, false, true, false, 1, 'FolderOpenOutlined', false, 1) RETURNING menu_id INTO v_file_mgmt_id; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('审议流程', 1, 0, 6, '/review', NULL, false, false, true, false, 1, 'AuditOutlined', false, 1) RETURNING menu_id INTO v_review_id; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('数据大屏', 1, 0, 7, '/bigscreen', NULL, false, false, true, false, 1, 'DashboardOutlined', false, 1) RETURNING menu_id INTO v_bigscreen_id; RAISE NOTICE '一级目录创建完成: 接报案中心=%, 案件管理=%, 涉案资金=%, 涉案财物=%, 卷宗管理=%, 审议流程=%, 数据大屏=%', v_report_center_id, v_case_mgmt_id, v_fund_id, v_property_id, v_file_mgmt_id, v_review_id, v_bigscreen_id; -- ============================================================================ -- 二、二级子菜单 + 三级功能点 -- ============================================================================ -- ==================== 接报案中心 下属 ==================== -- 2.1 接报案大厅 INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('接报案大厅', 2, v_report_center_id, 1, '/business/alarm/alarm-reception-list', '/business/alarm/alarm-reception-list.vue', false, false, true, false, 1, 'AlertOutlined', false, 1) RETURNING menu_id INTO v_reception_id; -- 接报案大厅功能点 INSERT INTO t_menu (menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id) VALUES ('查询', 3, v_reception_id, false, false, true, false, 1, 'alarm:query', 'alarm:query', v_reception_id, false, 1), ('新增登记', 3, v_reception_id, false, false, true, false, 1, 'alarm:add', 'alarm:add', v_reception_id, false, 1), ('编辑', 3, v_reception_id, false, false, true, false, 1, 'alarm:update', 'alarm:update', v_reception_id, false, 1), ('删除', 3, v_reception_id, false, false, true, false, 1, 'alarm:delete', 'alarm:delete', v_reception_id, false, 1), ('查看详情', 3, v_reception_id, false, false, true, false, 1, 'alarm:detail', 'alarm:detail', v_reception_id, false, 1), ('审核', 3, v_reception_id, false, false, true, false, 1, 'alarm:audit', 'alarm:audit', v_reception_id, false, 1); RAISE NOTICE '接报案大厅创建完成: id=%', v_reception_id; -- 2.2 数据互通/110抽取 INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('数据互通', 2, v_report_center_id, 2, '/business/alarm/alarm-extract-list', '/business/alarm/alarm-extract-list.vue', false, false, true, false, 1, 'SwapOutlined', false, 1) RETURNING menu_id INTO v_extract_id; INSERT INTO t_menu (menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id) VALUES ('查询', 3, v_extract_id, false, false, true, false, 1, 'alarm-extract:query', 'alarm-extract:query', v_extract_id, false, 1), ('110抽取', 3, v_extract_id, false, false, true, false, 1, 'alarm-extract:extract', 'alarm-extract:extract', v_extract_id, false, 1), ('分类', 3, v_extract_id, false, false, true, false, 1, 'alarm-extract:classify', 'alarm-extract:classify', v_extract_id, false, 1), ('流转', 3, v_extract_id, false, false, true, false, 1, 'alarm-extract:transfer', 'alarm-extract:transfer', v_extract_id, false, 1), ('回传', 3, v_extract_id, false, false, true, false, 1, 'alarm-extract:return', 'alarm-extract:return', v_extract_id, false, 1); RAISE NOTICE '数据互通创建完成: id=%', v_extract_id; -- 2.3 审核监督 INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('审核监督', 2, v_report_center_id, 3, '/business/alarm/audit-list', '/business/alarm/audit-list.vue', false, false, true, false, 1, 'SafetyCertificateOutlined', false, 1) RETURNING menu_id INTO v_audit_list_id; INSERT INTO t_menu (menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id) VALUES ('查询', 3, v_audit_list_id, false, false, true, false, 1, 'alarm:query', 'alarm:audit:query', v_audit_list_id, false, 1), ('审核表决', 3, v_audit_list_id, false, false, true, false, 1, 'alarm:audit', 'alarm:audit:do', v_audit_list_id, false, 1), ('查看详情', 3, v_audit_list_id, false, false, true, false, 1, 'alarm:detail', 'alarm:detail', v_audit_list_id, false, 1); RAISE NOTICE '审核监督创建完成: id=%', v_audit_list_id; -- 2.4 材料预览 INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('材料预览', 2, v_report_center_id, 4, '/business/alarm/material-view', '/business/alarm/material-view.vue', false, false, true, false, 1, 'FileTextOutlined', false, 1) RETURNING menu_id INTO v_material_view_id; INSERT INTO t_menu (menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id) VALUES ('查询', 3, v_material_view_id, false, false, true, false, 1, 'material:view', 'material:view', v_material_view_id, false, 1); RAISE NOTICE '材料预览创建完成: id=%', v_material_view_id; -- 2.5 视频监控 INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('视频监控', 2, v_report_center_id, 5, '/business/alarm/center-monitor', '/business/alarm/center-monitor.vue', false, false, true, false, 1, 'VideoCameraOutlined', false, 1) RETURNING menu_id INTO v_monitor_id; INSERT INTO t_menu (menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id) VALUES ('查看', 3, v_monitor_id, false, false, true, false, 1, 'monitor:view', 'monitor:view', v_monitor_id, false, 1); RAISE NOTICE '视频监控创建完成: id=%', v_monitor_id; -- ==================== 案件管理 下属 ==================== INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('案件监督', 2, v_case_mgmt_id, 1, '/case-management/supervision', '/business/case-management/case-supervision.vue', false, false, true, false, 1, 'EyeOutlined', false, 1) RETURNING menu_id INTO v_cs1; INSERT INTO t_menu (menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id) VALUES ('查询', 3, v_cs1, false, false, true, false, 1, 'case:query', 'case:query', v_cs1, false, 1); INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('执法考评', 2, v_case_mgmt_id, 2, '/case-management/evaluation', '/business/case-management/evaluation.vue', false, false, true, false, 1, 'StarOutlined', false, 1) RETURNING menu_id INTO v_cs2; INSERT INTO t_menu (menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id) VALUES ('查询', 3, v_cs2, false, false, true, false, 1, 'evaluation:query', 'evaluation:query', v_cs2, false, 1); INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('两书一单', 2, v_case_mgmt_id, 3, '/case-management/two-books-one-form', '/business/case-management/two-books-one-form.vue', false, false, true, false, 1, 'FileProtectOutlined', false, 1) RETURNING menu_id INTO v_cs3; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('风险预警', 2, v_case_mgmt_id, 4, '/case-management/risk-warning', '/case-management/risk-warning.vue', false, false, true, false, 1, 'WarningOutlined', false, 1) RETURNING menu_id INTO v_cs4; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('涉企案件', 2, v_case_mgmt_id, 5, '/case-management/enterprise-record', '/business/case-management/enterprise-record.vue', false, false, true, false, 1, 'BankOutlined', false, 1) RETURNING menu_id INTO v_cs5; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('领办包保', 2, v_case_mgmt_id, 6, '/case-management/leader-record', '/business/case-management/leader-record.vue', false, false, true, false, 1, 'CrownOutlined', false, 1) RETURNING menu_id INTO v_cs6; RAISE NOTICE '案件管理6个子菜单创建完成'; -- ==================== 涉案资金 下属 ==================== INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('资金管理', 2, v_fund_id, 1, '/fund/management', '/business/fund/fund-management.vue', false, false, true, false, 1, 'MoneyCollectOutlined', false, 1) RETURNING menu_id INTO v_f1; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('资金分析', 2, v_fund_id, 2, '/fund/analysis', '/business/fund/fund-analysis.vue', false, false, true, false, 1, 'LineChartOutlined', false, 1) RETURNING menu_id INTO v_f2; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('金析为证', 2, v_fund_id, 3, '/fund/evidence', '/business/fund/fund-evidence.vue', false, false, true, false, 1, 'ExperimentOutlined', false, 1) RETURNING menu_id INTO v_f3; RAISE NOTICE '涉案资金3个子菜单创建完成'; -- ==================== 涉案财物 下属 ==================== INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('财物管理', 2, v_property_id, 1, '/property/management', '/business/property/property-management.vue', false, false, true, false, 1, 'InboxOutlined', false, 1) RETURNING menu_id INTO v_p1; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('财物调用', 2, v_property_id, 2, '/property/transfer', '/business/property/property-transfer-list.vue', false, false, true, false, 1, 'SwapOutlined', false, 1) RETURNING menu_id INTO v_p2; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('财物归还', 2, v_property_id, 3, '/property/return', '/business/property/property-return-list.vue', false, false, true, false, 1, 'RollbackOutlined', false, 1) RETURNING menu_id INTO v_p3; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('财物出库', 2, v_property_id, 4, '/property/checkout', '/business/property/property-checkout-list.vue', false, false, true, false, 1, 'ExportOutlined', false, 1) RETURNING menu_id INTO v_p4; INSERT INTO t_menu (menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id) VALUES ('查询', 3, v_p1, false, false, true, false, 1, 'property:management:query', 'property:management:query', v_p1, false, 1), ('新增录入', 3, v_p1, false, false, true, false, 1, 'property:management:add', 'property:management:add', v_p1, false, 1), ('查看详情', 3, v_p1, false, false, true, false, 1, 'property:management:detail', 'property:management:detail', v_p1, false, 1), ('出库', 3, v_p1, false, false, true, false, 1, 'property:management:checkout', 'property:management:checkout', v_p1, false, 1), ('调用', 3, v_p1, false, false, true, false, 1, 'property:management:invoke', 'property:management:invoke', v_p1, false, 1); INSERT INTO t_menu (menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id) VALUES ('查询', 3, v_p2, false, false, true, false, 1, 'property:transfer:query', 'property:transfer:query', v_p2, false, 1), ('查看详情', 3, v_p2, false, false, true, false, 1, 'property:transfer:detail', 'property:transfer:detail', v_p2, false, 1), ('调用审核', 3, v_p2, false, false, true, false, 1, 'property:transfer:audit', 'property:transfer:audit', v_p2, false, 1); INSERT INTO t_menu (menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id) VALUES ('查询', 3, v_p3, false, false, true, false, 1, 'property:return:query', 'property:return:query', v_p3, false, 1), ('查看详情', 3, v_p3, false, false, true, false, 1, 'property:return:detail', 'property:return:detail', v_p3, false, 1), ('确认归还', 3, v_p3, false, false, true, false, 1, 'property:return:submit', 'property:return:submit', v_p3, false, 1); INSERT INTO t_menu (menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id) VALUES ('查询', 3, v_p4, false, false, true, false, 1, 'property:checkout:query', 'property:checkout:query', v_p4, false, 1), ('查看详情', 3, v_p4, false, false, true, false, 1, 'property:checkout:detail', 'property:checkout:detail', v_p4, false, 1), ('确认出库', 3, v_p4, false, false, true, false, 1, 'property:checkout:submit', 'property:checkout:submit', v_p4, false, 1); RAISE NOTICE '涉案财物子菜单创建完成'; -- ==================== 审议流程 下属 ==================== INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('一般审议', 2, v_review_id, 1, '/review/general-list', '/business/review/general-list.vue', false, false, true, false, 1, 'UnorderedListOutlined', false, 1) RETURNING menu_id INTO v_r1; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('监督督办', 2, v_review_id, 2, '/review/supervision', '/business/review/supervision.vue', false, false, true, false, 1, 'TeamOutlined', false, 1) RETURNING menu_id INTO v_r2; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('审核意见', 2, v_review_id, 3, '/review/opinion-flow', '/business/review/opinion-flow.vue', false, false, true, false, 1, 'MessageOutlined', false, 1) RETURNING menu_id INTO v_r3; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('审核组配置', 2, v_review_id, 4, '/review/group-config', '/business/review/group-config.vue', false, false, true, false, 1, 'SettingOutlined', false, 1) RETURNING menu_id INTO v_r4; INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('流程列表', 2, v_review_id, 5, '/review/process-list', '/business/review/process-list.vue', false, false, true, false, 1, 'ApartmentOutlined', false, 1) RETURNING menu_id INTO v_r5; RAISE NOTICE '审议流程5个子菜单创建完成'; -- ==================== 数据大屏 下属 ==================== INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, icon, deleted_flag, create_user_id) VALUES ('综合数据大屏', 2, v_bigscreen_id, 1, '/bigscreen/data-bigscreen', '/business/alarm/data-bigscreen.vue', false, false, true, false, 1, 'DashboardTwoTone', false, 1) RETURNING menu_id INTO v_bs1; RAISE NOTICE '数据大屏子菜单创建完成'; -- ============================================================================ -- 三、证据材料/嫌疑人 功能点(挂接在接报案大厅下) -- ============================================================================ INSERT INTO t_menu (menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id) VALUES ('证据查询', 3, v_reception_id, false, false, true, false, 1, 'evidence:query', 'evidence:query', v_reception_id, false, 1), ('证据新增', 3, v_reception_id, false, false, true, false, 1, 'evidence:add', 'evidence:add', v_reception_id, false, 1), ('证据编辑', 3, v_reception_id, false, false, true, false, 1, 'evidence:update', 'evidence:update', v_reception_id, false, 1), ('证据删除', 3, v_reception_id, false, false, true, false, 1, 'evidence:delete', 'evidence:delete', v_reception_id, false, 1), ('嫌疑人新增',3, v_reception_id, false, false, true, false, 1, 'suspect:add', 'suspect:add', v_reception_id, false, 1), ('嫌疑人删除',3, v_reception_id, false, false, true, false, 1, 'suspect:delete', 'suspect:delete', v_reception_id, false, 1); RAISE NOTICE '证据/嫌疑人功能点创建完成'; -- ============================================================================ -- 四、角色定义 -- ============================================================================ INSERT INTO t_role (role_name, role_code, remark) VALUES ('经侦管理员', 'JZ_ADMIN', '经侦案件智慧管理系统管理员,拥有所有模块权限') RETURNING role_id INTO v_jz_admin_role_id; INSERT INTO t_role (role_name, role_code, remark) VALUES ('经侦用户', 'JZ_USER', '经侦案件普通用户,可查看和登记警情') RETURNING role_id INTO v_jz_user_role_id; INSERT INTO t_role (role_name, role_code, remark) VALUES ('审核员', 'JZ_AUDITOR', '负责警情审核工作的人员') RETURNING role_id INTO v_jz_auditor_role_id; RAISE NOTICE '角色创建完成: 管理员=%, 用户=%, 审核员=%', v_jz_admin_role_id, v_jz_user_role_id, v_jz_auditor_role_id; -- ============================================================================ -- 五、角色-菜单关联(给角色分配权限) -- ============================================================================ -- 5.1 经侦管理员 → 所有菜单 INSERT INTO t_role_menu (role_id, menu_id) SELECT v_jz_admin_role_id, menu_id FROM t_menu WHERE deleted_flag = false; RAISE NOTICE '管理员角色已分配所有菜单权限'; -- 5.2 经侦用户 → 接报案中心 + 数据大屏(部分权限) INSERT INTO t_role_menu (role_id, menu_id) SELECT v_jz_user_role_id, menu_id FROM t_menu WHERE menu_name IN ('接报案中心','数据大屏') AND deleted_flag = false; INSERT INTO t_role_menu (role_id, menu_id) SELECT v_jz_user_role_id, m.menu_id FROM t_menu m WHERE m.parent_id IN ( SELECT menu_id FROM t_menu WHERE menu_name IN ('接报案中心','数据大屏') AND deleted_flag = false ) AND m.deleted_flag = false; -- 功能点:只分配查询/新增/编辑/查看详情 INSERT INTO t_role_menu (role_id, menu_id) SELECT v_jz_user_role_id, menu_id FROM t_menu WHERE parent_id = v_reception_id AND menu_type = 3 AND web_perms IN ('alarm:query','alarm:add','alarm:update','alarm:detail', 'evidence:query','evidence:add','evidence:update') AND deleted_flag = false; -- 数据互通功能点全开 INSERT INTO t_role_menu (role_id, menu_id) SELECT v_jz_user_role_id, menu_id FROM t_menu WHERE parent_id = v_extract_id AND menu_type = 3 AND deleted_flag = false; RAISE NOTICE '用户角色权限分配完成'; -- 5.3 审核员 → 接报案中心 + 审核/查看权限 INSERT INTO t_role_menu (role_id, menu_id) SELECT v_jz_auditor_role_id, menu_id FROM t_menu WHERE menu_name = '接报案中心' AND deleted_flag = false; INSERT INTO t_role_menu (role_id, menu_id) SELECT v_jz_auditor_role_id, menu_id FROM t_menu WHERE parent_id = v_report_center_id AND deleted_flag = false; INSERT INTO t_role_menu (role_id, menu_id) SELECT v_jz_auditor_role_id, menu_id FROM t_menu WHERE parent_id = v_reception_id AND menu_type = 3 AND web_perms IN ('alarm:query','alarm:audit','alarm:detail','evidence:query') AND deleted_flag = false; INSERT INTO t_role_menu (role_id, menu_id) SELECT v_jz_auditor_role_id, menu_id FROM t_menu WHERE parent_id = v_audit_list_id AND menu_type = 3 AND deleted_flag = false; RAISE NOTICE '审核员角色权限分配完成'; RAISE NOTICE '========== 初始化完成 =========='; END $$;