From 82675c7500df7f6ffbebff1b7cf7186bd7c78118 Mon Sep 17 00:00:00 2001 From: richjohnrambo Date: Fri, 28 Aug 2026 16:30:02 +0800 Subject: [PATCH] fix: add im missing menu patch --- .../data/generate/im_missing_menu_patch.sql | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 server/storage/data/generate/im_missing_menu_patch.sql diff --git a/server/storage/data/generate/im_missing_menu_patch.sql b/server/storage/data/generate/im_missing_menu_patch.sql new file mode 100644 index 0000000..98cceba --- /dev/null +++ b/server/storage/data/generate/im_missing_menu_patch.sql @@ -0,0 +1,97 @@ +SET @now = NOW(); + +SELECT @imRootId := `id` FROM `hg_admin_menu` WHERE `name` = 'imManager' LIMIT 1; + +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) +SELECT NULL, 0, 'IM管理', 'imManager', '/im', '', 1, '/im/tenant/index', '', '', 'LAYOUT', 1, '', 1, 0, '', 0, 0, 0, 1, '', 200, '', 1, @now, @now +WHERE @imRootId IS NULL; + +SELECT @imRootId := `id` FROM `hg_admin_menu` WHERE `name` = 'imManager' LIMIT 1; + +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) +SELECT NULL, @imRootId, title, name, path, '', 2, '', permissions, '', component, 1, 'imManager', 0, 0, '', 0, 0, 0, 2, CONCAT('tr_', @imRootId, ' '), sort, '', 1, @now, @now +FROM ( + SELECT '组织架构' title, 'imOrgIndex' name, 'org/index' path, '/imOrg/departmentList' permissions, '/imOrg/index' component, 65 sort UNION ALL + SELECT '文件治理', 'imFileIndex', 'file/index', '/imFile/list', '/imFile/index', 70 UNION ALL + SELECT '文件策略', 'imFilePolicyIndex', 'file-policy/index', '/imFilePolicy/list', '/imFilePolicy/index', 73 UNION ALL + SELECT '通知模板', 'imNotificationIndex', 'notification/index', '/imNotification/templateList', '/imNotification/index', 75 UNION ALL + SELECT '外部服务配置', 'imExternalConfigIndex', 'external-config/index', '/imExternalConfig/list', '/imExternalConfig/index', 80 UNION ALL + SELECT '工作台配置', 'imWorkbenchIndex', 'workbench/index', '/imWorkbench/list', '/imWorkbench/index', 80 UNION ALL + SELECT '版本更新', 'imAppReleaseIndex', 'app-release/index', '/imAppRelease/list', '/imAppRelease/index', 81 UNION ALL + SELECT '举报原因', 'imAbuseReasonIndex', 'abuse-reason/index', '/imAbuseReason/list', '/imAbuseReason/index', 82 UNION ALL + SELECT '总经理信箱配置', 'imMailboxConfigIndex', 'mailbox-config/index', '/imMailboxConfig/get', '/imMailboxConfig/index', 83 UNION ALL + SELECT '意见反馈配置', 'imFeedbackConfigIndex', 'feedback-config/index', '/imFeedbackConfig/get', '/imFeedbackConfig/index', 84 UNION ALL + SELECT '任务看板', 'imTaskDashboardIndex', 'task-dashboard/index', '/imTaskDashboard/list', '/imTaskDashboard/index', 90 +) p +WHERE @imRootId IS NOT NULL + AND NOT EXISTS (SELECT 1 FROM `hg_admin_menu` m WHERE m.`name` = p.name); + +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) +SELECT NULL, @imRootId, 'Outbox运维', 'imOutbox', 'outbox', '', 1, '/im/outbox/index', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 2, CONCAT('tr_', @imRootId, ' '), 65, '', 1, @now, @now +WHERE @imRootId IS NOT NULL + AND NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name` = 'imOutbox'); + +SELECT @outboxDirId := `id` FROM `hg_admin_menu` WHERE `name` = 'imOutbox' LIMIT 1; + +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) +SELECT NULL, @outboxDirId, 'Outbox列表', 'imOutboxIndex', 'index', '', 2, '', '/imOutbox/list', '', '/imOutbox/index', 1, 'imOutbox', 0, 0, '', 0, 0, 0, 3, CONCAT('tr_', @imRootId, ' tr_', @outboxDirId, ' '), 10, '', 1, @now, @now +WHERE @outboxDirId IS NOT NULL + AND NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name` = 'imOutboxIndex'); + +SELECT @imOrgId := `id` FROM `hg_admin_menu` WHERE `name` = 'imOrgIndex' LIMIT 1; +SELECT @fileId := `id` FROM `hg_admin_menu` WHERE `name` = 'imFileIndex' LIMIT 1; +SELECT @filePolicyId := `id` FROM `hg_admin_menu` WHERE `name` = 'imFilePolicyIndex' LIMIT 1; +SELECT @notificationId := `id` FROM `hg_admin_menu` WHERE `name` = 'imNotificationIndex' LIMIT 1; +SELECT @externalConfigId := `id` FROM `hg_admin_menu` WHERE `name` = 'imExternalConfigIndex' LIMIT 1; +SELECT @workbenchId := `id` FROM `hg_admin_menu` WHERE `name` = 'imWorkbenchIndex' LIMIT 1; +SELECT @appReleaseId := `id` FROM `hg_admin_menu` WHERE `name` = 'imAppReleaseIndex' LIMIT 1; +SELECT @abuseReasonId := `id` FROM `hg_admin_menu` WHERE `name` = 'imAbuseReasonIndex' LIMIT 1; +SELECT @mailboxConfigId := `id` FROM `hg_admin_menu` WHERE `name` = 'imMailboxConfigIndex' LIMIT 1; +SELECT @feedbackConfigId := `id` FROM `hg_admin_menu` WHERE `name` = 'imFeedbackConfigIndex' LIMIT 1; +SELECT @outboxListId := `id` FROM `hg_admin_menu` WHERE `name` = 'imOutboxIndex' LIMIT 1; +SELECT @tenantListId := `id` FROM `hg_admin_menu` WHERE `name` = 'imTenantIndex' LIMIT 1; +SELECT @auditLogId := `id` FROM `hg_admin_menu` WHERE `name` = 'imAuditLogIndex' LIMIT 1; + +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) +SELECT NULL, parent_id, title, name, '', '', 3, '', permissions, '', '', 1, '', 0, 0, '', 0, 1, 0, level, tree, sort, '', 1, @now, @now +FROM ( + SELECT @imOrgId parent_id, '部门编辑' title, 'imOrgDepartmentEdit' name, '/imOrg/departmentEdit' permissions, 3 level, CONCAT('tr_', @imRootId, ' tr_', @imOrgId, ' ') tree, 10 sort UNION ALL + SELECT @imOrgId, '部门导出', 'imOrgDepartmentExport', '/imOrg/departmentExport', 3, CONCAT('tr_', @imRootId, ' tr_', @imOrgId, ' '), 15 UNION ALL + SELECT @imOrgId, '部门删除', 'imOrgDepartmentDelete', '/imOrg/departmentDelete', 3, CONCAT('tr_', @imRootId, ' tr_', @imOrgId, ' '), 20 UNION ALL + SELECT @imOrgId, '成员列表', 'imOrgMemberList', '/imOrg/memberList', 3, CONCAT('tr_', @imRootId, ' tr_', @imOrgId, ' '), 30 UNION ALL + SELECT @imOrgId, '成员编辑', 'imOrgMemberEdit', '/imOrg/memberEdit', 3, CONCAT('tr_', @imRootId, ' tr_', @imOrgId, ' '), 40 UNION ALL + SELECT @imOrgId, '成员导出', 'imOrgMemberExport', '/imOrg/memberExport', 3, CONCAT('tr_', @imRootId, ' tr_', @imOrgId, ' '), 45 UNION ALL + SELECT @imOrgId, '成员移除', 'imOrgMemberDelete', '/imOrg/memberDelete', 3, CONCAT('tr_', @imRootId, ' tr_', @imOrgId, ' '), 50 UNION ALL + SELECT @imOrgId, '组织搜索', 'imOrgSearch', '/imOrg/search', 3, CONCAT('tr_', @imRootId, ' tr_', @imOrgId, ' '), 60 UNION ALL + SELECT @fileId, '文件详情', 'imFileView', '/imFile/view', 3, CONCAT('tr_', @imRootId, ' tr_', @fileId, ' '), 10 UNION ALL + SELECT @fileId, '隔离文件', 'imFileQuarantine', '/imFile/quarantine', 3, CONCAT('tr_', @imRootId, ' tr_', @fileId, ' '), 20 UNION ALL + SELECT @fileId, '删除文件', 'imFileDelete', '/imFile/delete', 3, CONCAT('tr_', @imRootId, ' tr_', @fileId, ' '), 30 UNION ALL + SELECT @fileId, '清理孤儿文件', 'imFileCleanupOrphan', '/imFile/cleanupOrphan', 3, CONCAT('tr_', @imRootId, ' tr_', @fileId, ' '), 40 UNION ALL + SELECT @filePolicyId, '策略更新', 'imFilePolicyUpdate', '/imFilePolicy/update', 3, CONCAT('tr_', @imRootId, ' tr_', @filePolicyId, ' '), 10 UNION ALL + SELECT @notificationId, '模板更新', 'imNotificationTemplateUpdate', '/imNotification/templateUpdate', 3, CONCAT('tr_', @imRootId, ' tr_', @notificationId, ' '), 10 UNION ALL + SELECT @externalConfigId, '配置详情', 'imExternalConfigView', '/imExternalConfig/view', 3, CONCAT('tr_', @imRootId, ' tr_', @externalConfigId, ' '), 10 UNION ALL + SELECT @externalConfigId, '更新配置', 'imExternalConfigUpdate', '/imExternalConfig/update', 3, CONCAT('tr_', @imRootId, ' tr_', @externalConfigId, ' '), 20 UNION ALL + SELECT @externalConfigId, '检查配置', 'imExternalConfigCheck', '/imExternalConfig/check', 3, CONCAT('tr_', @imRootId, ' tr_', @externalConfigId, ' '), 30 UNION ALL + SELECT @workbenchId, '工作台编辑', 'imWorkbenchEdit', '/imWorkbench/edit', 3, CONCAT('tr_', @imRootId, ' tr_', @workbenchId, ' '), 10 UNION ALL + SELECT @workbenchId, '工作台禁用', 'imWorkbenchDelete', '/imWorkbench/delete', 3, CONCAT('tr_', @imRootId, ' tr_', @workbenchId, ' '), 20 UNION ALL + SELECT @workbenchId, '工作台排序', 'imWorkbenchReorder', '/imWorkbench/reorder', 3, CONCAT('tr_', @imRootId, ' tr_', @workbenchId, ' '), 30 UNION ALL + SELECT @appReleaseId, '版本编辑', 'imAppReleaseEdit', '/imAppRelease/edit', 3, CONCAT('tr_', @imRootId, ' tr_', @appReleaseId, ' '), 10 UNION ALL + SELECT @abuseReasonId, '原因编辑', 'imAbuseReasonEdit', '/imAbuseReason/edit', 3, CONCAT('tr_', @imRootId, ' tr_', @abuseReasonId, ' '), 10 UNION ALL + SELECT @abuseReasonId, '原因禁用', 'imAbuseReasonDelete', '/imAbuseReason/delete', 3, CONCAT('tr_', @imRootId, ' tr_', @abuseReasonId, ' '), 20 UNION ALL + SELECT @mailboxConfigId, '信箱配置更新', 'imMailboxConfigUpdate', '/imMailboxConfig/update', 3, CONCAT('tr_', @imRootId, ' tr_', @mailboxConfigId, ' '), 10 UNION ALL + SELECT @feedbackConfigId, '反馈配置更新', 'imFeedbackConfigUpdate', '/imFeedbackConfig/update', 3, CONCAT('tr_', @imRootId, ' tr_', @feedbackConfigId, ' '), 10 UNION ALL + SELECT @outboxListId, 'Outbox详情', 'imOutboxView', '/imOutbox/view', 4, CONCAT('tr_', @imRootId, ' tr_', @outboxDirId, ' tr_', @outboxListId, ' '), 10 UNION ALL + SELECT @outboxListId, '重试Outbox事件', 'imOutboxRetry', '/imOutbox/retry', 4, CONCAT('tr_', @imRootId, ' tr_', @outboxDirId, ' tr_', @outboxListId, ' '), 20 UNION ALL + SELECT @outboxListId, '标记Outbox死信', 'imOutboxDead', '/imOutbox/dead', 4, CONCAT('tr_', @imRootId, ' tr_', @outboxDirId, ' tr_', @outboxListId, ' '), 30 UNION ALL + SELECT @tenantListId, '租户用量与健康', 'imTenantUsage', '/imTenant/usage', 4, CONCAT('tr_', @imRootId, ' tr_', (SELECT `pid` FROM `hg_admin_menu` WHERE `id` = @tenantListId), ' tr_', @tenantListId, ' '), 40 UNION ALL + SELECT @tenantListId, '租户删除前检查', 'imTenantDeletionCheck', '/imTenant/deletionCheck', 4, CONCAT('tr_', @imRootId, ' tr_', (SELECT `pid` FROM `hg_admin_menu` WHERE `id` = @tenantListId), ' tr_', @tenantListId, ' '), 50 UNION ALL + SELECT @tenantListId, '租户进入删除流程', 'imTenantEnterDeleting', '/imTenant/enterDeleting', 4, CONCAT('tr_', @imRootId, ' tr_', (SELECT `pid` FROM `hg_admin_menu` WHERE `id` = @tenantListId), ' tr_', @tenantListId, ' '), 60 UNION ALL + SELECT @tenantListId, '恢复租户', 'imTenantRestore', '/imTenant/restore', 4, CONCAT('tr_', @imRootId, ' tr_', (SELECT `pid` FROM `hg_admin_menu` WHERE `id` = @tenantListId), ' tr_', @tenantListId, ' '), 70 UNION ALL + SELECT @auditLogId, '导出审计日志', 'imAuditLogExport', '/imAuditLog/export', 3, CONCAT('tr_', @imRootId, ' tr_', @auditLogId, ' '), 20 +) p +WHERE parent_id IS NOT NULL + AND NOT EXISTS (SELECT 1 FROM `hg_admin_menu` m WHERE m.`name` = p.name); + +INSERT IGNORE INTO `hg_admin_role_menu` (`role_id`, `menu_id`) +SELECT 1, `id` FROM `hg_admin_menu` +WHERE `name` LIKE 'im%' OR `path` LIKE '/im%' OR `path` LIKE 'im/%';