diff --git a/build/database/std/install/sys_i18n.sql b/build/database/std/install/sys_i18n.sql index 6c6f8abd..a2a3f898 100644 --- a/build/database/std/install/sys_i18n.sql +++ b/build/database/std/install/sys_i18n.sql @@ -75,10 +75,10 @@ INSERT INTO `sys_i18n` VALUES (57, 'menu.common.resetPwd', '重置密码', 'Rese INSERT INTO `sys_i18n` VALUES (58, 'menu.common.unlock', '账户解锁', 'Account Unlock'); INSERT INTO `sys_i18n` VALUES (59, 'menu.forcedQuit.batch ', '批量强退', 'Batch Undo'); INSERT INTO `sys_i18n` VALUES (60, 'menu.forcedQuit.single', '单条强退', 'Individual Forced Retirement'); -INSERT INTO `sys_i18n` VALUES (61, 'menu.neData.udmAuth', 'UDM鉴权用户', 'UDM Authentication'); -INSERT INTO `sys_i18n` VALUES (62, 'menu.neData.udmSub', 'UDM签约用户', 'UDM Subscribers'); -INSERT INTO `sys_i18n` VALUES (63, 'menu.neData.udmVOIP', 'VOIP鉴权用户', 'VOIP Authentication'); -INSERT INTO `sys_i18n` VALUES (64, 'menu.neData.udmVolte', 'IMS签约用户', 'IMS Subscribers'); +INSERT INTO `sys_i18n` VALUES (61, 'menu.neData.udmAuth', 'UDM 鉴权用户', 'UDM Authentication'); +INSERT INTO `sys_i18n` VALUES (62, 'menu.neData.udmSub', 'UDM 签约用户', 'UDM Subscribers'); +INSERT INTO `sys_i18n` VALUES (63, 'menu.neData.udmVoIP', 'UDM VoIP用户', 'UDM VoIP User'); +INSERT INTO `sys_i18n` VALUES (64, 'menu.neData.udmVolte', 'UDM VoLTE用户', 'UDM VoLTE User'); INSERT INTO `sys_i18n` VALUES (65, 'menu.neData.imsSub', 'IMS在线语音会话', 'IMS Online Voice Session'); INSERT INTO `sys_i18n` VALUES (66, 'menu.neData.smfSub', 'SMF在线数据会话', 'SMF Online Data Session'); INSERT INTO `sys_i18n` VALUES (67, 'menu.neData.baseOnline', '基站在线', 'Radio Online'); @@ -124,7 +124,7 @@ INSERT INTO `sys_i18n` VALUES (106, 'menu.perf.data', '性能数据', 'Performan INSERT INTO `sys_i18n` VALUES (107, 'menu.perf.kpiOverView', '关键指标概览', 'Key Performance Overview'); INSERT INTO `sys_i18n` VALUES (108, 'menu.perf.threshold', '性能门限', 'Performance Thresholds'); INSERT INTO `sys_i18n` VALUES (109, 'menu.perf.kpi', '关键指标', 'Key Performance Indicators'); -INSERT INTO `sys_i18n` VALUES (110, 'menu.perf.customTarget', '自定义指标', 'Custom Indicator Management'); +INSERT INTO `sys_i18n` VALUES (110, 'menu.perf.kpicTitle', '自定义指标', 'Custom Key Performance Title'); INSERT INTO `sys_i18n` VALUES (111, 'menu.perf.kpiKeyTarget', '关键指标报表', 'Key Performance Reports'); INSERT INTO `sys_i18n` VALUES (112, 'menu.mml', 'MML', 'MML'); INSERT INTO `sys_i18n` VALUES (113, 'menu.mml.ne', '网元操作', 'NE Operation'); @@ -136,7 +136,7 @@ INSERT INTO `sys_i18n` VALUES (118, 'menu.perf.dataRemark', '性能数据菜单' INSERT INTO `sys_i18n` VALUES (119, 'menu.dashboard.smscCDR.content', '可见短信内容', 'Visible SMS content'); INSERT INTO `sys_i18n` VALUES (120, 'menu.perf.thresholdRemark', '性能门限菜单', 'Performance Threshold Menu'); INSERT INTO `sys_i18n` VALUES (121, 'menu.perf.kpiRemark', '黄金指标菜单', 'Key Performance Indicator Menu'); -INSERT INTO `sys_i18n` VALUES (122, 'menu.perf.customTargetRemark', '自定义指标菜单', 'Custom Indicator Management Menu'); +INSERT INTO `sys_i18n` VALUES (122, 'menu.perf.kpicTitleRemark', '自定义指标菜单', 'Custom Key Performance Title Menu'); INSERT INTO `sys_i18n` VALUES (123, 'menu.dashboard.smfCDRByIMSI', 'SMF数据流量报表', 'SMF Data Usage Report'); INSERT INTO `sys_i18n` VALUES (124, 'menu.mmlRemark', 'MML管理目录', 'MML Management Catalog'); INSERT INTO `sys_i18n` VALUES (125, 'menu.mml.neRemark', '网元操作菜单', 'Network Element Operations Menu'); @@ -497,7 +497,7 @@ INSERT INTO `sys_i18n` VALUES (479, 'config.sys.helpDocRemark', '静态文件目 INSERT INTO `sys_i18n` VALUES (480, 'log.operate.title.neAction', '网元处理', 'Network Element Processing'); INSERT INTO `sys_i18n` VALUES (481, 'log.operate.title.helpDoc', '系统使用文档', 'System Usage Documentation'); INSERT INTO `sys_i18n` VALUES (482, 'menu.ueUser.n3iwf', 'N3IWF在线用户', 'N3IWF Online User'); -INSERT INTO `sys_i18n` VALUES (483, 'menu.neData.pcfSub', '用户策略控制信息', 'User PCC Information'); +INSERT INTO `sys_i18n` VALUES (483, 'menu.neData.pcfSub', 'PCF用户规则', 'PCF User Rule'); INSERT INTO `sys_i18n` VALUES (484, 'menu.system.user.editRole', '修改用户角色', 'Modifying User Role'); INSERT INTO `sys_i18n` VALUES (485, 'config.sys.i18nOpen', '国际化切换', 'Internationalization Switching'); INSERT INTO `sys_i18n` VALUES (486, 'config.sys.i18nDefault', '国际化默认语言', 'Internationalization Default Language'); @@ -659,7 +659,7 @@ INSERT INTO `sys_i18n` VALUES (641, 'cache.name.oauth2_devices', '客户端令 INSERT INTO `sys_i18n` VALUES (642, 'job.backup_export_cdr', '备份-CDR数据定期导出', 'Backup-Periodic export of CDR Data'); INSERT INTO `sys_i18n` VALUES (643, 'job.backup_export_cdr_remark', 'dataType: 类型支持 ims/smf/sgwc/smsc\nfileType: 文件类型 csv/xlsx\nhour: 数据时间从任务执行时间前的小时数', 'Backup-Periodic export of dataType: type support ims/smf/sgwc/smsc\nfileType: file type csv/xlsx\nhour: data time from the hour before the task execution time'); -- INSERT INTO `sys_i18n` VALUES (644, 'menu.log.exportFile', '导出文件', 'Exported File'); -INSERT INTO `sys_i18n` VALUES (645, 'menu.perf.kpiCReport', '自定义指标数据', 'Custom Indicator Data'); +INSERT INTO `sys_i18n` VALUES (645, 'menu.perf.kpic', '自定义指标数据', 'Custom Key Performance Indicators'); INSERT INTO `sys_i18n` VALUES (646, 'menu.trace.taskHLR', 'HLR 跟踪任务', 'HLR Trace Task'); INSERT INTO `sys_i18n` VALUES (647, 'dictType.cdr_cause_code', 'CDR 响应原因代码类别类型', 'CDR Response Reason Code Category Type'); INSERT INTO `sys_i18n` VALUES (648, 'dictData.cdr_cause_code.0', '未知错误', 'Unknown Error'); @@ -734,8 +734,8 @@ INSERT INTO `sys_i18n` VALUES (716, 'log.operate.title.alarm', '告警', 'Alarm' INSERT INTO `sys_i18n` VALUES (717, 'ne.common.neType', '网元类型', 'NE Type'); INSERT INTO `sys_i18n` VALUES (718, 'ne.common.neName', '网元名称', 'NE Name'); INSERT INTO `sys_i18n` VALUES (719, 'ne.common.neId', '网元标识', 'NE ID'); -INSERT INTO `sys_i18n` VALUES (720, 'log.operate.title.udmVOIP', 'VOIP用户', 'UDM VOIP'); -INSERT INTO `sys_i18n` VALUES (721, 'log.operate.title.udmVolteIMS', 'VolteIMS用户', 'UDM VolteIMS'); +INSERT INTO `sys_i18n` VALUES (720, 'log.operate.title.udmVOIP', 'UDM VoIP', 'UDM VoIP'); +INSERT INTO `sys_i18n` VALUES (721, 'log.operate.title.udmVolteIMS', 'UDM VolteIMS', 'UDM VolteIMS'); INSERT INTO `sys_i18n` VALUES (722, 'log.operate.title.backup', '备份', 'Backup'); INSERT INTO `sys_i18n` VALUES (723, 'job.backup_export_table_cdr_event_smsc_remark', 'hour: 数据时间从任务执行时间前的小时数\ntableName: 数据表名\ncolumns: 支持字段\nbackupPath: 备份输出路径 /usr/local/omc/backup/{backupPath}', 'hour: data time from the hour before the task execution time \ntableName: data table name \ncolumns: support fields \nbackupPath: backup output path /usr/local/omc/backup/{backupPath}'); INSERT INTO `sys_i18n` VALUES (724, 'job.backup_export_table_cdr_event_sgwc_remark', 'hour: 数据时间从任务执行时间前的小时数\ntableName: 数据表名\ncolumns: 支持字段\nbackupPath: 备份输出路径 /usr/local/omc/backup/{backupPath}', 'hour: data time from the hour before the task execution time \ntableName: data table name \ncolumns: support fields \nbackupPath: backup output path /usr/local/omc/backup/{backupPath}'); @@ -772,17 +772,17 @@ INSERT INTO `sys_i18n` VALUES (754, 'job.ne_alarm_state_check_license', '网元 INSERT INTO `sys_i18n` VALUES (755, 'job.ne_alarm_state_check_license_remark', '检查网元的License是否即将到期,在出现过阈值时发出警报。\r\n\r\nAlarm type:\r\nCommunicationAlarm=1\r\nEquipmentAlarm=2\r\nProcessingFailure=3\r\nEnvironmentalAlarm=4\r\nQualityOfServiceAlarm=5\r\n\r\nSeverity:\r\nCritical=1\r\nMajor=2\r\nMinor=3\r\nWarning=4\r\n\r\nAddInfo: 告警补充信息\r\ndayLt: 天数小于,默认30天', 'Checks if the network element is License is about to expire and sends an alert if a threshold is crossed.\n\nAlarm type:\nCommunicationAlarm=1\nEquipmentAlarm=2\nProcessingFailure=3\nEnvironmentalAlarm=4\nQualityOfServiceAlarm=5\n\nSeverity:\nCritical=1\nMajor=2\nMinor=3\nWarning=4\r\n\r\nAddInfo: Additional information on alarms\r\ndayLt: Days less than, default 30 days'); INSERT INTO `sys_i18n` VALUES (756, 'dictData.trace_interfaces.14', 'N14', 'N14'); INSERT INTO `sys_i18n` VALUES (757, 'dictData.trace_interfaces.5', 'N5', 'N5'); -INSERT INTO `sys_i18n` VALUES (758, "alarm.export.alarmCode", "告警编码", "Alarm Code"); -INSERT INTO `sys_i18n` VALUES (759, "config.sys.user.fristPasswdChangeRemark", "关闭改为false 开启改为true, 建议同时设置密码有效期", "Off to false On to true, it is recommended to set the password expiration date at the same time."); -INSERT INTO `sys_i18n` VALUES (760, "menu.perf.kpiIMSOverview", "语音数据概览", "Voice Data Overview"); -INSERT INTO `sys_i18n` VALUES (761, "dictType.sys_user_type", "用户类型", "User Type"); -INSERT INTO `sys_i18n` VALUES (762, "dictData.sys_user_type.system", "系统", "System"); -INSERT INTO `sys_i18n` VALUES (763, "dictData.sys_user_type.ldap", "LDAP", "LDAP"); -INSERT INTO `sys_i18n` VALUES (764, "dictData.sys_user_type.smtp", "SMTP", "SMTP"); -INSERT INTO `sys_i18n` VALUES (765, "dictData.sys_user_type.oauth2", "OAuth2", "OAuth2"); -INSERT INTO `sys_i18n` VALUES (766, "user.export.userType", "用户类型", "User Type"); -INSERT INTO `sys_i18n` VALUES (767, "menu.system.loginSource", "第三方登录认证", "Third Party Login Source"); -INSERT INTO `sys_i18n` VALUES (768, "log.operate.title.sysLoginSource", "认证源", "Login Source"); +INSERT INTO `sys_i18n` VALUES (758, 'alarm.export.alarmCode', '告警编码', 'Alarm Code'); +INSERT INTO `sys_i18n` VALUES (759, 'config.sys.user.fristPasswdChangeRemark', '关闭改为false 开启改为true, 建议同时设置密码有效期', 'Off to false On to true, it is recommended to set the password expiration date at the same time.'); +INSERT INTO `sys_i18n` VALUES (760, 'menu.perf.kpiOverviewIMS', '语音通话统计', 'Voice Call Statistics'); +INSERT INTO `sys_i18n` VALUES (761, 'dictType.sys_user_type', '用户类型', 'User Type'); +INSERT INTO `sys_i18n` VALUES (762, 'dictData.sys_user_type.system', '系统', 'System'); +INSERT INTO `sys_i18n` VALUES (763, 'dictData.sys_user_type.ldap', 'LDAP', 'LDAP'); +INSERT INTO `sys_i18n` VALUES (764, 'dictData.sys_user_type.smtp', 'SMTP', 'SMTP'); +INSERT INTO `sys_i18n` VALUES (765, 'dictData.sys_user_type.oauth2', 'OAuth2', 'OAuth2'); +INSERT INTO `sys_i18n` VALUES (766, 'user.export.userType', '用户类型', 'User Type'); +INSERT INTO `sys_i18n` VALUES (767, 'menu.system.loginSource', '第三方登录认证', 'Third Party Login Source'); +INSERT INTO `sys_i18n` VALUES (768, 'log.operate.title.sysLoginSource', '认证源', 'Login Source'); INSERT INTO `sys_i18n` VALUES (769, 'job.delete_cdr_record', '删除-过期话单记录', 'Delete-Expired CDR Records'); INSERT INTO `sys_i18n` VALUES (770, 'job.delete_cdr_record_remark', 'storeDays:表示保留最近天数的数据记录\r\nneList:表示匹配的网元类型', 'storeDays: Indicates the most recent days of data records retained\r\nneList: Indicates the type of network elements matched'); INSERT INTO `sys_i18n` VALUES (771, 'job.delete_uenb_record', '删除-过期终端接入基站记录', 'Delete-Expired UE-NB Records'); diff --git a/build/database/std/install/sys_menu.sql b/build/database/std/install/sys_menu.sql index 3605e8af..356999b8 100644 --- a/build/database/std/install/sys_menu.sql +++ b/build/database/std/install/sys_menu.sql @@ -2,28 +2,28 @@ -- Table structure for sys_menu -- ---------------------------- DROP TABLE IF EXISTS `sys_menu`; -CREATE TABLE `sys_menu` ( +CREATE TABLE `sys_menu` ( `menu_id` bigint NOT NULL AUTO_INCREMENT COMMENT '菜单ID', `menu_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜单名称', `parent_id` bigint DEFAULT '0' COMMENT '父菜单ID 默认0', `menu_sort` int DEFAULT '0' COMMENT '显示顺序', - `menu_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '路由地址', - `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '组件路径', - `frame_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '1' COMMENT '内部跳转标记(0否 1是)', - `cache_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '缓存标记(0不缓存 1缓存)', + `menu_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '路由地址', + `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '组件路径', + `frame_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '1' COMMENT '内部跳转标记(0否 1是)', + `cache_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '缓存标记(0不缓存 1缓存)', `menu_type` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜单类型(D目录 M菜单 A访问权限)', - `visible_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '是否显示(0隐藏 1显示)', - `status_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '菜单状态(0停用 1正常)', - `perms` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '权限标识', - `icon` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '#' COMMENT '菜单图标(#无图标)', - `del_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标记(0存在 1删除)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', + `visible_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '是否显示(0隐藏 1显示)', + `status_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '菜单状态(0停用 1正常)', + `perms` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '权限标识', + `icon` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '#' COMMENT '菜单图标(#无图标)', + `del_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记(0存在 1删除)', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者', `create_time` bigint DEFAULT '0' COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者', `update_time` bigint DEFAULT '0' COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注', - `tenant_flag` varchar(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '租户内部菜单标记(0否 1是)', - `core_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '核心网内部菜单标记(0否 1是)', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '备注', + `tenant_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '租户内部菜单标记(0否 1是)', + `core_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '核心网内部菜单标记(0否 1是)', `ne_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元限制 含有其中一个, 同时匹配用+号 nf,nf,nf+nf', PRIMARY KEY (`menu_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='系统_菜单权限表'; @@ -31,184 +31,181 @@ CREATE TABLE `sys_menu` ( -- ---------------------------- -- Records of sys_menu -- ---------------------------- -INSERT INTO `sys_menu` VALUES (1, 'menu.system', 0, 16, 'system', '', '1', '1', 'D', '1', '1', '', 'icon-xiangmu', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.systemRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (4, 'menu.ne', 0, 3, 'ne', '', '1', '0', 'D', '1', '1', '', 'icon-huizhiguize', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.configRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (5, 'menu.ue', 0, 7, 'ue', '', '1', '0', 'D', '1', '1', '', 'icon-wocanyu', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.ueRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (60, 'menu.tools', 0, 60, 'tool', '', '1', '1', 'D', '1', '1', '', 'icon-wenjian', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.toolsRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (61, 'menu.tools.terminal', 60, 20, 'terminal', 'tool/terminal/index', '1', '1', 'M', '1', '1', 'tool:terminal:index', 'icon-suofang', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (62, 'menu.tools.help', 60, 62, 'help', 'tool/help/index', '1', '1', 'M', '0', '1', 'tool:help:list', 'icon-shuoming', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.tools.helpRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (63, 'menu.tools.ps', 60, 8, 'ps', 'tool/ps/index', '1', '0', 'M', '1', '1', 'tool:ps:list', 'icon-zhizuoliucheng', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (64, 'menu.tools.net', 60, 9, 'net', 'tool/net/index', '1', '0', 'M', '1', '1', 'tool:net:list', 'icon-zhizuoliucheng', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (65, 'menu.tools.ping', 60, 4, 'ping', 'tool/ping/index', '1', '0', 'M', '1', '1', 'tool:ping:index', 'icon-paixu', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (66, 'menu.tools.iperf', 60, 6, 'iperf', 'tool/iperf/index', '1', '0', 'M', '1', '1', 'tool:iperf:index', 'icon-paixu', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (100, 'menu.security.user', 2113, 1, 'user', 'system/user/index', '1', '1', 'M', '1', '1', 'system:user:list', 'icon-wocanyu', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.security.userRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (101, 'menu.security.role', 2113, 3, 'role', 'system/role/index', '1', '1', 'M', '1', '1', 'system:role:list', 'icon-anzhuo', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.security.roleRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (102, 'menu.security.roleUser', 2113, 3, 'role/inline/auth-user/:roleId', 'system/role/auth-user', '1', '1', 'M', '0', '1', 'system:role:auth', '#', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.security.roleUserRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (103, 'menu.system.menu', 1, 10, 'menu', 'system/menu/index', '1', '1', 'M', '1', '1', 'system:menu:list', 'icon-wofaqi', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.menuRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (104, 'menu.security.dept', 2113, 5, 'dept', 'system/dept/index', '1', '1', 'M', '1', '1', 'system:dept:list', 'icon-yuzhanghao1', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.security.deptRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (105, 'menu.security.post', 2113, 6, 'post', 'system/post/index', '1', '1', 'M', '1', '1', 'system:post:list', 'icon-gonggaodayi', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.security.postRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (106, 'menu.system.dictType', 1, 30, 'dict', 'system/dict/index', '1', '1', 'M', '1', '1', 'system:dict:list', 'icon-tubiaoku', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.dictTypeRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (107, 'menu.system.dictData', 1, 31, 'dict/inline/data/:dictId', 'system/dict/data', '1', '1', 'M', '0', '1', 'system:dict:data', '#', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.dictDataRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (108, 'menu.system.paramSet', 1, 59, 'config', 'system/config/index', '1', '1', 'M', '1', '1', 'system:config:list', 'icon-gongnengjieshao', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.paramSetRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (109, 'menu.system.loginSource', 2113, 12, 'login-source', 'system/login-source/index', '1', '1', 'M', '1', '1', 'system:loginSource:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (111, 'menu.system.systemLog', 1, 11, 'log', '', '1', '1', 'D', '0', '0', '', '#', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.systemLogRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (112, 'menu.system.systemInfo', 1, 5, 'system-info', 'monitor/system/info', '1', '1', 'M', '1', '1', 'monitor:system:info', 'icon-fuzhidaima', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.systemInfoRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (113, 'menu.system.cacheInfo', 1, 8, 'cache-info', 'monitor/cache/info', '1', '1', 'M', '1', '1', 'monitor:cache:info', 'icon-gongnengjieshao', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.cacheInfoRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (114, 'menu.system.cache', 1, 9, 'cache', 'monitor/cache/index', '1', '1', 'M', '1', '1', 'monitor:cache:list', 'icon-tubiaoku', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.cacheRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (115, 'menu.security.onlineUser', 2113, 2, 'online', 'monitor/online/index', '1', '1', 'M', '1', '1', 'monitor:online:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.security.onlineUserRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (116, 'menu.system.job', 1, 20, 'job', 'monitor/job/index', '1', '1', 'M', '1', '1', 'monitor:job:list', 'icon-lishi', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.jobRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (117, 'menu.system.jobLog', 1, 21, '/system/job/inline/log/:jobId', 'monitor/job/log', '1', '1', 'M', '0', '1', 'monitor:job:log', '#', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.jobLogRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (500, 'menu.log.operat', 2089, 25, 'operate', 'system/log/operate/index', '1', '1', 'M', '1', '1', 'system:log:operate:list', 'icon-fuzhidaima', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.log.operatRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (501, 'menu.log.login', 2089, 26, 'login', 'system/log/login/index', '1', '1', 'M', '1', '1', 'system:log:login:list', 'icon-fuzhidaima', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.log.loginRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1000, 'menu.common.query', 100, 1, '', '', '1', '1', 'B', '1', '1', 'system:user:query', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1001, 'menu.common.add', 100, 2, '', '', '1', '1', 'B', '1', '1', 'system:user:add', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1002, 'menu.common.edit', 100, 3, '', '', '1', '1', 'B', '1', '1', 'system:user:edit', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1003, 'menu.common.delete', 100, 4, '', '', '1', '1', 'B', '1', '1', 'system:user:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1004, 'menu.common.export', 100, 5, '', '', '1', '1', 'B', '1', '1', 'system:user:export', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1005, 'menu.common.import', 100, 6, '', '', '1', '1', 'B', '1', '1', 'system:user:import', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1006, 'menu.common.resetPwd', 100, 7, '', '', '1', '1', 'B', '1', '1', 'system:user:resetPwd', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1007, 'menu.common.query', 101, 1, '', '', '1', '1', 'B', '1', '1', 'system:role:query', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1008, 'menu.common.add', 101, 2, '', '', '1', '1', 'B', '1', '1', 'system:role:add', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1009, 'menu.common.edit', 101, 3, '', '', '1', '1', 'B', '1', '1', 'system:role:edit', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1010, 'menu.common.delete', 101, 4, '', '', '1', '1', 'B', '1', '1', 'system:role:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1011, 'menu.common.export', 101, 5, '', '', '1', '1', 'B', '1', '1', 'system:role:export', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1012, 'menu.common.query', 103, 1, '', '', '1', '1', 'B', '1', '1', 'system:menu:query', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1013, 'menu.common.add', 103, 2, '', '', '1', '1', 'B', '1', '1', 'system:menu:add', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1014, 'menu.common.edit', 103, 3, '', '', '1', '1', 'B', '1', '1', 'system:menu:edit', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1015, 'menu.common.delete', 103, 4, '', '', '1', '1', 'B', '1', '1', 'system:menu:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1016, 'menu.common.query', 104, 1, '', '', '1', '1', 'B', '1', '1', 'system:dept:query', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1017, 'menu.common.add', 104, 2, '', '', '1', '1', 'B', '1', '1', 'system:dept:add', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1018, 'menu.common.edit', 104, 3, '', '', '1', '1', 'B', '1', '1', 'system:dept:edit', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1019, 'menu.common.delete', 104, 4, '', '', '1', '1', 'B', '1', '1', 'system:dept:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1020, 'menu.common.query', 105, 1, '', '', '1', '1', 'B', '1', '1', 'system:post:query', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1021, 'menu.common.add', 105, 2, '', '', '1', '1', 'B', '1', '1', 'system:post:add', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1022, 'menu.common.edit', 105, 3, '', '', '1', '1', 'B', '1', '1', 'system:post:edit', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1023, 'menu.common.delete', 105, 4, '', '', '1', '1', 'B', '1', '1', 'system:post:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1024, 'menu.common.export', 105, 5, '', '', '1', '1', 'B', '1', '1', 'system:post:export', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1025, 'menu.common.query', 106, 1, '#', '', '1', '1', 'B', '1', '1', 'system:dict:query', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1026, 'menu.common.add', 106, 2, '#', '', '1', '1', 'B', '1', '1', 'system:dict:add', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1027, 'menu.common.edit', 106, 3, '#', '', '1', '1', 'B', '1', '1', 'system:dict:edit', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1028, 'menu.common.delete', 106, 4, '#', '', '1', '1', 'B', '1', '1', 'system:dict:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1029, 'menu.common.export', 106, 5, '#', '', '1', '1', 'B', '1', '1', 'system:dict:export', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1030, 'menu.common.query', 108, 1, '#', '', '1', '1', 'B', '1', '1', 'system:config:query', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1031, 'menu.common.add', 108, 2, '#', '', '1', '1', 'B', '1', '1', 'system:config:add', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1032, 'menu.common.edit', 108, 3, '#', '', '1', '1', 'B', '1', '1', 'system:config:edit', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1033, 'menu.common.delete', 108, 4, '#', '', '1', '1', 'B', '1', '1', 'system:config:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1034, 'menu.common.export', 108, 5, '#', '', '1', '1', 'B', '1', '1', 'system:config:export', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1039, 'menu.common.query', 500, 1, '#', '', '1', '1', 'B', '1', '1', 'system:log:operate:query', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1040, 'menu.common.delete', 500, 2, '#', '', '1', '1', 'B', '1', '1', 'system:log:operate:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1041, 'menu.common.export', 500, 3, '#', '', '1', '1', 'B', '1', '1', 'system:log:operate:export', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1042, 'menu.common.query', 501, 1, '#', '', '1', '1', 'B', '1', '1', 'system:log:login:query', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1043, 'menu.common.delete', 501, 2, '#', '', '1', '1', 'B', '1', '1', 'system:log:login:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1044, 'menu.common.export', 501, 3, '#', '', '1', '1', 'B', '1', '1', 'system:log:login:export', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1045, 'menu.common.unlock', 501, 4, '#', '', '1', '1', 'B', '1', '1', 'system:log:login:unlock', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1046, 'menu.common.query', 114, 1, '#', '', '1', '1', 'B', '1', '1', 'monitor:cache:query', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1047, 'menu.common.delete', 114, 2, '#', '', '1', '1', 'B', '1', '1', 'monitor:cache:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1048, 'menu.common.query', 115, 1, '#', '', '1', '1', 'B', '1', '1', 'monitor:online:query', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1049, 'menu.forcedQuit.batch ', 115, 2, '#', '', '1', '1', 'B', '1', '1', 'monitor:online:batchLogout', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1050, 'menu.forcedQuit.single', 115, 3, '#', '', '1', '1', 'B', '1', '1', 'monitor:online:forceLogout', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1051, 'menu.common.query', 116, 1, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:query', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1052, 'menu.common.add', 116, 2, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:add', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1053, 'menu.common.edit', 116, 3, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:edit', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1054, 'menu.common.delete', 116, 4, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1055, 'menu.common.edit', 116, 5, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:changeStatus', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1056, 'menu.common.export', 116, 6, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:export', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1057, 'menu.common.query', 109, 1, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:query', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1058, 'menu.common.add', 109, 2, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:add', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1059, 'menu.common.edit', 109, 3, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:edit', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (1060, 'menu.common.delete', 109, 4, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2000, 'menu.neData.udmAuth', 5, 1, 'udm-auth', 'neData/udm-auth/index', '1', '1', 'M', '1', '1', 'udm:auth:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'udm'); -INSERT INTO `sys_menu` VALUES (2001, 'menu.neData.udmSub', 5, 3, 'udm-sub', 'neData/udm-sub/index', '1', '1', 'M', '1', '1', 'udm:sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'udm'); -INSERT INTO `sys_menu` VALUES (2002, 'menu.neData.udmVOIP', 5, 5, 'udm-voip', 'neData/udm-voip/index', '1', '0', 'M', '1', '1', 'udm:voip:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'udm'); -INSERT INTO `sys_menu` VALUES (2003, 'menu.neData.udmVolte', 5, 7, 'udm-volte', 'neData/udm-volte/index', '1', '0', 'M', '1', '1', 'udm:volte:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'udm+ims'); -INSERT INTO `sys_menu` VALUES (2004, 'menu.neData.imsSub', 5, 9, 'ims-sub', 'neData/ims-sub/index', '1', '0', 'M', '1', '1', 'ims:sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'ims'); -INSERT INTO `sys_menu` VALUES (2005, 'menu.neData.smfSub', 5, 12, 'smf-sub', 'neData/smf-sub/index', '1', '0', 'M', '1', '1', 'smf:sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'smf'); -INSERT INTO `sys_menu` VALUES (2006, 'menu.neData.baseOnline', 5, 15, 'base-online', 'neData/base-online/index', '1', '0', 'M', '0', '1', 'nb:base-online:index', 'icon-paixu', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'amf,mme'); -INSERT INTO `sys_menu` VALUES (2007, 'menu.neData.baseStation', 5, 18, 'base-station', 'neData/base-station/index', '1', '0', 'M', '1', '1', 'nb:base-station:list', 'icon-fenxiang', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'amf,mme'); -INSERT INTO `sys_menu` VALUES (2008, 'menu.ueUser.n3iwf', 5, 20, 'n3iwf', 'neUser/n3iwf/index', '1', '0', 'M', '1', '1', 'n3iwf:sub:index', 'icon-paixu', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'n3iwf'); -INSERT INTO `sys_menu` VALUES (2009, 'menu.neData.pcfSub', 5, 24, 'pcf-sub', 'neData/pcf-sub/index', '1', '0', 'M', '1', '1', 'pcf:sub:index', 'icon-paixu', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'pcf'); -INSERT INTO `sys_menu` VALUES (2010, 'menu.neUser.nssf', 5, 26, 'nssf', 'neUser/nssf/index', '1', '0', 'M', '1', '1', 'nssf:sub:index', 'icon-daimayingyong', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'nssf'); -INSERT INTO `sys_menu` VALUES (2011, 'menu.neUser.nssfAmf', 5, 28, 'nssfAmf', 'neUser/nssfAmf/index', '1', '0', 'M', '1', '1', 'nssf:sub:index', 'icon-paixu', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'nssf'); -INSERT INTO `sys_menu` VALUES (2083, 'menu.trace', 2087, 30, 'traceManage', '', '1', '0', 'D', '1', '1', '', 'icon-paixu', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.traceRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2084, 'menu.trace.task', 2083, 1, 'task', 'traceManage/task/index', '1', '0', 'M', '1', '1', 'traceManage:task:index', 'icon-chexiao', '0', 'system', 1728641403588, 'system', 1744453890548, 'menu.trace.taskRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2085, 'menu.trace.taskData', 2083, 4, 'task/inline/data', 'traceManage/task/data', '1', '0', 'M', '0', '1', 'traceManage:task:data', '#', '0', 'system', 1728641403588, 'system', 1744453921381, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2086, 'menu.trace.pcap', 2083, 11, 'pcap', 'traceManage/pcap/index', '1', '1', 'M', '1', '1', 'traceManage:pcap:index', 'icon-soutubiao', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.trace.pcapRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2087, 'menu.fault', 0, 2, 'faultManage', '', '1', '0', 'D', '1', '1', '', 'icon-jinggao', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.faultRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2088, 'menu.fault.active', 2129, 1, 'active-alarm', 'faultManage/active-alarm/index', '1', '1', 'M', '1', '1', 'faultManage:active-alarm:index', 'icon-wenjian', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.fault.activemRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2089, 'menu.log', 0, 9, 'logManage', '', '1', '0', 'D', '1', '1', '', 'icon-fuzhidaima', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.logRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2091, 'menu.log.mml', 2089, 30, 'mml', 'logManage/mml/index', '1', '1', 'M', '1', '1', 'logManage:mml:index', 'icon-wocanyu', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.log.mmlRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2092, 'menu.log.alarm', 2089, 40, 'alarm-log', 'logManage/alarm/index', '1', '0', 'M', '1', '1', 'logManage:alarm:index', 'icon-fuzhidaima', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.log.alarmRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2094, 'menu.log.forwarding', 2089, 41, 'forwarding', 'logManage/forwarding/index', '1', '0', 'M', '1', '1', 'logManage:forwarding:index', 'icon-huizhiguize', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.log.forwardingRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2095, 'menu.log.set', 2089, 45, 'logSet', 'logManage/logSet/index', '1', '0', 'M', '0', '0', 'logManage:logSet:index', 'icon-you', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.log.setRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2096, 'menu.neData.backupData', 5, 40, 'backup-data', 'neData/backup-data/index', '1', '0', 'M', '1', '1', 'ne-data:backup-data:list', 'icon-wenjian', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2097, 'menu.fault.history', 2129, 2, 'history-alarm', 'faultManage/history-alarm/index', '1', '1', 'M', '1', '1', 'faultManage/history-alarm/index', 'icon-huizhiguize', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.fault.historyRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2098, 'menu.fault.set', 2129, 100, 'fault-setting', 'faultManage/fault-setting/index', '1', '0', 'M', '0', '1', 'faultManage/fault-setting/index', 'icon-gonggaodayi', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.fault.setRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2099, 'menu.perf', 0, 5, 'perfManage', '', '1', '0', 'D', '1', '1', '', 'icon-soutubiao', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.perfRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2100, 'menu.perf.task', 2099, 1, 'taskManage', 'perfManage/taskManage/index', '1', '0', 'M', '0', '1', 'perfManage:taskManage:index', 'icon-wofaqi', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.perf.taskRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2101, 'menu.perf.data', 2099, 2, 'perfData', 'perfManage/perfData/index', '1', '0', 'M', '0', '1', 'perfManage:perfData:index', 'icon-soutubiao', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.perf.dataRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2102, 'menu.perf.kpiOverView', 2099, 10, 'kpiOverView', 'perfManage/kpiOverView/index', '1', '0', 'M', '1', '1', 'perfManage:perfReport:index', 'icon-gonggaodayi', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2103, 'menu.perf.threshold', 2099, 4, 'perfThreshold', 'perfManage/perfThreshold/index', '1', '0', 'M', '0', '0', 'perfManage:perfThreshold:index', 'icon-zhuanrang', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.perf.thresholdRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2104, 'menu.perf.kpi', 2099, 20, 'goldTarget', 'perfManage/goldTarget/index', '1', '1', 'M', '1', '1', 'perfManage:goldTarget:index', 'icon-soutubiao', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.perf.kpiRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2105, 'menu.perf.customTarget', 2099, 99, 'customTarget', 'perfManage/customTarget/index', '1', '0', 'M', '1', '1', 'perfManage:customTarget:index', 'icon-fanhui1', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.perf.customTargetRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2106, 'menu.perf.kpiKeyTarget', 2099, 12, 'kpiKeyTarget', 'perfManage/kpiKeyTarget/index', '1', '0', 'M', '1', '1', 'perfManage:kpiKeyTarget:index', 'icon-fuzhichenggong', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2107, 'menu.mml', 0, 8, 'mmlManage', '', '1', '0', 'D', '1', '1', '', 'icon-zhizuoliucheng', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.mmlRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2108, 'menu.mml.ne', 2107, 1, 'neOperate', 'mmlManage/neOperate/index', '1', '1', 'M', '1', '1', 'mmlManage:neOperate:index', 'icon-huizhiguize', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.mml.neRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2109, 'menu.mml.udm', 2107, 2, 'udmOperate', 'mmlManage/udmOperate/index', '1', '1', 'M', '1', '1', 'mmlManage:udmOperate:index', 'icon-gonggaodayi', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.mml.udmRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2110, 'menu.mml.set', 2107, 4, 'mmlSet', 'mmlManage/mmlSet/index', '1', '0', 'M', '0', '0', 'mmlManage:mmlSet:index', 'icon-wofaqi', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.mml.setRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2111, 'menu.mml.omc', 2107, 3, 'omcOperate', 'mmlManage/omcOperate/index', '1', '1', 'M', '0', '0', 'mmlManage:omcOperate:index', 'icon-huizhiguize', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.mml.omcRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2112, 'menu.dashboard.sgwcCDR', 2140, 12, 'sgwcCDR', 'dashboard/sgwcCDR/index', '1', '0', 'M', '1', '1', 'sgwc:cdr:index', 'icon-paixu', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'sgwc'); -INSERT INTO `sys_menu` VALUES (2113, 'menu.security', 0, 14, 'security', '', '1', '0', 'D', '1', '1', '', 'icon-suofang', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.securityRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2114, 'menu.system.systemSet', 1, 60, 'setting', 'system/setting/index', '1', '1', 'M', '1', '1', 'system:setting:index', 'icon-piliang', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.systemSetRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2115, 'menu.system.systemResource', 1, 6, 'monitor', 'monitor/monitor/index', '1', '1', 'M', '1', '1', 'monitor:monitor:info', 'icon-soutubiao', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.systemResourceRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2116, 'menu.dashboard.smscCDR.content', 2157, 1, '', '', '1', '1', 'B', '1', '1', 'smsc:cdr:content', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'smsc'); -INSERT INTO `sys_menu` VALUES (2117, 'menu.common.delete', 2140, 1, '', '', '1', '1', 'B', '1', '1', 'cdr:ne:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2118, 'menu.dashboard.smfCDRByIMSI', 2140, 7, 'smfCDRByIMSI', 'dashboard/smfCDRByIMSI/index', '1', '0', 'M', '1', '1', 'smf:cdr:index', 'icon-gerenzhanghu', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'smf'); -INSERT INTO `sys_menu` VALUES (2119, 'Alarm Overview', 2129, 6, 'alarm-overview', 'faultManage/alarm-overview/index', '1', '1', 'M', '1', '1', 'faultManage:active-overview:index', 'icon-wenjian', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2120, 'DashboardV1', 2131, 8, 'dashboardV1', 'dashboard/overview/index', '1', '0', 'M', '1', '1', 'dashboard:overview:index', 'icon-paixu', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2121, 'menu.system.user.editRole', 100, 8, '', '', '1', '1', 'B', '1', '1', 'system:user:editRole', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2122, 'menu.system.setting.i18n', 2114, 1, '', '', '1', '1', 'B', '1', '1', 'system:setting:i18n', '#', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.setting.i18nRemark', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2123, 'menu.log.neFile', 2089, 9, 'neFile', 'ne/neFile/index', '1', '0', 'M', '1', '1', 'ne:neFile:index', 'icon-tubiaohuizhi', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2124, 'menu.perf.kpiTitle', 2099, 22, 'kpi-title', 'perfManage/kpi-title/index', '1', '1', 'M', '1', '1', 'perfManage:kpi-title:index', 'icon-soutubiao', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2125, 'menu.neData.cbcCBE', 5, 20, 'cbc-cbe', 'neData/cbc-cbe/index', '1', '0', 'M', '1', '1', 'cbc:cbe:index', 'icon-tubiaoku', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2126, 'menu.monitor.topology', 2130, 10, 'topology', 'monitor/topology/index', '1', '0', 'M', '1', '1', 'monitor:topology:index', 'icon-fangda', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2127, 'menu.monitor.topologyBuild', 2130, 30, 'topologyBuild', 'monitor/topologyBuild/index', '1', '0', 'M', '1', '1', 'monitor:topologyBuild:index', 'icon-fangda', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2128, 'menu.monitor.topologyArchitecture', 2130, 20, 'topologyArchitecture', 'monitor/topologyArchitecture/index', '1', '0', 'M', '1', '1', 'monitor:topologyArchitecture:index', 'icon-soutubiao', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2129, 'menu.alarm', 2087, 20, 'alarm', '', '1', '0', 'D', '1', '1', '', 'icon-jinggao', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2130, 'menu.topology', 2087, 10, 'topology', '', '1', '0', 'D', '1', '1', '', 'icon-anzhuo', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2131, 'menu.dashboard', 2087, 15, 'dashboard', '', '1', '0', 'D', '1', '1', '', 'icon-soutubiao', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2132, 'menu.dashboard.overview', 2131, 1, 'overview', 'dashboard/overview2/index', '1', '0', 'M', '1', '1', 'dashboard:overview:index', 'icon-paixu', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2133, 'menu.dashboard.imsCDR', 2140, 3, 'imsCDR', 'dashboard/imsCDR/index', '1', '0', 'M', '1', '1', 'ims:cdr:index', 'icon-paixu', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'ims'); -INSERT INTO `sys_menu` VALUES (2135, 'menu.ne.neHost', 4, 15, 'neHost', 'ne/neHost/index', '1', '1', 'M', '1', '0', 'ne:neHost:list', 'icon-fuzhidaima', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2136, 'menu.ne.neHostCommand', 4, 18, 'neHostCommand', 'ne/neHostCommand/index', '1', '0', 'M', '1', '0', 'ne:neHostCommand:list', 'icon-fuzhidaima', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2137, 'menu.ne.neInfo', 4, 10, 'neInfo', 'ne/neInfo/index', '1', '0', 'M', '1', '1', 'ne:neInfo:list', 'icon-fuzhidaima', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2138, 'menu.dashboard.amfUE', 2141, 1, 'amfUE', 'dashboard/amfUE/index', '1', '0', 'M', '1', '1', 'amf:ue:index', 'icon-paixu', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'amf'); -INSERT INTO `sys_menu` VALUES (2139, 'menu.perf.kpiIMSOverview', 2099, 14, 'dashboard', 'perfManage/overview/index', '1', '0', 'M', '1', '1', 'ims:perfManage:dashboard:index', 'icon-fuzhichenggong', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'ims'); -INSERT INTO `sys_menu` VALUES (2140, 'menu.monitor.cdr', 2089, 10, 'cdr', '', '1', '0', 'D', '1', '1', '', 'icon-tubiaoku', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2141, 'menu.monitor.event', 2089, 20, 'event', '', '1', '0', 'D', '1', '1', '', 'icon-gengduo', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2142, 'menu.ne.neQuickSetup', 4, 40, 'neQuickSetup', 'ne/neQuickSetup/index', '1', '1', 'M', '1', '1', 'ne:neQuickSetup:list', 'icon-wofaqi', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2143, 'menu.ne.neLicense', 4, 20, 'neLicense', 'ne/neLicense/index', '1', '0', 'M', '1', '1', 'ne:neLicense:list', 'icon-fuzhidaima', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2144, 'menu.ne.neSoftware', 4, 23, 'neSoftware', 'ne/neSoftware/index', '1', '0', 'M', '1', '1', 'ne:neSoftware:list', 'icon-fuzhidaima', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2145, 'menu.ne.neVersion', 4, 26, 'neVersion', 'ne/neVersion/index', '1', '0', 'M', '1', '1', 'ne:neVersion:list', 'icon-fuzhidaima', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2146, 'menu.ne.neConfig', 4, 28, 'neConfig', 'ne/neConfig/index', '1', '0', 'M', '1', '1', 'ne:neConfig:list', 'icon-wofaqi', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2147, 'menu.fault.event', 2129, 3, 'event', 'faultManage/event/index', '1', '0', 'M', '1', '1', 'faultManage:event:index', 'icon-tubiaoku', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2148, 'menu.dashboard.smfCDR', 2140, 6, 'smfCDR', 'dashboard/smfCDR/index', '1', '0', 'M', '1', '1', 'smf:cdr:index', 'icon-paixu', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'smf'); -INSERT INTO `sys_menu` VALUES (2149, 'menu.dashboard.mmeUE', 2141, 5, 'mmeUE', 'dashboard/mmeUE/index', '1', '0', 'M', '1', '1', 'mme:ue:index', 'icon-paixu', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'mme'); -INSERT INTO `sys_menu` VALUES (2150, 'menu.system.user.editPost', 100, 9, '', '', '1', '1', 'B', '1', '1', 'system:user:editPost', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2151, 'menu.system.setting.doc', 2114, 2, '', '', '1', '1', 'B', '1', '1', 'system:setting:doc', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2152, 'menu.system.setting.official', 2114, 3,'', '', '1', '1', 'B', '1', '1', 'system:setting:official', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2153, 'menu.system.setting.lock', 2114, 4, '', '', '1', '1', 'B', '1', '1', 'system:setting:lock', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2154, 'menu.ne.neConfigBackup', 4, 29, 'neConfigBackup', 'ne/neConfigBackup/index', '1', '0', 'M', '1', '1', 'ne:neConfigBackup:list', 'icon-fuzhidaima', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2155, 'menu.common.delete', 2154, 1, '#', '', '1', '1', 'B', '1', '1', 'ne:neConfigBackup:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2156, 'menu.common.edit', 2154, 2, '#', '', '1', '1', 'B', '1', '1', 'ne:neConfigBackup:edit', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2157, 'menu.dashboard.smscCDR', 2140, 9, 'smscCDR', 'dashboard/smscCDR/index', '1', '0', 'M', '1', '1', 'smsc:cdr:index', 'icon-paixu', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '1', 'smsc'); -INSERT INTO `sys_menu` VALUES (2158, 'menu.trace.pcapFile', 2083, 12, 'pcap/inline/file', 'traceManage/pcap/file', '1', '0', 'M', '0', '1', 'traceManage:pcap:index', '#', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2159, 'menu.log.exportFile', 2089, 100, 'exportFile', 'logManage/exportFile/index', '1', '0', 'M', '1', '1', 'logManage:exportFile:index', 'icon-wenjian', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2160, 'menu.perf.kpiCReport', 2099, 100, 'kpiCReport', 'perfManage/kpiCReport/index', '1', '0', 'M', '1', '1', 'perfManage:kpiCReport:index', 'icon-tubiaoku', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2161, 'menu.trace.taskHLR', 2083, 6, 'taskHLR', 'traceManage/task-hlr/index', '1', '0', 'M', '0', '1', 'traceManage:taskHLR:index', 'icon-chexiao', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2162, 'menu.trace.taskAnalyze', 2083, 2, 'task/inline/analyze', 'traceManage/task/analyze', '1', '0', 'M', '0', '1', 'traceManage:task:analyze', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2163, 'menu.trace.tshark', 2083, 14, 'tshark', 'traceManage/tshark/index', '1', '0', 'M', '1', '1', 'traceManage:tshark:index', 'icon-gengduo', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2164, 'menu.trace.wireshark', 2083, 16, 'wireshark', 'traceManage/wireshark/index', '1', '0', 'M', '1', '1', 'traceManage:wireshark:index', 'icon-gengduo', '0', 'system', 1728641403588,'system', 1728641403588, '', '0', '0', ''); -INSERT INTO `sys_menu` VALUES (2165, 'menu.ne.neOverview', 4, 1, 'neOverview', 'configManage/neOverview/index', '1', '0', 'M', '1', '1', 'configManage:neOverview:index', 'icon-tubiaoku', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.ne.neOverviewRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1, 'menu.system', 0, 90, 'system', '', '1', '1', 'D', '1', '1', '', 'icon-xiangmu', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.systemRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (4, 'menu.ne', 0, 8, 'ne', '', '1', '0', 'D', '1', '1', '', 'icon-huizhiguize', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.configRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (5, 'menu.ue', 0, 6, 'ue', '', '1', '0', 'D', '1', '1', '', 'icon-wocanyu', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.ueRemark', '0', '0', 'udm'); +INSERT INTO `sys_menu` VALUES (6, 'menu.neData', 0, 10, 'ne-data', '', '1', '0', 'D', '1', '1', '', 'icon-suofang', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.neDataRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (60, 'menu.tools', 0, 60, 'tool', '', '1', '1', 'D', '1', '1', '', 'icon-wenjian', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.toolsRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (61, 'menu.tools.terminal', 60, 20, 'terminal', 'tool/terminal/index', '1', '1', 'M', '1', '1', 'tool:terminal:index', 'icon-suofang', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (62, 'menu.tools.help', 60, 62, 'help', 'tool/help/index', '1', '1', 'M', '0', '1', 'tool:help:list', 'icon-shuoming', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.tools.helpRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (63, 'menu.tools.ps', 60, 8, 'ps', 'tool/ps/index', '1', '0', 'M', '1', '1', 'tool:ps:list', 'icon-zhizuoliucheng', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (64, 'menu.tools.net', 60, 9, 'net', 'tool/net/index', '1', '0', 'M', '1', '1', 'tool:net:list', 'icon-zhizuoliucheng', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (65, 'menu.tools.ping', 60, 4, 'ping', 'tool/ping/index', '1', '0', 'M', '1', '1', 'tool:ping:index', 'icon-paixu', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (66, 'menu.tools.iperf', 60, 6, 'iperf', 'tool/iperf/index', '1', '0', 'M', '1', '1', 'tool:iperf:index', 'icon-paixu', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (100, 'menu.security.user', 1, 1, 'user', 'system/user/index', '1', '1', 'M', '1', '1', 'system:user:list', 'icon-wocanyu', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.security.userRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (101, 'menu.security.role', 1, 5, 'role', 'system/role/index', '1', '1', 'M', '1', '1', 'system:role:list', 'icon-anzhuo', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.security.roleRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (102, 'menu.security.roleUser', 1, 6, 'role/inline/auth-user/:roleId', 'system/role/auth-user', '1', '1', 'M', '0', '1', 'system:role:auth', '#', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.security.roleUserRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (103, 'menu.system.menu', 1, 18, 'menu', 'system/menu/index', '1', '1', 'M', '1', '1', 'system:menu:list', 'icon-wofaqi', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.menuRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (104, 'menu.security.dept', 1, 7, 'dept', 'system/dept/index', '1', '1', 'M', '1', '1', 'system:dept:list', 'icon-yuzhanghao1', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.security.deptRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (105, 'menu.security.post', 1, 8, 'post', 'system/post/index', '1', '1', 'M', '1', '1', 'system:post:list', 'icon-gonggaodayi', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.security.postRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (106, 'menu.system.dictType', 1, 20, 'dict', 'system/dict/index', '1', '1', 'M', '1', '1', 'system:dict:list', 'icon-tubiaoku', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.dictTypeRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (107, 'menu.system.dictData', 1, 21, 'dict/inline/data/:dictId', 'system/dict/data', '1', '1', 'M', '0', '1', 'system:dict:data', '#', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.dictDataRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (108, 'menu.system.paramSet', 1, 28, 'config', 'system/config/index', '1', '1', 'M', '1', '1', 'system:config:list', 'icon-gongnengjieshao', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.paramSetRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (109, 'menu.system.loginSource', 1, 2, 'login-source', 'system/login-source/index', '1', '1', 'M', '1', '1', 'system:loginSource:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (111, 'menu.system.systemLog', 1, 30, 'log', '', '1', '1', 'D', '1', '1', '', '#', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.systemLogRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (112, 'menu.system.systemInfo', 1, 14, 'system-info', 'monitor/system/info', '1', '1', 'M', '1', '1', 'monitor:system:info', 'icon-fuzhidaima', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.systemInfoRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (113, 'menu.system.cacheInfo', 1, 10, 'cache-info', 'monitor/cache/info', '1', '1', 'M', '1', '1', 'monitor:cache:info', 'icon-gongnengjieshao', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.cacheInfoRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (114, 'menu.system.cache', 1, 11, 'cache', 'monitor/cache/index', '1', '1', 'M', '1', '1', 'monitor:cache:list', 'icon-tubiaoku', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.cacheRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (115, 'menu.security.onlineUser', 1, 3, 'online', 'monitor/online/index', '1', '1', 'M', '1', '1', 'monitor:online:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.security.onlineUserRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (116, 'menu.system.job', 1, 25, 'job', 'monitor/job/index', '1', '1', 'M', '1', '1', 'monitor:job:list', 'icon-lishi', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.jobRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (117, 'menu.system.jobLog', 1, 26, 'job/inline/log/:jobId', 'monitor/job/log', '1', '1', 'M', '0', '1', 'monitor:job:log', '#', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.jobLogRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (500, 'menu.log.operat', 111, 25, 'operate', 'system/log/operate/index', '1', '1', 'M', '1', '1', 'system:log:operate:list', 'icon-fuzhidaima', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.log.operatRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (501, 'menu.log.login', 111, 26, 'login', 'system/log/login/index', '1', '1', 'M', '1', '1', 'system:log:login:list', 'icon-fuzhidaima', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.log.loginRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1000, 'menu.common.query', 100, 1, '', '', '1', '1', 'B', '1', '1', 'system:user:query', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1001, 'menu.common.add', 100, 2, '', '', '1', '1', 'B', '1', '1', 'system:user:add', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1002, 'menu.common.edit', 100, 3, '', '', '1', '1', 'B', '1', '1', 'system:user:edit', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1003, 'menu.common.delete', 100, 4, '', '', '1', '1', 'B', '1', '1', 'system:user:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1004, 'menu.common.export', 100, 5, '', '', '1', '1', 'B', '1', '1', 'system:user:export', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1005, 'menu.common.import', 100, 6, '', '', '1', '1', 'B', '1', '1', 'system:user:import', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1006, 'menu.common.resetPwd', 100, 7, '', '', '1', '1', 'B', '1', '1', 'system:user:resetPwd', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1007, 'menu.common.query', 101, 1, '', '', '1', '1', 'B', '1', '1', 'system:role:query', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1008, 'menu.common.add', 101, 2, '', '', '1', '1', 'B', '1', '1', 'system:role:add', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1009, 'menu.common.edit', 101, 3, '', '', '1', '1', 'B', '1', '1', 'system:role:edit', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1010, 'menu.common.delete', 101, 4, '', '', '1', '1', 'B', '1', '1', 'system:role:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1011, 'menu.common.export', 101, 5, '', '', '1', '1', 'B', '1', '1', 'system:role:export', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1012, 'menu.common.query', 103, 1, '', '', '1', '1', 'B', '1', '1', 'system:menu:query', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1013, 'menu.common.add', 103, 2, '', '', '1', '1', 'B', '1', '1', 'system:menu:add', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1014, 'menu.common.edit', 103, 3, '', '', '1', '1', 'B', '1', '1', 'system:menu:edit', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1015, 'menu.common.delete', 103, 4, '', '', '1', '1', 'B', '1', '1', 'system:menu:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1016, 'menu.common.query', 104, 1, '', '', '1', '1', 'B', '1', '1', 'system:dept:query', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1017, 'menu.common.add', 104, 2, '', '', '1', '1', 'B', '1', '1', 'system:dept:add', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1018, 'menu.common.edit', 104, 3, '', '', '1', '1', 'B', '1', '1', 'system:dept:edit', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1019, 'menu.common.delete', 104, 4, '', '', '1', '1', 'B', '1', '1', 'system:dept:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1020, 'menu.common.query', 105, 1, '', '', '1', '1', 'B', '1', '1', 'system:post:query', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1021, 'menu.common.add', 105, 2, '', '', '1', '1', 'B', '1', '1', 'system:post:add', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1022, 'menu.common.edit', 105, 3, '', '', '1', '1', 'B', '1', '1', 'system:post:edit', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1023, 'menu.common.delete', 105, 4, '', '', '1', '1', 'B', '1', '1', 'system:post:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1024, 'menu.common.export', 105, 5, '', '', '1', '1', 'B', '1', '1', 'system:post:export', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1025, 'menu.common.query', 106, 1, '#', '', '1', '1', 'B', '1', '1', 'system:dict:query', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1026, 'menu.common.add', 106, 2, '#', '', '1', '1', 'B', '1', '1', 'system:dict:add', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1027, 'menu.common.edit', 106, 3, '#', '', '1', '1', 'B', '1', '1', 'system:dict:edit', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1028, 'menu.common.delete', 106, 4, '#', '', '1', '1', 'B', '1', '1', 'system:dict:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1029, 'menu.common.export', 106, 5, '#', '', '1', '1', 'B', '1', '1', 'system:dict:export', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1030, 'menu.common.query', 108, 1, '#', '', '1', '1', 'B', '1', '1', 'system:config:query', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1031, 'menu.common.add', 108, 2, '#', '', '1', '1', 'B', '1', '1', 'system:config:add', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1032, 'menu.common.edit', 108, 3, '#', '', '1', '1', 'B', '1', '1', 'system:config:edit', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1033, 'menu.common.delete', 108, 4, '#', '', '1', '1', 'B', '1', '1', 'system:config:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1034, 'menu.common.export', 108, 5, '#', '', '1', '1', 'B', '1', '1', 'system:config:export', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1039, 'menu.common.query', 500, 1, '#', '', '1', '1', 'B', '1', '1', 'system:log:operate:query', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1040, 'menu.common.delete', 500, 2, '#', '', '1', '1', 'B', '1', '1', 'system:log:operate:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1041, 'menu.common.export', 500, 3, '#', '', '1', '1', 'B', '1', '1', 'system:log:operate:export', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1042, 'menu.common.query', 501, 1, '#', '', '1', '1', 'B', '1', '1', 'system:log:login:query', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1043, 'menu.common.delete', 501, 2, '#', '', '1', '1', 'B', '1', '1', 'system:log:login:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1044, 'menu.common.export', 501, 3, '#', '', '1', '1', 'B', '1', '1', 'system:log:login:export', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1045, 'menu.common.unlock', 501, 4, '#', '', '1', '1', 'B', '1', '1', 'system:log:login:unlock', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1046, 'menu.common.query', 114, 1, '#', '', '1', '1', 'B', '1', '1', 'monitor:cache:query', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1047, 'menu.common.delete', 114, 2, '#', '', '1', '1', 'B', '1', '1', 'monitor:cache:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1048, 'menu.common.query', 115, 1, '#', '', '1', '1', 'B', '1', '1', 'monitor:online:query', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1049, 'menu.forcedQuit.batch ', 115, 2, '#', '', '1', '1', 'B', '1', '1', 'monitor:online:batchLogout', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1050, 'menu.forcedQuit.single', 115, 3, '#', '', '1', '1', 'B', '1', '1', 'monitor:online:forceLogout', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1051, 'menu.common.query', 116, 1, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:query', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1052, 'menu.common.add', 116, 2, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:add', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1053, 'menu.common.edit', 116, 3, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:edit', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1054, 'menu.common.delete', 116, 4, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1055, 'menu.common.edit', 116, 5, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:changeStatus', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1056, 'menu.common.export', 116, 6, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:export', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1057, 'menu.common.query', 109, 1, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:query', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1058, 'menu.common.add', 109, 2, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:add', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1059, 'menu.common.edit', 109, 3, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:edit', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (1060, 'menu.common.delete', 109, 4, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2000, 'menu.neData.udmAuth', 5, 1, 'udm-auth', 'neData/udm-auth/index', '1', '1', 'M', '1', '1', 'udm:auth:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', ''); +INSERT INTO `sys_menu` VALUES (2001, 'menu.neData.udmSub', 5, 3, 'udm-sub', 'neData/udm-sub/index', '1', '1', 'M', '1', '1', 'udm:sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', ''); +INSERT INTO `sys_menu` VALUES (2002, 'menu.neData.udmVOIP', 5, 5, 'udm-voip', 'neData/udm-voip/index', '1', '0', 'M', '1', '1', 'udm:voip:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', ''); +INSERT INTO `sys_menu` VALUES (2003, 'menu.neData.udmVolte', 5, 7, 'udm-volte', 'neData/udm-volte/index', '1', '0', 'M', '1', '1', 'udm:volte:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'udm+ims'); +INSERT INTO `sys_menu` VALUES (2004, 'menu.neData.imsSub', 6, 10, 'ims-sub', 'neData/ims-sub/index', '1', '0', 'M', '1', '1', 'ims:sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'ims'); +INSERT INTO `sys_menu` VALUES (2005, 'menu.neData.smfSub', 6, 12, 'smf-sub', 'neData/smf-sub/index', '1', '0', 'M', '1', '1', 'smf:sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'smf'); +INSERT INTO `sys_menu` VALUES (2006, 'menu.neData.baseOnline', 6, 2, 'base-online', 'neData/base-online/index', '1', '0', 'M', '1', '1', 'nb:base-online:index', 'icon-paixu', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'amf,mme'); +INSERT INTO `sys_menu` VALUES (2007, 'menu.neData.baseStation', 6, 4, 'base-station', 'neData/base-station/index', '1', '0', 'M', '1', '1', 'nb:base-station:list', 'icon-fenxiang', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'amf,mme'); +INSERT INTO `sys_menu` VALUES (2008, 'menu.ueUser.n3iwf', 6, 18, 'n3iwf', 'neData/n3iwf-sub/index', '1', '0', 'M', '1', '1', 'n3iwf:sub:index', 'icon-paixu', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'n3iwf'); +INSERT INTO `sys_menu` VALUES (2009, 'menu.neData.pcfSub', 5, 24, 'pcf-sub', 'neData/pcf-sub/index', '1', '0', 'M', '1', '1', 'pcf:sub:index', 'icon-paixu', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'pcf'); +INSERT INTO `sys_menu` VALUES (2010, 'menu.neUser.nssf', 6, 19, 'nssf', 'neData/nssf-sub/index', '1', '0', 'M', '1', '1', 'nssf:sub:index', 'icon-daimayingyong', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'nssf'); +INSERT INTO `sys_menu` VALUES (2011, 'menu.neUser.nssfAmf', 6, 20, 'nssfAmf', 'neData/nssf-amf/index', '1', '0', 'M', '1', '1', 'nssf:sub:index', 'icon-paixu', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'nssf'); +INSERT INTO `sys_menu` VALUES (2083, 'menu.trace', 2083, 30, 'trace', '', '1', '0', 'D', '1', '1', '', 'icon-paixu', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.traceRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2084, 'menu.trace.task', 4, 40, 'task', 'ne/trace/task/index', '1', '0', 'M', '1', '1', 'traceManage:task:index', 'icon-chexiao', '0', 'system', 1728641403588, 'system', 1744453890548, 'menu.trace.taskRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2085, 'menu.trace.taskData', 4, 41, 'task/inline/data', 'ne/trace/task/data', '1', '0', 'M', '0', '1', 'traceManage:task:data', '#', '0', 'system', 1728641403588, 'system', 1744453921381, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2086, 'menu.trace.pcap', 60, 11, 'pcap', 'tool/pcap/index', '1', '1', 'M', '1', '1', 'traceManage:pcap:index', 'icon-soutubiao', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.trace.pcapRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2087, 'menu.monitor', 0, 2, 'monitor', '', '1', '0', 'D', '1', '1', '', 'icon-jinggao', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.faultRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2088, 'menu.fault.active', 2129, 1, 'active', 'alarm/active/index', '1', '1', 'M', '1', '1', 'faultManage:active-alarm:index', 'icon-wenjian', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.fault.activemRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2091, 'menu.log.mml', 2107, 30, 'log', 'mml/log/index', '1', '1', 'M', '1', '1', 'logManage:mml:index', 'icon-wocanyu', '0', 'system', 1728641403588, 'supervisor', 1756109559986, 'menu.log.mmlRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2092, 'menu.log.alarm', 2129, 40, 'log', 'alarm/log/index', '1', '0', 'M', '1', '1', 'logManage:alarm:index', 'icon-fuzhidaima', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.log.alarmRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2094, 'menu.log.forwarding', 2129, 41, 'forwarding', 'alarm/forwarding/index', '1', '0', 'M', '1', '1', 'logManage:forwarding:index', 'icon-huizhiguize', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.log.forwardingRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2096, 'menu.neData.backupData', 0, 30, 'backup-data', 'neData/backup-data/index', '1', '0', 'M', '1', '1', 'ne-data:backup-data:list', 'icon-wenjian', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2097, 'menu.fault.history', 2129, 2, 'history', 'alarm/history/index', '1', '1', 'M', '1', '1', 'faultManage/history-alarm/index', 'icon-huizhiguize', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.fault.historyRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2098, 'menu.fault.set', 2129, 100, 'set', 'alarm/set/index', '1', '0', 'M', '0', '1', 'faultManage/fault-setting/index', 'icon-gonggaodayi', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.fault.setRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2099, 'menu.perf', 0, 5, 'perfManage', '', '1', '0', 'D', '1', '1', '', 'icon-soutubiao', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.perfRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2100, 'menu.perf.task', 2099, 1, 'taskManage', 'perfManage/taskManage/index', '1', '0', 'M', '0', '1', 'perfManage:taskManage:index', 'icon-wofaqi', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.perf.taskRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2101, 'menu.perf.data', 2099, 2, 'perfData', 'perfManage/perfData/index', '1', '0', 'M', '0', '1', 'perfManage:perfData:index', 'icon-soutubiao', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.perf.dataRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2102, 'menu.perf.kpiOverView', 2099, 10, 'kpiOverView', 'perfManage/kpiOverView/index', '1', '0', 'M', '1', '1', 'perfManage:perfReport:index', 'icon-gonggaodayi', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2103, 'menu.perf.threshold', 2099, 4, 'perfThreshold', 'perfManage/perfThreshold/index', '1', '0', 'M', '0', '0', 'perfManage:perfThreshold:index', 'icon-zhuanrang', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.perf.thresholdRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2104, 'menu.perf.kpi', 2099, 20, 'goldTarget', 'perfManage/goldTarget/index', '1', '1', 'M', '1', '1', 'perfManage:goldTarget:index', 'icon-soutubiao', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.perf.kpiRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2105, 'menu.perf.customTarget', 2099, 99, 'customTarget', 'perfManage/customTarget/index', '1', '0', 'M', '1', '1', 'perfManage:customTarget:index', 'icon-fanhui1', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.perf.customTargetRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2106, 'menu.perf.kpiKeyTarget', 2099, 12, 'kpiKeyTarget', 'perfManage/kpiKeyTarget/index', '1', '0', 'M', '1', '1', 'perfManage:kpiKeyTarget:index', 'icon-fuzhichenggong', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2107, 'menu.mml', 0, 19, 'mml', '', '1', '0', 'D', '1', '1', '', 'icon-zhizuoliucheng', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.mmlRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2108, 'menu.mml.ne', 2107, 1, 'ne', 'mml/ne/index', '1', '1', 'M', '1', '1', 'mmlManage:neOperate:index', 'icon-huizhiguize', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.mml.neRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2109, 'menu.mml.udm', 2107, 2, 'udm', 'mml/udm/index', '1', '1', 'M', '1', '1', 'mmlManage:udmOperate:index', 'icon-gonggaodayi', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.mml.udmRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2110, 'menu.mml.set', 2107, 4, 'set', 'mml/set/index', '1', '0', 'M', '0', '0', 'mmlManage:mmlSet:index', 'icon-wofaqi', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.mml.setRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2111, 'menu.mml.omc', 2107, 3, 'omc', 'mml/omc/index', '1', '1', 'M', '0', '0', 'mmlManage:omcOperate:index', 'icon-huizhiguize', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.mml.omcRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2112, 'menu.dashboard.sgwcCDR', 2140, 12, 'sgwc-cdr', 'neData/sgwc-cdr/index', '1', '0', 'M', '1', '1', 'sgwc:cdr:index', 'icon-paixu', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'sgwc'); +INSERT INTO `sys_menu` VALUES (2114, 'menu.system.systemSet', 1, 60, 'setting', 'system/setting/index', '1', '1', 'M', '1', '1', 'system:setting:index', 'icon-piliang', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.systemSetRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2115, 'menu.system.systemResource', 1, 15, 'monitor', 'monitor/monitor/index', '1', '1', 'M', '1', '1', 'monitor:monitor:info', 'icon-soutubiao', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.systemResourceRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2116, 'menu.dashboard.smscCDR.content', 2157, 1, '', '', '1', '1', 'B', '1', '1', 'smsc:cdr:content', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'smsc'); +INSERT INTO `sys_menu` VALUES (2117, 'menu.common.delete', 2140, 1, '', '', '1', '1', 'B', '1', '1', 'cdr:ne:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2118, 'menu.dashboard.smfCDRByIMSI', 2140, 7, 'smf-cdr-imsi', 'neData/smf-cdr-imsi/index', '1', '0', 'M', '1', '1', 'smf:cdr:index', 'icon-gerenzhanghu', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'smf'); +INSERT INTO `sys_menu` VALUES (2119, 'Alarm Overview', 2129, 6, 'overview', 'alarm/overview/index', '1', '1', 'M', '1', '1', 'faultManage:active-overview:index', 'icon-wenjian', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2120, 'DashboardV1', 2131, 8, 'dashboardV1', 'monitor/overview/index', '1', '0', 'M', '1', '1', 'dashboard:overview:index', 'icon-paixu', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2121, 'menu.system.user.editRole', 100, 8, '', '', '1', '1', 'B', '1', '1', 'system:user:editRole', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2122, 'menu.system.setting.i18n', 2114, 1, '', '', '1', '1', 'B', '1', '1', 'system:setting:i18n', '#', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.setting.i18nRemark', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2123, 'menu.log.neFile', 4, 30, 'neFile', 'ne/neFile/index', '1', '0', 'M', '1', '1', 'ne:neFile:index', 'icon-tubiaohuizhi', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2124, 'menu.perf.kpiTitle', 2099, 22, 'kpi-title', 'perfManage/kpi-title/index', '1', '1', 'M', '1', '1', 'perfManage:kpi-title:index', 'icon-soutubiao', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2125, 'menu.neData.cbcCBE', 0, 20, 'cbc-cbe', 'neData/cbc-cbe/index', '1', '0', 'M', '1', '1', 'cbc:cbe:index', 'icon-tubiaoku', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2126, 'menu.monitor.topology', 2130, 10, 'topology', 'monitor/topology/index', '1', '0', 'M', '1', '1', 'monitor:topology:index', 'icon-fangda', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2127, 'menu.monitor.topologyBuild', 2130, 30, 'topologyBuild', 'monitor/topologyBuild/index', '1', '0', 'M', '1', '1', 'monitor:topologyBuild:index', 'icon-fangda', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2128, 'menu.monitor.topologyArchitecture', 2130, 20, 'topologyArchitecture', 'monitor/topologyArchitecture/index', '1', '0', 'M', '1', '1', 'monitor:topologyArchitecture:index', 'icon-soutubiao', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2129, 'menu.alarm', 0, 4, 'alarm', '', '1', '0', 'D', '1', '1', '', 'icon-jinggao', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2130, 'menu.topology', 2087, 10, 'topology', '', '1', '0', 'D', '1', '1', '', 'icon-anzhuo', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2131, 'menu.dashboard', 2087, 15, 'dashboard', '', '1', '0', 'D', '1', '1', '', 'icon-soutubiao', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2132, 'menu.dashboard.overview', 2131, 1, 'overview', 'monitor/overview2/index', '1', '0', 'M', '1', '1', 'dashboard:overview:index', 'icon-paixu', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2133, 'menu.dashboard.imsCDR', 2140, 3, 'ims-cdr', 'neData/ims-cdr/index', '1', '0', 'M', '1', '1', 'ims:cdr:index', 'icon-paixu', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'ims'); +INSERT INTO `sys_menu` VALUES (2135, 'menu.ne.neHost', 4, 15, 'neHost', 'ne/neHost/index', '1', '1', 'M', '1', '0', 'ne:neHost:list', 'icon-fuzhidaima', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2136, 'menu.ne.neHostCommand', 4, 18, 'neHostCommand', 'ne/neHostCommand/index', '1', '0', 'M', '1', '0', 'ne:neHostCommand:list', 'icon-fuzhidaima', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2137, 'menu.ne.neInfo', 4, 10, 'neInfo', 'ne/neInfo/index', '1', '0', 'M', '1', '1', 'ne:neInfo:list', 'icon-fuzhidaima', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2138, 'menu.dashboard.amfUE', 2141, 1, 'amf-ue', 'neData/amf-ue/index', '1', '0', 'M', '1', '1', 'amf:ue:index', 'icon-paixu', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'amf'); +INSERT INTO `sys_menu` VALUES (2139, 'menu.perf.kpiIMSOverview', 2099, 14, 'dashboard', 'perfManage/overview/index', '1', '0', 'M', '1', '1', 'ims:perfManage:dashboard:index', 'icon-fuzhichenggong', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'ims'); +INSERT INTO `sys_menu` VALUES (2140, 'menu.monitor.cdr', 6, 25, 'cdr', '', '1', '0', 'D', '1', '1', '', 'icon-tubiaoku', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2141, 'menu.monitor.event', 6, 26, 'event', '', '1', '0', 'D', '1', '1', '', 'icon-gengduo', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2142, 'menu.ne.neQuickSetup', 4, 50, 'neQuickSetup', 'ne/neQuickSetup/index', '1', '1', 'M', '1', '1', 'ne:neQuickSetup:list', 'icon-wofaqi', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2143, 'menu.ne.neLicense', 4, 20, 'neLicense', 'ne/neLicense/index', '1', '0', 'M', '1', '1', 'ne:neLicense:list', 'icon-fuzhidaima', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2144, 'menu.ne.neSoftware', 4, 24, 'neSoftware', 'ne/neSoftware/index', '1', '0', 'M', '1', '1', 'ne:neSoftware:list', 'icon-fuzhidaima', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2145, 'menu.ne.neVersion', 4, 22, 'neVersion', 'ne/neVersion/index', '1', '0', 'M', '1', '1', 'ne:neVersion:list', 'icon-fuzhidaima', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2146, 'menu.ne.neConfig', 4, 28, 'neConfig', 'ne/neConfig/index', '1', '0', 'M', '1', '1', 'ne:neConfig:list', 'icon-wofaqi', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2147, 'menu.fault.event', 2129, 3, 'event', 'alarm/event/index', '1', '0', 'M', '1', '1', 'faultManage:event:index', 'icon-tubiaoku', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2148, 'menu.dashboard.smfCDR', 2140, 6, 'smf-cdr', 'neData/smf-cdr/index', '1', '0', 'M', '1', '1', 'smf:cdr:index', 'icon-paixu', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'smf'); +INSERT INTO `sys_menu` VALUES (2149, 'menu.dashboard.mmeUE', 2141, 5, 'mme-ue', 'neData/mme-ue/index', '1', '0', 'M', '1', '1', 'mme:ue:index', 'icon-paixu', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'mme'); +INSERT INTO `sys_menu` VALUES (2150, 'menu.system.user.editPost', 100, 9, '', '', '1', '1', 'B', '1', '1', 'system:user:editPost', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2151, 'menu.system.setting.doc', 2114, 2, '', '', '1', '1', 'B', '1', '1', 'system:setting:doc', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2152, 'menu.system.setting.official', 2114, 3, '', '', '1', '1', 'B', '1', '1', 'system:setting:official', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2153, 'menu.system.setting.lock', 2114, 4, '', '', '1', '1', 'B', '1', '1', 'system:setting:lock', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2154, 'menu.ne.neConfigBackup', 4, 29, 'neConfigBackup', 'ne/neConfigBackup/index', '1', '0', 'M', '1', '1', 'ne:neConfigBackup:list', 'icon-fuzhidaima', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2155, 'menu.common.delete', 2154, 1, '#', '', '1', '1', 'B', '1', '1', 'ne:neConfigBackup:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2156, 'menu.common.edit', 2154, 2, '#', '', '1', '1', 'B', '1', '1', 'ne:neConfigBackup:edit', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2157, 'menu.dashboard.smscCDR', 2140, 9, 'smsc-cdr', 'neData/smsc-cdr/index', '1', '0', 'M', '1', '1', 'smsc:cdr:index', 'icon-paixu', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '1', 'smsc'); +INSERT INTO `sys_menu` VALUES (2158, 'menu.trace.pcapFile', 60, 12, 'pcap/inline/file', 'tool/pcap/file', '1', '0', 'M', '0', '1', 'traceManage:pcap:index', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2160, 'menu.perf.kpiCReport', 2099, 100, 'kpiCReport', 'perfManage/kpiCReport/index', '1', '0', 'M', '1', '1', 'perfManage:kpiCReport:index', 'icon-tubiaoku', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2161, 'menu.trace.taskHLR', 4, 45, 'taskHLR', 'ne/trace/task-hlr/index', '1', '0', 'M', '0', '1', 'traceManage:taskHLR:index', 'icon-chexiao', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2162, 'menu.trace.taskAnalyze', 4, 42, 'task/inline/analyze', 'ne/trace/task/analyze', '1', '0', 'M', '0', '1', 'traceManage:task:analyze', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2163, 'menu.trace.tshark', 60, 14, 'tshark', 'tool/tshark/index', '1', '0', 'M', '1', '1', 'traceManage:tshark:index', 'icon-gengduo', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2164, 'menu.trace.wireshark', 60, 16, 'wireshark', 'tool/wireshark/index', '1', '0', 'M', '1', '1', 'traceManage:wireshark:index', 'icon-gengduo', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); +INSERT INTO `sys_menu` VALUES (2165, 'menu.ne.neOverview', 4, 1, 'neOverview', 'ne/neOverview/index', '1', '0', 'M', '1', '1', 'configManage:neOverview:index', 'icon-tubiaoku', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.ne.neOverviewRemark', '0', '0', ''); INSERT INTO `sys_menu` VALUES (2166, 'menu.dashboard.overview.smfUeNum', 2132, 4, '', '', '1', '1', 'B', '1', '1', 'dashboard:overview:smfUeNum', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); INSERT INTO `sys_menu` VALUES (2167, 'menu.dashboard.overview.imsUeNum', 2132, 2, '', '', '1', '1', 'B', '1', '1', 'dashboard:overview:imsUeNum', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); INSERT INTO `sys_menu` VALUES (2168, 'menu.dashboard.overview.gnbBase', 2132, 6, '', '', '1', '1', 'B', '1', '1', 'dashboard:overview:gnbBase', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '', '0', '0', ''); diff --git a/build/database/std/install/udm_auth.sql b/build/database/std/install/udm_auth.sql index 200d04ee..9aa12cfa 100644 --- a/build/database/std/install/udm_auth.sql +++ b/build/database/std/install/udm_auth.sql @@ -13,6 +13,7 @@ CREATE TABLE `udm_auth` ( `ki` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'ki', `algo_index` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'algoIndex', `opc` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'OPC', + `create_time` bigint(20) DEFAULT 0 COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `uk_udm_auth_imsi_ne` (`ne_uid`,`imsi`) USING BTREE COMMENT '唯一主键-IMSI_网元ID', KEY `idx_udm_auth_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型' diff --git a/src/modules/ne/controller/ne_info.go b/src/modules/ne/controller/ne_info.go index f101384b..c8203eee 100644 --- a/src/modules/ne/controller/ne_info.go +++ b/src/modules/ne/controller/ne_info.go @@ -79,7 +79,7 @@ func (s NeInfoController) State(c *gin.Context) { "neUid": neInfo.NeUID, "neType": neInfo.NeType, "neName": neInfo.NeName, - "neIP": neInfo.IPAddr, + "ipAddr": neInfo.IPAddr, } } neStateCacheMap.Store(neKey, resDataCache) @@ -439,7 +439,7 @@ func (s NeInfoController) Remove(c *gin.Context) { var query struct { CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识 NeUID string `form:"neUid" binding:"required"` // 网元唯一标识 - ID int64 `form:"id" binding:"required"` // 记录ID + ID string `form:"id" binding:"required"` // 记录ID 批量多个逗号分隔 } if err := c.ShouldBindQuery(&query); err != nil { errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) @@ -447,7 +447,15 @@ func (s NeInfoController) Remove(c *gin.Context) { return } - rows, err := s.neInfoService.DeleteById(query.ID, query.CoreUID, query.NeUID) + // 处理字符转id数组后去重 + uniqueIDs := parse.RemoveDuplicatesToArray(query.ID, ",") + // 转换成int64数组类型 + ids := make([]int64, 0) + for _, v := range uniqueIDs { + ids = append(ids, parse.Number(v)) + } + + rows, err := s.neInfoService.DeleteByIds(ids, query.CoreUID, query.NeUID) if err != nil { c.JSON(200, resp.ErrMsg(i18n.TKey(language, err.Error()))) return diff --git a/src/modules/ne/fetch_link/ne_state.go b/src/modules/ne/fetch_link/ne_state.go index c98e386b..96178be0 100644 --- a/src/modules/ne/fetch_link/ne_state.go +++ b/src/modules/ne/fetch_link/ne_state.go @@ -45,7 +45,7 @@ func NeState(neInfo model.NeInfo) (map[string]any, error) { "neUid": neInfo.NeUID, "neType": neInfo.NeType, "neName": neInfo.NeName, - "neIP": neInfo.IPAddr, + "ipAddr": neInfo.IPAddr, "refreshTime": time.Now().UnixMilli(), // 获取时间 "standby": resData["standby"], // 是否备用服务 "version": resData["version"], diff --git a/src/modules/ne/repository/ne_info.go b/src/modules/ne/repository/ne_info.go index 37096906..2e1f4d11 100644 --- a/src/modules/ne/repository/ne_info.go +++ b/src/modules/ne/repository/ne_info.go @@ -93,7 +93,7 @@ func (r NeInfo) SelectByPage(query map[string]string) ([]model.NeInfo, int64) { // 查询数据分页 pageNum, pageSize := db.PageNumSize(query["pageNum"], query["pageSize"]) tx = tx.Limit(pageSize).Offset(pageSize * pageNum) - err := tx.Order("ne_type asc").Find(&rows).Error + err := tx.Find(&rows).Error if err != nil { logger.Errorf("query find err => %v", err.Error()) return rows, total diff --git a/src/modules/ne/service/ne_info.go b/src/modules/ne/service/ne_info.go index b941fbe8..b0b11ec8 100644 --- a/src/modules/ne/service/ne_info.go +++ b/src/modules/ne/service/ne_info.go @@ -289,8 +289,8 @@ func (r NeInfo) Insert(neInfo model.NeInfo) int64 { CreateBy: neInfo.CreateBy, } if v, ok := serverState["version"]; ok && v != nil { - neVersion.Name = "-" - neVersion.Path = "-" + // neVersion.Name = "-" + // neVersion.Path = "-" neVersion.Version = fmt.Sprint(v) } NewNeVersion.Insert(neVersion) @@ -366,8 +366,8 @@ func (r NeInfo) Update(neInfo model.NeInfo) int64 { neVersion.NeType = neInfo.NeType } if v, ok := serverState["version"]; ok && v != neVersion.Version { - neVersion.Name = "-" - neVersion.Path = "-" + // neVersion.Name = "-" + // neVersion.Path = "-" neVersion.Version = fmt.Sprint(v) } neVersion.UpdateBy = neInfo.UpdateBy @@ -403,10 +403,10 @@ func (r NeInfo) Update(neInfo model.NeInfo) int64 { } // DeleteByIds 批量删除信息 -func (r NeInfo) DeleteById(id int64, coreUid, neUid string) (int64, error) { +func (r NeInfo) DeleteByIds(ids []int64, coreUid, neUid string) (int64, error) { // 检查是否存在 - arr := r.neInfoRepository.SelectByIds([]int64{id}) - if len(arr) != 1 { + arr := r.neInfoRepository.SelectByIds(ids) + if len(arr) != len(ids) { return 0, fmt.Errorf("not match id") } @@ -438,7 +438,7 @@ func (r NeInfo) DeleteById(id int64, coreUid, neUid string) (int64, error) { // 缓存信息删除 redis.Del("", fmt.Sprintf("%s:%s:%s:%s", constants.CACHE_NE_INFO, v.CoreUID, v.NeType, v.NeUID)) } - rows := r.neInfoRepository.DeleteByIds([]int64{id}) + rows := r.neInfoRepository.DeleteByIds(ids) return rows, nil } diff --git a/src/modules/ne/service/ne_version.go b/src/modules/ne/service/ne_version.go index cea09d7c..33676a61 100644 --- a/src/modules/ne/service/ne_version.go +++ b/src/modules/ne/service/ne_version.go @@ -64,12 +64,12 @@ func (r NeVersion) checkNeVersion(arr *[]model.NeVersion) { continue } if v, ok := result["version"]; ok && v != nil { - ver := v.(string) - if ver == item.Version { + ver, ok := v.(string) + if !ok || ver == item.Version { continue } - item.Name = "-" - item.Path = "-" + // item.Name = "-" + // item.Path = "-" item.Version = ver } if item.NeType != neInfo.NeType { diff --git a/src/modules/ne_data/controller/amf.go b/src/modules/ne_data/controller/amf.go index 548410a1..31f7175b 100644 --- a/src/modules/ne_data/controller/amf.go +++ b/src/modules/ne_data/controller/amf.go @@ -210,7 +210,7 @@ func (s *AMFController) NbInfoList(c *gin.Context) { // 接入基站状态信息列表 // -// GET /nb/list-cfg +// GET /nb/addrs // // @Tags ne_data/amf // @Accept json @@ -220,7 +220,7 @@ func (s *AMFController) NbInfoList(c *gin.Context) { // @Security TokenAuth // @Summary Access to the base station status information list // @Description Access to the base station status information list -// @Router /neData/amf/nb/list-cfg [get] +// @Router /neData/amf/nb/addrs [get] func (s *AMFController) NbStateList(c *gin.Context) { language := reqctx.AcceptLanguage(c) var query struct { diff --git a/src/modules/ne_data/controller/ims.go b/src/modules/ne_data/controller/ims.go index d9d73d68..b0d7bfa7 100644 --- a/src/modules/ne_data/controller/ims.go +++ b/src/modules/ne_data/controller/ims.go @@ -17,16 +17,18 @@ import ( // 实例化控制层 IMSController 结构体 var NewIMS = &IMSController{ - neInfoService: neService.NewNeInfo, - cdrEventService: neDataService.NewCDREvent, + neInfoService: neService.NewNeInfo, + cdrEventService: neDataService.NewCDREvent, + kpiReportService: neDataService.NewKpiReport, } // 网元IMS // // PATH /ims type IMSController struct { - neInfoService *neService.NeInfo // 网元信息服务 - cdrEventService *neDataService.CDREvent // CDR会话事件服务 + neInfoService *neService.NeInfo // 网元信息服务 + cdrEventService *neDataService.CDREvent // CDR会话事件服务 + kpiReportService *neDataService.KpiReport // 统计信息服务 } // CDR会话列表 @@ -253,3 +255,45 @@ func (s *IMSController) UeSessionList(c *gin.Context) { c.JSON(200, resp.OkData(data)) } + +// KPI 忙时统计 +// +// GET /kpi/busy-hour +// +// @Tags network_data/ims +// @Accept json +// @Produce json +// @Param neId query string true "NE ID" default(001) +// @Param timestamp query int64 false "timestamp" +// @Success 200 {object} object "Response Results" +// @Security TokenAuth +// @Summary Busy hour statistics +// @Description Busy hour statistics +// @Router /neData/ims/kpi/busy-hour [get] +func (s IMSController) KPIBusyHour(c *gin.Context) { + language := reqctx.AcceptLanguage(c) + var query struct { + CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识 + NeUID string `form:"neUid" binding:"required"` // 网元唯一标识 + Timestamp int64 `form:"timestamp" binding:"required"` // 时间戳毫秒 年月日返回每小时的总和 年月日时返回该小时的总和 + } + if err := c.ShouldBindQuery(&query); err != nil { + errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) + c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs)) + return + } + if query.Timestamp < 1e12 || query.Timestamp > 1e13 { + c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "timestamp format is ms")) + return + } + + // 查询网元获取IP + neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID) + if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID { + c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) + return + } + + data := s.kpiReportService.IMSBusyHour(neInfo.CoreUID, neInfo.NeUID, query.Timestamp) + c.JSON(200, resp.OkData(data)) +} diff --git a/src/modules/ne_data/controller/mme.go b/src/modules/ne_data/controller/mme.go index 9738f674..8205ef2b 100644 --- a/src/modules/ne_data/controller/mme.go +++ b/src/modules/ne_data/controller/mme.go @@ -210,7 +210,7 @@ func (s *MMEController) NbInfoList(c *gin.Context) { // 接入基站状态信息列表 // -// GET /nb/list-cfg +// GET /nb/addrs // // @Tags ne_data/mme // @Accept json @@ -220,7 +220,7 @@ func (s *MMEController) NbInfoList(c *gin.Context) { // @Security TokenAuth // @Summary Access to the base station status information list // @Description Access to the base station status information list -// @Router /neData/mme/nb/list-cfg [get] +// @Router /neData/mme/nb/addrs [get] func (s *MMEController) NbStateList(c *gin.Context) { language := reqctx.AcceptLanguage(c) var query struct { diff --git a/src/modules/ne_data/controller/udm_auth.go b/src/modules/ne_data/controller/udm_auth.go index 4dc43199..fa649727 100644 --- a/src/modules/ne_data/controller/udm_auth.go +++ b/src/modules/ne_data/controller/udm_auth.go @@ -81,8 +81,8 @@ func (s *UDMAuthController) ResetData(c *gin.Context) { // @Router /ne/link/udm/auth/list [get] func (s *UDMAuthController) List(c *gin.Context) { query := reqctx.QueryMap(c) - total, rows := s.udmAuthService.FindByPage(query) - c.JSON(200, resp.OkData(map[string]any{"total": total, "rows": rows})) + rows, total := s.udmAuthService.FindByPage(query) + c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total})) } // UDM鉴权用户信息 @@ -251,8 +251,8 @@ func (s *UDMAuthController) Edit(c *gin.Context) { c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs)) return } - if body.IMSI == "" { - c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: imsi is empty")) + if len(body.IMSI) != 15 { + c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: IMSI length is not 15 bits")) return } @@ -306,7 +306,7 @@ func (s *UDMAuthController) Remove(c *gin.Context) { CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识 NeUID string `form:"neUid" binding:"required"` // 网元唯一标识 IMSI string `form:"imsi" binding:"required"` // IMSi - Num int64 `form:"num"` // 批量数量 + Num int64 `form:"num"` // 数量 0可拼接imsi多删除 大于1为批量 } if err := c.ShouldBindQuery(&query); err != nil { errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) @@ -397,7 +397,7 @@ func (s *UDMAuthController) Export(c *gin.Context) { } fileType := c.Query("type") if !(fileType == "csv" || fileType == "txt") { - c.JSON(200, resp.ErrMsg(i18n.TKey(language, "ne.udm.errImportUserSubFileFormat"))) + c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "file type error, only support csv,txt")) return } diff --git a/src/modules/ne_data/controller/udm_sub.go b/src/modules/ne_data/controller/udm_sub.go index 4af9a5f2..2f7e1743 100644 --- a/src/modules/ne_data/controller/udm_sub.go +++ b/src/modules/ne_data/controller/udm_sub.go @@ -81,8 +81,8 @@ func (s *UDMSubController) ResetData(c *gin.Context) { // @Router /ne/link/udm/sub/list [get] func (s *UDMSubController) List(c *gin.Context) { query := reqctx.QueryMap(c) - total, rows := s.udmSubService.FindByPage(query) - c.JSON(200, resp.OkData(map[string]any{"total": total, "rows": rows})) + rows, total := s.udmSubService.FindByPage(query) + c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total})) } // UDM签约用户信息 @@ -247,12 +247,6 @@ func (s *UDMSubController) Add(c *gin.Context) { // @Router /ne/link/udm/sub [put] func (s *UDMSubController) Edit(c *gin.Context) { language := reqctx.AcceptLanguage(c) - neId := c.Param("neId") - if neId == "" { - c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty")) - return - } - var body model.UDMSubUser if err := c.ShouldBindBodyWithJSON(&body); err != nil { errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) @@ -350,6 +344,7 @@ func (s *UDMSubController) Remove(c *gin.Context) { s.udmSubService.LoadData(neInfo.CoreUID, neInfo.NeUID, query.IMSI, query.Num, "-(Deleted)-") } c.JSON(200, resp.OkData(data)) + return } // 处理字符转id数组后去重 @@ -405,7 +400,7 @@ func (s *UDMSubController) Export(c *gin.Context) { } fileType := c.Query("type") if !(fileType == "csv" || fileType == "txt") { - c.JSON(200, resp.ErrMsg(i18n.TKey(language, "ne.udm.errImportUserSubFileFormat"))) + c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "file type error, only support csv,txt")) return } diff --git a/src/modules/ne_data/controller/udm_voip.go b/src/modules/ne_data/controller/udm_voip.go index b789ecb8..5c948385 100644 --- a/src/modules/ne_data/controller/udm_voip.go +++ b/src/modules/ne_data/controller/udm_voip.go @@ -82,8 +82,8 @@ func (s *UDMVOIPController) ResetData(c *gin.Context) { // @Router /ne/link/udm/voip/list [get] func (s *UDMVOIPController) List(c *gin.Context) { query := reqctx.QueryMap(c) - total, rows := s.udmVOIPService.FindByPage(query) - c.JSON(200, resp.OkData(map[string]any{"total": total, "rows": rows})) + rows, total := s.udmVOIPService.FindByPage(query) + c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total})) } // UDMVOIP用户信息 @@ -336,14 +336,14 @@ func (s *UDMVOIPController) Remove(c *gin.Context) { func (s *UDMVOIPController) Export(c *gin.Context) { language := reqctx.AcceptLanguage(c) // 查询结果,根据查询条件结果,单页最大值限制 - neId := c.Query("neId") - fileType := c.Query("type") - if neId == "" { - c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty")) + neUid := c.Query("neUid") + if c.Query("coreUid") == "" || neUid == "" { + c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: coreUid or neUid is empty")) return } + fileType := c.Query("type") if !(fileType == "csv" || fileType == "txt") { - c.JSON(200, resp.ErrMsg("file type error, only support csv,txt")) + c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "file type error, only support csv,txt")) return } @@ -363,7 +363,7 @@ func (s *UDMVOIPController) Export(c *gin.Context) { } // 文件名 - fileName := fmt.Sprintf("udm_voip_user_export_%s_%d.%s", neId, time.Now().UnixMilli(), fileType) + fileName := fmt.Sprintf("udm_voip_user_export_%s_%d.%s", neUid, time.Now().UnixMilli(), fileType) filePath := filepath.Join(file.ParseUploadFileDir(constants.UPLOAD_EXPORT), fileName) if fileType == "csv" { diff --git a/src/modules/ne_data/controller/udm_volte_ims.go b/src/modules/ne_data/controller/udm_volte_ims.go index 7b2f0159..9910df89 100644 --- a/src/modules/ne_data/controller/udm_volte_ims.go +++ b/src/modules/ne_data/controller/udm_volte_ims.go @@ -81,8 +81,8 @@ func (s *UDMVolteIMSController) ResetData(c *gin.Context) { // @Router /ne/link/udm/volte-ims/list [get] func (s *UDMVolteIMSController) List(c *gin.Context) { query := reqctx.QueryMap(c) - total, rows := s.udmVolteIMSService.FindByPage(query) - c.JSON(200, resp.OkData(map[string]any{"total": total, "rows": rows})) + rows, total := s.udmVolteIMSService.FindByPage(query) + c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total})) } // UDMVolteIMS用户信息 @@ -260,12 +260,12 @@ func (s *UDMVolteIMSController) Add(c *gin.Context) { func (s *UDMVolteIMSController) Remove(c *gin.Context) { language := reqctx.AcceptLanguage(c) var query struct { - CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识 - NeUID string `form:"neUid" binding:"required"` // 网元唯一标识 - IMSI string `form:"imsi" binding:"required"` // IMSi, 带数量时为批量 - MSISDN string `form:"msisdn" binding:"required"` // MSISDN, 带数量时为批量 - Volte string `form:"volte" binding:"required,oneof=0 1"` // volte - Num int64 `form:"num"` // 批量数量 + CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识 + NeUID string `form:"neUid" binding:"required"` // 网元唯一标识 + IMSI string `form:"imsi" binding:"required"` // IMSi, 带数量时为批量 + MSISDN string `form:"msisdn" binding:"required"` // MSISDN, 带数量时为批量 + Tag string `form:"tag" binding:"required,oneof=0 1"` // tag + Num int64 `form:"num"` // 批量数量 } if err := c.ShouldBindQuery(&query); err != nil { errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) @@ -291,10 +291,10 @@ func (s *UDMVolteIMSController) Remove(c *gin.Context) { if query.Num > 1 { // 发送MML cmd := "" - if query.Volte == "0" { + if query.Tag == "0" { cmd = fmt.Sprintf("bde imsuser:start_msisdn=%s,sub_num=%d,volte=0", query.MSISDN, query.Num) } - if query.Volte == "1" { + if query.Tag == "1" { cmd = fmt.Sprintf("bde imsuser:start_imsi=%s,start_msisdn=%s,sub_num=%d,volte=1", query.IMSI, query.MSISDN, query.Num) } data, err := telnet.ConvertToStr(telnetClient, cmd) @@ -312,7 +312,7 @@ func (s *UDMVolteIMSController) Remove(c *gin.Context) { } // 发送MML - cmd := fmt.Sprintf("del imsuser:imsi=%s,msisdn=%s,volte=%s", query.IMSI, query.MSISDN, query.Volte) + cmd := fmt.Sprintf("del imsuser:imsi=%s,msisdn=%s,volte=%s", query.IMSI, query.MSISDN, query.Tag) data, err := telnet.ConvertToStr(telnetClient, cmd) if err != nil { c.JSON(200, resp.ErrMsg(err.Error())) @@ -352,7 +352,7 @@ func (s *UDMVolteIMSController) Export(c *gin.Context) { } fileType := c.Query("type") if !(fileType == "csv" || fileType == "txt") { - c.JSON(200, resp.ErrMsg(i18n.TKey(language, "ne.udm.errImportUserSubFileFormat"))) + c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "file type error, only support csv,txt")) return } diff --git a/src/modules/ne_data/controller/upf.go b/src/modules/ne_data/controller/upf.go index 40e81a4c..c48cef03 100644 --- a/src/modules/ne_data/controller/upf.go +++ b/src/modules/ne_data/controller/upf.go @@ -27,9 +27,9 @@ type UPFController struct { } // 总流量数 N3上行 N6下行 -// 单位 比特(bit) +// 单位 字节(Byte) // -// GET /flow-total +// GET /kpi/flow-total // // @Tags network_data/upf // @Accept json @@ -40,8 +40,8 @@ type UPFController struct { // @Security TokenAuth // @Summary Total number of flows N3 upstream N6 downstream // @Description Total number of flows N3 upstream N6 downstream -// @Router /ne/link/upf/flow-total [get] -func (s UPFController) FlowTotal(c *gin.Context) { +// @Router /ne/link/upf/kpi/flow-total [get] +func (s UPFController) KPIFlowTotal(c *gin.Context) { language := reqctx.AcceptLanguage(c) var querys struct { CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识 diff --git a/src/modules/ne_data/model/udm_auth.go b/src/modules/ne_data/model/udm_auth.go index 7f8e3308..fe0ded45 100644 --- a/src/modules/ne_data/model/udm_auth.go +++ b/src/modules/ne_data/model/udm_auth.go @@ -2,15 +2,16 @@ package model // UDMAuthUser UDM鉴权用户 udm_auth type UDMAuthUser struct { - ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键 - CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识 - NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识 - NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型 - IMSI string `json:"imsi" gorm:"column:imsi"` // SIM卡/USIM卡ID - Amf string `json:"amf" gorm:"column:amf"` // AMF - Ki string `json:"ki" gorm:"column:ki"` // ki - AlgoIndex string `json:"algoIndex" gorm:"column:algo_index"` // algoIndex - Opc string `json:"opc" gorm:"column:opc"` // OPC + ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键 + CoreUID string `json:"coreUid" gorm:"column:core_uid" binding:"required"` // 核心网唯一标识 + NeUID string `json:"neUid" gorm:"column:ne_uid" binding:"required"` // 网元唯一标识 + NeType string `json:"neType" gorm:"column:ne_type" binding:"required,oneof=UDM"` // 网元类型 + IMSI string `json:"imsi" gorm:"column:imsi"` // SIM卡/USIM卡ID + Amf string `json:"amf" gorm:"column:amf"` // AMF + Ki string `json:"ki" gorm:"column:ki"` // ki + AlgoIndex string `json:"algoIndex" gorm:"column:algo_index"` // algoIndex + Opc string `json:"opc" gorm:"column:opc"` // OPC + CreateTime int64 `json:"createTime" gorm:"column:create_time"` // 创建时间 } // TableName 表名称 diff --git a/src/modules/ne_data/model/udm_sub.go b/src/modules/ne_data/model/udm_sub.go index 08165d56..4febbe63 100644 --- a/src/modules/ne_data/model/udm_sub.go +++ b/src/modules/ne_data/model/udm_sub.go @@ -2,12 +2,12 @@ package model // UDMSubUser UDM签约用户 udm_sub type UDMSubUser struct { - ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键 - CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识 - NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识 - NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型 - IMSI string `json:"imsi" gorm:"column:imsi"` // SIM卡/USIM卡ID - MSISDN string `json:"msisdn" gorm:"column:msisdn"` // 用户电话号码 + ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键 + CoreUID string `json:"coreUid" gorm:"column:core_uid" binding:"required"` // 核心网唯一标识 + NeUID string `json:"neUid" gorm:"column:ne_uid" binding:"required"` // 网元唯一标识 + NeType string `json:"neType" gorm:"column:ne_type" binding:"required,oneof=UDM"` // 网元类型 + IMSI string `json:"imsi" gorm:"column:imsi"` // SIM卡/USIM卡ID + MSISDN string `json:"msisdn" gorm:"column:msisdn"` // 用户电话号码 AmDat string `json:"amDat" gorm:"column:am_dat"` // AmData UeAmbrTpl string `json:"ambr" gorm:"column:ambr"` // AmData SubUeAMBRTemp diff --git a/src/modules/ne_data/model/udm_voip.go b/src/modules/ne_data/model/udm_voip.go index c25eb9cd..4fcfb8cd 100644 --- a/src/modules/ne_data/model/udm_voip.go +++ b/src/modules/ne_data/model/udm_voip.go @@ -2,10 +2,10 @@ package model // UDMVOIPUser UDMVOIP用户 udm_voip type UDMVOIPUser struct { - ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键 - CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识 - NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识 - NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型 + ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键 + CoreUID string `json:"coreUid" gorm:"column:core_uid" binding:"required"` // 核心网唯一标识 + NeUID string `json:"neUid" gorm:"column:ne_uid" binding:"required"` // 网元唯一标识 + NeType string `json:"neType" gorm:"column:ne_type" binding:"required,oneof=UDM"` // 网元类型 UserName string `json:"username" gorm:"column:username"` // 用户名 Password string `json:"password" gorm:"column:password"` // 密码 diff --git a/src/modules/ne_data/model/udm_volte_ims.go b/src/modules/ne_data/model/udm_volte_ims.go index 340e7bde..f566392b 100644 --- a/src/modules/ne_data/model/udm_volte_ims.go +++ b/src/modules/ne_data/model/udm_volte_ims.go @@ -2,12 +2,12 @@ package model // UDMVolteIMSUser UDMVolteIMS用户 udm_volte_ims type UDMVolteIMSUser struct { - ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键 - CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识 - NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识 - NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型 - IMSI string `json:"imsi" gorm:"column:imsi"` // SIM卡/USIM卡ID - MSISDN string `json:"msisdn" gorm:"column:msisdn"` // 用户电话号码 + ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键 + CoreUID string `json:"coreUid" gorm:"column:core_uid" binding:"required"` // 核心网唯一标识 + NeUID string `json:"neUid" gorm:"column:ne_uid" binding:"required"` // 网元唯一标识 + NeType string `json:"neType" gorm:"column:ne_type" binding:"required,oneof=UDM"` // 网元类型 + IMSI string `json:"imsi" gorm:"column:imsi"` // SIM卡/USIM卡ID + MSISDN string `json:"msisdn" gorm:"column:msisdn"` // 用户电话号码 Tag string `json:"tag" gorm:"column:tag"` // 0=VoIP, 1=VoLTE VNI string `json:"vni" gorm:"column:vni"` // VNI diff --git a/src/modules/ne_data/ne_data.go b/src/modules/ne_data/ne_data.go index 0276001e..43585a5b 100644 --- a/src/modules/ne_data/ne_data.go +++ b/src/modules/ne_data/ne_data.go @@ -203,6 +203,10 @@ func Setup(router *gin.Engine) { middleware.AuthorizeUser(nil), controller.NewIMS.UeSessionList, ) + imsGroup.GET("/kpi/busy-hour", + middleware.AuthorizeUser(nil), + controller.NewIMS.KPIBusyHour, + ) } // 网元SMSC @@ -281,9 +285,9 @@ func Setup(router *gin.Engine) { // 网元UPF upfGroup := neDataGroup.Group("/upf") { - upfGroup.GET("/flow-total", + upfGroup.GET("/kpi/flow-total", middleware.AuthorizeUser(nil), - controller.NewUPF.FlowTotal, + controller.NewUPF.KPIFlowTotal, ) } diff --git a/src/modules/ne_data/repository/kpi_report.go b/src/modules/ne_data/repository/kpi_report.go index f404da6a..29e43334 100644 --- a/src/modules/ne_data/repository/kpi_report.go +++ b/src/modules/ne_data/repository/kpi_report.go @@ -118,7 +118,24 @@ func (r KpiReport) SelectUPF(coreUid, neUid string, beginTime, endTime int64) [] tx = tx.Where("created_at <= ?", endTime) // 查询数据 rows := []model.KpiReport{} - if err := tx.Select("kpi_values").Find(&rows).Error; err != nil { + if err := tx.Select("kpi_values", "created_at").Find(&rows).Error; err != nil { + logger.Errorf("query find err => %v", err.Error()) + return rows + } + return rows +} + +// SelectIMS 查询IMS数据 +func (r KpiReport) SelectIMS(coreUid, neUid string, beginTime, endTime int64) []model.KpiReport { + tx := db.DB("").Model(&model.KpiReport{}) + // 表名 + tx = tx.Table("kpi_report_ims") + tx = tx.Where("core_uid = ? and ne_uid = ?", coreUid, neUid) + tx = tx.Where("created_at >= ?", beginTime) + tx = tx.Where("created_at <= ?", endTime) + // 查询数据 + rows := []model.KpiReport{} + if err := tx.Select("kpi_values", "created_at").Find(&rows).Error; err != nil { logger.Errorf("query find err => %v", err.Error()) return rows } diff --git a/src/modules/ne_data/service/kpi_report.go b/src/modules/ne_data/service/kpi_report.go index 5f6da201..af9cf992 100644 --- a/src/modules/ne_data/service/kpi_report.go +++ b/src/modules/ne_data/service/kpi_report.go @@ -173,7 +173,7 @@ func (r KpiReport) TitleInsert(param model.KpiTitle) int64 { // UPFTodayFlowFind 查询UPF总流量 N3上行 N6下行 // day 统计天数 -// down * 8 / 1000 / 1000 单位M +// down / 1000 / 1000 单位M func (r KpiReport) UPFTodayFlowFind(neUid string, day int) (int64, int64) { // 获取当前日期 now := time.Now() @@ -280,3 +280,72 @@ func (r KpiReport) UPFTodayFlowLoad(day int) { } } } + +// IMSBusyHour IMS忙时流量统计 +// SCSCF.06呼叫尝试次数 SCSCF.09呼叫成功次数 +func (r KpiReport) IMSBusyHour(coreUid string, neUid string, timestamp int64) []map[string]any { + t := time.UnixMilli(timestamp) + beginTime := t + endTime := t + // 检查时分秒是否都为零 + if t.Hour() == 0 && t.Minute() == 0 && t.Second() == 0 { + // 获取当天起始时间(00:00:00) + beginTime = t.Truncate(time.Hour) + // 计算当天结束时间(23:59:59) + endTime = beginTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) + } else { + // 起始时间:当前小时的 00 分 00 秒 + beginTime = t.Truncate(time.Hour) + // 结束时间:当前小时的 59 分 59 秒 999 毫秒 + endTime = beginTime.Add(time.Hour - time.Millisecond) + } + // 转换为毫秒级时间戳 + rows := r.kpiReportRepository.SelectIMS(coreUid, neUid, beginTime.UnixMilli(), endTime.UnixMilli()) + + // 创建一个map来存储按时间段合并后的数据 + timeGroup := make(map[int64]map[string]int64) + // 遍历每个数据项 + for _, row := range rows { + // 将毫秒时间戳转换为小时级时间戳(保留到小时的起始毫秒) + timeHour := row.CreatedAt / 3600000 * 3600000 // 1小时 = 3600000毫秒 + + // 解析 JSON 字符串为 map + var kpiValues []map[string]any + err := json.Unmarshal([]byte(row.KpiValues), &kpiValues) + if err != nil { + continue + } + + var callAttempts, callCompletions int64 + for _, v := range kpiValues { + if k, ok := v["kpiId"]; ok { + if k == "SCSCF.06" { + callAttempts = parse.Number(v["value"]) + } + if k == "SCSCF.09" { + callCompletions = parse.Number(v["value"]) + } + } + } + // 合并到对应的小时段 + if _, exists := timeGroup[timeHour]; !exists { + timeGroup[timeHour] = map[string]int64{ + "callAttempts": 0, + "callCompletions": 0, + } + } + timeGroup[timeHour]["callAttempts"] += callAttempts + timeGroup[timeHour]["callCompletions"] += callCompletions + } + + // 时间组合输出 + data := make([]map[string]any, 0, len(timeGroup)) + for hour, sums := range timeGroup { + data = append(data, map[string]any{ + "timeGroup": fmt.Sprintf("%d", hour), + "callAttempts": sums["callAttempts"], + "callCompletions": sums["callCompletions"], + }) + } + return data +} diff --git a/src/modules/ne_data/service/udm_auth.go b/src/modules/ne_data/service/udm_auth.go index 7ec12698..220f9f4b 100644 --- a/src/modules/ne_data/service/udm_auth.go +++ b/src/modules/ne_data/service/udm_auth.go @@ -4,8 +4,10 @@ import ( "fmt" "strconv" "strings" + "time" "be.ems/src/framework/database/redis" + "be.ems/src/framework/utils/date" neService "be.ems/src/modules/ne/service" "be.ems/src/modules/ne_data/model" "be.ems/src/modules/ne_data/repository" @@ -63,15 +65,25 @@ func (r *UDMAuthUser) dataByRedis(coreUid, neUid, imsi string) []model.UDMAuthUs if v, ok := m["amf"]; ok { amf = strings.Replace(v, "\r\n", "", 1) } + // 创建时间 + var createTime int64 = 0 + if v, ok := m["create_time"]; ok { + t := date.ParseStrToDate(v, time.RFC3339) + createTime = t.UnixMilli() + } else { + createTime = time.Now().UnixMilli() + } + a := model.UDMAuthUser{ - CoreUID: coreUid, - NeUID: neUid, - NeType: "UDM", - IMSI: imsi, - Amf: amf, - Ki: m["ki"], - AlgoIndex: m["algo"], - Opc: m["opc"], + CoreUID: coreUid, + NeUID: neUid, + NeType: "UDM", + IMSI: imsi, + Amf: amf, + Ki: m["ki"], + AlgoIndex: m["algo"], + Opc: m["opc"], + CreateTime: createTime, } arr = append(arr, a) } diff --git a/src/modules/oam/service/alarm.go b/src/modules/oam/service/alarm.go index 23ff94d7..7c7381ff 100644 --- a/src/modules/oam/service/alarm.go +++ b/src/modules/oam/service/alarm.go @@ -74,10 +74,14 @@ func (s *Alarm) Resolve(a oam.Alarm) error { if err := s.clearEvent(alarm); err != nil { return err } + // 推送 + s.wsService.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM_EVENT, neInfo.CoreUID, neInfo.NeUID), alarm) } else { if err := s.clear(alarm); err != nil { return err } + // 推送 + s.wsService.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.CoreUID, neInfo.NeUID), alarm) } } @@ -89,12 +93,16 @@ func (s *Alarm) Resolve(a oam.Alarm) error { return err } alarm.AlarmSeq = alarmSeq + // 推送 + s.wsService.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM_EVENT, neInfo.CoreUID, neInfo.NeUID), alarm) } else { alarmSeq, err := s.add(alarm) if err != nil { return err } alarm.AlarmSeq = alarmSeq + // 推送 + s.wsService.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.CoreUID, neInfo.NeUID), alarm) } } @@ -102,8 +110,7 @@ func (s *Alarm) Resolve(a oam.Alarm) error { if err := s.saveLog(alarm); err != nil { return err } - // 推送 - s.wsService.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.CoreUID, neInfo.NeUID), alarm) + // 通知 go s.notify(alarm, neInfo) return nil diff --git a/src/modules/tool/controller/iperf.go b/src/modules/tool/controller/iperf.go index 07f424cf..5b6e8ec4 100644 --- a/src/modules/tool/controller/iperf.go +++ b/src/modules/tool/controller/iperf.go @@ -68,39 +68,6 @@ func (s *IPerfController) Version(c *gin.Context) { c.JSON(200, resp.OkData(data)) } -// iperf 软件安装 -// -// POST /i -// -// @Tags tool/iperf -// @Accept json -// @Produce json -// @Param data body object true "Request Param" -// @Success 200 {object} object "Response Results" -// @Security TokenAuth -// @Summary iperf software installation -// @Description iperf software installation -// @Router /tool/iperf/i [post] -func (s *IPerfController) Install(c *gin.Context) { - language := reqctx.AcceptLanguage(c) - var body struct { - CoreUid string `form:"coreUid" binding:"required"` // 核心网唯一资源标识 - NeUid string `form:"neUid" binding:"required"` // 网元唯一资源标识 - Version string `form:"version" binding:"required,oneof=V2 V3"` // 版本 - } - if err := c.ShouldBindBodyWithJSON(&body); err != nil { - errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) - c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs)) - return - } - - if err := s.iperfService.Install(body.CoreUid, body.NeUid, body.Version); err != nil { - c.JSON(200, resp.ErrMsg(i18n.TKey(language, err.Error()))) - return - } - c.JSON(200, resp.Ok(nil)) -} - // iperf 软件运行 // // GET /run diff --git a/src/modules/tool/controller/mml.go b/src/modules/tool/controller/mml.go index 84ef3a7d..ba8073d5 100644 --- a/src/modules/tool/controller/mml.go +++ b/src/modules/tool/controller/mml.go @@ -87,7 +87,7 @@ func (s MMLController) Command(c *gin.Context) { if neInfo.NeType == "UPF" && body.Type == "Standard" { num = 2 } - telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.NeType, neInfo.NeUID, num) + telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, num) if err != nil { c.JSON(200, resp.ErrMsg(err.Error())) return diff --git a/src/modules/tool/service/iperf.go b/src/modules/tool/service/iperf.go index 83a85696..12109d35 100644 --- a/src/modules/tool/service/iperf.go +++ b/src/modules/tool/service/iperf.go @@ -7,7 +7,6 @@ import ( "strings" "time" - "be.ems/src/framework/config" "be.ems/src/framework/logger" "be.ems/src/framework/resp" "be.ems/src/framework/ssh" @@ -49,89 +48,6 @@ func (s *IPerf) Version(coreUid, neUid, version string) (string, error) { return strings.TrimSpace(output), err } -// Install 安装iperf3 -func (s *IPerf) Install(coreUid, neUid, version string) error { - if version != "V2" && version != "V3" { - return fmt.Errorf("iperf version is required V2 or V3") - } - - // 网元主机的SSH客户端 - sshClient, err := neService.NewNeInfo.NeRunSSHClient(coreUid, neUid) - if err != nil { - return err - } - defer sshClient.Close() - // 网元主机的SSH客户端进行文件传输 - sftpClient, err := sshClient.NewClientSFTP() - if err != nil { - return err - } - defer sftpClient.Close() - - nePath := "/tmp" - depPkg := "sudo dpkg -i" - depDir := "assets/dependency/iperf3/deb" - - // 检查平台类型 - if _, err := sshClient.RunCMD("sudo dpkg --version"); err == nil { - depPkg = "sudo dpkg -i" - depDir = "assets/dependency/iperf3/deb" - // sudo apt remove iperf3 libiperf0 libsctp1 libsctp-dev lksctp-tools - } else if _, err := sshClient.RunCMD("sudo yum --version"); err == nil { - depPkg = "sudo rpm -Uvh --nosignature --reinstall --force" - depDir = "assets/dependency/iperf3/rpm" - // yum remove iperf3 iperf3-help.noarch - } else { - return fmt.Errorf("iperf %s not supported install", version) - } - - // V2版本和V3版本的安装包路径不同 - if version == "V2" { - depDir = strings.Replace(depDir, "iperf3", "iperf", 1) - } - - // 从 embed.FS 中读取默认配置文件内容 - assetsDir := config.GetAssetsDirFS() - fsDirEntrys, err := assetsDir.ReadDir(depDir) - if err != nil { - return err - } - neFilePaths := []string{} - for _, d := range fsDirEntrys { - // 打开本地文件 - localFile, err := assetsDir.Open(fmt.Sprintf("%s/%s", depDir, d.Name())) - if err != nil { - return fmt.Errorf("iperf %s file local error", version) - } - defer localFile.Close() - // 创建远程文件 - remotePath := fmt.Sprintf("%s/%s", nePath, d.Name()) - remoteFile, err := sftpClient.Client.Create(remotePath) - if err != nil { - return fmt.Errorf("iperf %s file remote error", version) - } - defer remoteFile.Close() - // 使用 io.Copy 将嵌入的文件内容复制到目标文件 - if _, err := io.Copy(remoteFile, localFile); err != nil { - return fmt.Errorf("iperf %s file copy error", version) - } - neFilePaths = append(neFilePaths, remotePath) - } - - // 删除软件包 - defer func() { - pkgRemove := fmt.Sprintf("sudo rm %s", strings.Join(neFilePaths, " ")) - sshClient.RunCMD(pkgRemove) - }() - - // 安装软件包 - pkgInstall := fmt.Sprintf("%s %s", depPkg, strings.Join(neFilePaths, " ")) - if _, err := sshClient.RunCMD(pkgInstall); err != nil { - return fmt.Errorf("iperf %s install error", version) - } - return err -} - // Run 接收IPerf3终端交互业务处理 func (s *IPerf) Run(client *wsModel.WSClient, reqMsg wsModel.WSRequest) { // 必传requestId确认消息 diff --git a/src/modules/tool/tool.go b/src/modules/tool/tool.go index 355b238d..853da24c 100644 --- a/src/modules/tool/tool.go +++ b/src/modules/tool/tool.go @@ -20,11 +20,6 @@ func Setup(router *gin.Engine) { middleware.AuthorizeUser(nil), controller.NewIPerf.Version, ) - iperfGroup.POST("/i", - middleware.AuthorizeUser(nil), - collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.iperf", collectlogs.BUSINESS_TYPE_OTHER)), - controller.NewIPerf.Install, - ) iperfGroup.GET("/run", middleware.AuthorizeUser(nil), collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.iperf", collectlogs.BUSINESS_TYPE_OTHER)), diff --git a/src/modules/trace/controller/trace_task.go b/src/modules/trace/controller/trace_task.go index c7ef698f..c1936f99 100644 --- a/src/modules/trace/controller/trace_task.go +++ b/src/modules/trace/controller/trace_task.go @@ -8,6 +8,7 @@ import ( "be.ems/src/framework/i18n" "be.ems/src/framework/reqctx" "be.ems/src/framework/resp" + "be.ems/src/framework/utils/parse" "be.ems/src/modules/trace/model" traceService "be.ems/src/modules/trace/service" @@ -95,7 +96,7 @@ func (s *TraceTaskController) Remove(c *gin.Context) { language := reqctx.AcceptLanguage(c) var query struct { CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识 - ID int64 `form:"id" binding:"required"` // 记录ID + ID string `form:"id" binding:"required"` // 记录ID } if err := c.ShouldBindQuery(&query); err != nil { errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) @@ -103,7 +104,15 @@ func (s *TraceTaskController) Remove(c *gin.Context) { return } - rows, err := s.traceTaskService.DeleteByIds(query.ID, query.CoreUID) + // 处理字符转id数组后去重 + uniqueIDs := parse.RemoveDuplicatesToArray(query.ID, ",") + // 转换成int64数组类型 + ids := make([]int64, 0) + for _, v := range uniqueIDs { + ids = append(ids, parse.Number(v)) + } + + rows, err := s.traceTaskService.DeleteByIds(ids, query.CoreUID) if err != nil { c.JSON(200, resp.ErrMsg(i18n.TKey(language, err.Error()))) return diff --git a/src/modules/trace/service/tcpdump.go b/src/modules/trace/service/tcpdump.go index 4255715f..a60a0c2c 100644 --- a/src/modules/trace/service/tcpdump.go +++ b/src/modules/trace/service/tcpdump.go @@ -89,7 +89,7 @@ func (s *TCPdump) DumpStart(coreUid, neUid, cmdStr string) (string, error) { // 检查进程 ps aux | grep tcpdump // 强杀 sudo pkill tcpdump - pidKey := fmt.Sprintf("%s_%s", neInfo.NeUID, taskCode) + pidKey := fmt.Sprintf("%s_%s_%s", strings.ToLower(neInfo.NeType), neInfo.NeUID, taskCode) dumpPIDMap.Store(pidKey, PIDMap) return taskCode, err } diff --git a/src/modules/trace/service/trace_task.go b/src/modules/trace/service/trace_task.go index 4bb54b65..a70f8c4a 100644 --- a/src/modules/trace/service/trace_task.go +++ b/src/modules/trace/service/trace_task.go @@ -295,20 +295,20 @@ func (r TraceTask) traceNeTask(neInfo neModel.NeInfo, task model.TraceTask) erro } // DeleteByIds 批量删除信息 -func (r TraceTask) DeleteByIds(id int64, coreUid string) (int64, error) { +func (r TraceTask) DeleteByIds(ids []int64, coreUid string) (int64, error) { // 检查是否存在 - rows := r.traceTaskRepository.SelectByIds([]int64{id}) - if len(rows) != 1 { - return 0, fmt.Errorf("not data") + arr := r.traceTaskRepository.SelectByIds(ids) + if len(arr) != len(ids) { + return 0, fmt.Errorf("not match id") } - for _, v := range rows { + for _, v := range arr { if v.CoreUID != coreUid { return 0, fmt.Errorf("data not match, id: %d", v.ID) } } // 删除数据同时给网元发送停止任务 - for _, v := range rows { + for _, v := range arr { // 删除数据 r.traceDataRepository.DeleteByTraceId(v.TraceId) @@ -332,7 +332,7 @@ func (r TraceTask) DeleteByIds(id int64, coreUid string) (int64, error) { } } - num := r.traceTaskRepository.DeleteByIds([]int64{id}) + num := r.traceTaskRepository.DeleteByIds(ids) return num, nil } diff --git a/src/modules/ws/controller/ws_view.go b/src/modules/ws/controller/ws_view.go index e5a6aa76..5cfa759c 100644 --- a/src/modules/ws/controller/ws_view.go +++ b/src/modules/ws/controller/ws_view.go @@ -33,10 +33,10 @@ import ( func (s *WSController) ShellView(c *gin.Context) { language := reqctx.AcceptLanguage(c) var query struct { - NeType string `form:"neType" binding:"required"` // 网元类型 - NeId string `form:"neId" binding:"required"` // 网元标识id - Cols int `form:"cols"` // 终端单行字符数 - Rows int `form:"rows"` // 终端显示行数 + CoreUid string `form:"coreUid" binding:"required"` // 核心网唯一资源标识 + NeUid string `form:"neUid" binding:"required"` // 网元唯一资源标识 + Cols int `form:"cols"` // 终端单行字符数 + Rows int `form:"rows"` // 终端显示行数 } if err := c.ShouldBindQuery(&query); err != nil { errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) @@ -58,7 +58,7 @@ func (s *WSController) ShellView(c *gin.Context) { } // 网元主机的SSH客户端 - sshClient, err := neService.NewNeInfo.NeRunSSHClient(query.NeType, query.NeId) + sshClient, err := neService.NewNeInfo.NeRunSSHClient(query.CoreUid, query.NeUid) if err != nil { c.JSON(200, resp.ErrMsg(err.Error())) return diff --git a/src/modules/ws/processor/ne_state.go b/src/modules/ws/processor/ne_state.go index 1a4ebe9a..fd6614ac 100644 --- a/src/modules/ws/processor/ne_state.go +++ b/src/modules/ws/processor/ne_state.go @@ -39,12 +39,12 @@ func GetNeState(requestID string, data any) ([]byte, error) { resultByte, err := json.Marshal(resp.Ok(map[string]any{ "requestId": requestID, "data": map[string]any{ - "online": false, - "coreUid": neInfo.CoreUID, - "neUid": neInfo.NeUID, - "neName": neInfo.NeName, - "neType": neInfo.NeType, - "neIPAddr": neInfo.IPAddr, + "online": false, + "coreUid": neInfo.CoreUID, + "neUid": neInfo.NeUID, + "neName": neInfo.NeName, + "neType": neInfo.NeType, + "ipAddr": neInfo.IPAddr, }, })) return resultByte, err diff --git a/src/modules/ws/processor/net_connect.go b/src/modules/ws/processor/net_connect.go index 87b74595..e3d7ba21 100644 --- a/src/modules/ws/processor/net_connect.go +++ b/src/modules/ws/processor/net_connect.go @@ -3,6 +3,7 @@ package processor import ( "encoding/json" "fmt" + "strconv" "strings" "be.ems/src/framework/logger" @@ -41,9 +42,15 @@ func GetNetConnections(requestID string, data any) ([]byte, error) { if query.Name != "" && !strings.Contains(name, query.Name) { continue } - if query.Port > 0 && query.Port != int32(conn.Laddr.Port) && query.Port != int32(conn.Raddr.Port) { - continue + if query.Port > 0 { + portStr := strconv.Itoa(int(query.Port)) + matchL := strings.HasPrefix(strconv.Itoa(int(conn.Laddr.Port)), portStr) + matchR := strings.HasPrefix(strconv.Itoa(int(conn.Raddr.Port)), portStr) + if !matchL && !matchR { + continue + } } + dataArr = append(dataArr, model.NetConnectData{ Type: netType, Status: conn.Status, diff --git a/src/modules/ws/service/ws_send.go b/src/modules/ws/service/ws_send.go index b419e1fa..d972fdab 100644 --- a/src/modules/ws/service/ws_send.go +++ b/src/modules/ws/service/ws_send.go @@ -12,35 +12,35 @@ import ( const ( // 组号-其他 GROUP_OTHER = "0" - // 组号-跟踪任务网元数据变更 2_traceId + // 组号-跟踪任务网元数据变更 2_taskId GROUP_TRACE_NE = "2" - // 组号-信令跟踪Packet 4_taskNo + // 组号-信令跟踪Packet 4_TaskNo GROUP_TRACE_PACKET = "4" - // 组号-网元状态 8_neType_neId + // 组号-网元状态 8_coreUid_neUid GROUP_NE_STATE = "8" - // 组号-指标通用 10_neType_neId + // 组号-指标通用 10_coreUid_neUid GROUP_KPI = "10" - // 组号-自定义KPI指标 20_neType_neId + // 组号-自定义KPI指标 20_coreUid_neUid GROUP_KPI_C = "20" - // 组号-IMS_CDR会话事件 1005_neId + // 组号-IMS_CDR会话事件 1005_coreUid_neUid GROUP_IMS_CDR = "1005" - // 组号-SMF_CDR会话事件 1006_neId + // 组号-SMF_CDR会话事件 1006_coreUid_neUid GROUP_SMF_CDR = "1006" - // 组号-SMSC_CDR会话事件 1007_neId + // 组号-SMSC_CDR会话事件 1007_coreUid_neUid GROUP_SMSC_CDR = "1007" - // 组号-SGWC_CDR会话事件 1008_neId + // 组号-SGWC_CDR会话事件 1008_coreUid_neUid GROUP_SGWC_CDR = "1008" - // 组号-AMF_UE会话事件 1010_neId + // 组号-AMF_UE会话事件 1010_coreUid_neUid GROUP_AMF_UE = "1010" - // 组号-MME_UE会话事件 1011_neId + // 组号-MME_UE会话事件 1011_coreUid_neUid GROUP_MME_UE = "1011" - // 组号-AMF_NB状态事件 1014_neId + // 组号-AMF_NB状态事件 1014_coreUid_neUid GROUP_AMF_NB = "1014" - // 组号-MME_NB状态事件 1015_neId + // 组号-MME_NB状态事件 1015_coreUid_neUid GROUP_MME_NB = "1015" - // 组号-告警 2000_neType_neId + // 组号-告警 2000_coreUid_neUid GROUP_ALARM = "2000" - // 组号-告警事件 2002_neType_neId + // 组号-告警事件 2002_coreUid_neUid GROUP_ALARM_EVENT = "2002" )