Merge branch 'main-v2' into lite-ba
This commit is contained in:
24
CHANGELOG.md
24
CHANGELOG.md
@@ -1,5 +1,29 @@
|
|||||||
# 版本发布日志
|
# 版本发布日志
|
||||||
|
|
||||||
|
## 2.2509.4-20250926
|
||||||
|
|
||||||
|
- 优化 UDM用户数据导出文件带createTime字段
|
||||||
|
- 修复 告警接收局部创建对象,防止并发数据混乱
|
||||||
|
- 新增 UDM用户数据添加创建时间字段
|
||||||
|
- 修复 MML-udm dec key后查看内容
|
||||||
|
- 新增 添加系统备份功能,权限控制分配
|
||||||
|
- 新增 定时导出文件路径统一前缀,导出无分页检查
|
||||||
|
- 新增 导出查询去除最大记录数限制,查询分页检查
|
||||||
|
- 优化 更新kpi英文翻译
|
||||||
|
- 新增 添加KPI数据备份导出功能及相关数据库结构更新
|
||||||
|
- 新增 添加kpi_c_report_nrf和kpi_report_nrf表的结构及索引
|
||||||
|
- 修复 忽略SQL执行中的未知字段和无此字段错误
|
||||||
|
- 优化 取消告警页面静态缓存
|
||||||
|
- 新增 菜单权限标识补充添加,角色分配权限
|
||||||
|
- 修复 修正菜单名称CheckUnique方法中对ParentId的条件判断
|
||||||
|
- 新增 忙时定义为一周内话务量最高的四个小时的平均值
|
||||||
|
- 优化 AMF和MME类型的备份缺少csv文件
|
||||||
|
- 优化 资源告警调整事件触发时间窗口为30秒
|
||||||
|
- 优化 IMS忙时统计认证拦截
|
||||||
|
- 优化 不对比网元信息中版本信息,重置路径和包名
|
||||||
|
- 优化 语音数据概览改为语音通话统计
|
||||||
|
- 新增 添加KPI忙时0609统计接口及相关服务逻辑
|
||||||
|
|
||||||
## 2.2508.4-20250829
|
## 2.2508.4-20250829
|
||||||
|
|
||||||
- 新增 license信息添加用户数/基站数字段记录
|
- 新增 license信息添加用户数/基站数字段记录
|
||||||
|
|||||||
@@ -196,4 +196,15 @@ INSERT INTO "sys_dict_data" VALUES (170, 'sys_user_type', 'dictData.sys_user_typ
|
|||||||
INSERT INTO "sys_dict_data" VALUES (171, 'sys_user_type', 'dictData.sys_user_type.ldap', 'LDAP', 2, '', 'lime', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO "sys_dict_data" VALUES (171, 'sys_user_type', 'dictData.sys_user_type.ldap', 'LDAP', 2, '', 'lime', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
INSERT INTO "sys_dict_data" VALUES (172, 'sys_user_type', 'dictData.sys_user_type.smtp', 'SMTP', 3, '', 'magenta', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO "sys_dict_data" VALUES (172, 'sys_user_type', 'dictData.sys_user_type.smtp', 'SMTP', 3, '', 'magenta', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
INSERT INTO "sys_dict_data" VALUES (173, 'sys_user_type', 'dictData.sys_user_type.oauth2', 'OAuth2', 4, '', 'gold', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO "sys_dict_data" VALUES (173, 'sys_user_type', 'dictData.sys_user_type.oauth2', 'OAuth2', 4, '', 'gold', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO "sys_dict_data" VALUES (174, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.0', '0', 0, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO "sys_dict_data" VALUES (175, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.1', '1', 1, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO "sys_dict_data" VALUES (176, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.2', '2', 2, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO "sys_dict_data" VALUES (177, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.3', '3', 3, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO "sys_dict_data" VALUES (178, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.4', '4', 4, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO "sys_dict_data" VALUES (179, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.5', '5', 5, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO "sys_dict_data" VALUES (180, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.6', '6', 6, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO "sys_dict_data" VALUES (181, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.7', '7', 7, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO "sys_dict_data" VALUES (182, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.8', '8', 8, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO "sys_dict_data" VALUES (183, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.9', '9', 9, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO "sys_dict_data" VALUES (184, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.10', '10', 10, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
|
||||||
|
|||||||
@@ -53,3 +53,4 @@ INSERT INTO "sys_dict_type" VALUES (71, 'dictType.trace_msg_type', 'trace_msg_ty
|
|||||||
INSERT INTO "sys_dict_type" VALUES (72, 'dictType.trace_msg_direct', 'trace_msg_direct', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO "sys_dict_type" VALUES (72, 'dictType.trace_msg_direct', 'trace_msg_direct', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
INSERT INTO "sys_dict_type" VALUES (73, 'dictType.trace_interfaces', 'trace_interfaces', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO "sys_dict_type" VALUES (73, 'dictType.trace_interfaces', 'trace_interfaces', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
INSERT INTO "sys_dict_type" VALUES (74, 'dictType.cdr_sip_code_cause', 'cdr_sip_code_cause', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO "sys_dict_type" VALUES (74, 'dictType.cdr_sip_code_cause', 'cdr_sip_code_cause', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO "sys_dict_type" VALUES (75, 'dictType.cdr_cause_smsc', 'cdr_cause_smsc', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
|||||||
@@ -977,6 +977,17 @@ hour: data time from the hour before the task execution time');
|
|||||||
INSERT INTO "sys_i18n" VALUES (794, 'menu.system.setting.homeSet', '主页设置', 'Home Set');
|
INSERT INTO "sys_i18n" VALUES (794, 'menu.system.setting.homeSet', '主页设置', 'Home Set');
|
||||||
INSERT INTO "sys_i18n" VALUES (795, 'menu.system.setting.reset', '重置', 'Reset');
|
INSERT INTO "sys_i18n" VALUES (795, 'menu.system.setting.reset', '重置', 'Reset');
|
||||||
INSERT INTO "sys_i18n" VALUES (796, 'menu.system.setting.backup', '备份还原', 'Backup Restore');
|
INSERT INTO "sys_i18n" VALUES (796, 'menu.system.setting.backup', '备份还原', 'Backup Restore');
|
||||||
|
INSERT INTO "sys_i18n" VALUES (797, 'dictData.cdr_cause_smsc.0', '未知错误', 'Unknown Error');
|
||||||
|
INSERT INTO "sys_i18n" VALUES (798, 'dictData.cdr_cause_smsc.1', '无错误', 'No error');
|
||||||
|
INSERT INTO "sys_i18n" VALUES (799, 'dictData.cdr_cause_smsc.2', '通过SIP传输的消息源数据中SMSC提取参数错误', 'Error in SMSC extract parameter of Message Originating data via SIP');
|
||||||
|
INSERT INTO "sys_i18n" VALUES (800, 'dictData.cdr_cause_smsc.3', '消息来源数据中消息来源的服务中心编号缺失', 'Missing Service Center Number of Message Originating data in Message Originating');
|
||||||
|
INSERT INTO "sys_i18n" VALUES (801, 'dictData.cdr_cause_smsc.4', '未知服务中心号码消息来源数据中的消息来源', 'Unknown Service Center Number of Message Originating data in Message Originating');
|
||||||
|
INSERT INTO "sys_i18n" VALUES (802, 'dictData.cdr_cause_smsc.5', '消息源数据中缺少必需参数源地址(RP-OA)', 'Missing Required Parameter Originating Address(RP-OA) in Message Originating data');
|
||||||
|
INSERT INTO "sys_i18n" VALUES (803, 'dictData.cdr_cause_smsc.6', 'SMSC解码错误或消息来源数据', 'Error in smsc decoding Message Originating data');
|
||||||
|
INSERT INTO "sys_i18n" VALUES (804, 'dictData.cdr_cause_smsc.7', '消息发起路由失败(无法确定如何路由呼叫号码(通过4G/2G))', 'Message Originating routing failed(not know how to route called number(via 4G/2g))');
|
||||||
|
INSERT INTO "sys_i18n" VALUES (804, 'dictData.cdr_cause_smsc.8', 'SMSC 未收到 RP-ACK 数据包(cscf→smsc)', 'SMSC not receive RP-ACK pkg(cscf->smsc)');
|
||||||
|
INSERT INTO "sys_i18n" VALUES (806, 'dictData.cdr_cause_smsc.9', 'SMSC接收错误的RP-ACK数据包(cscf→smsc)', 'SMSC receive wrong RP-ACK pkg(cscf->smsc)');
|
||||||
|
INSERT INTO "sys_i18n" VALUES (807, 'dictData.cdr_cause_smsc.10', 'CAMEL 流程错误', 'CAMEL process error');
|
||||||
|
|
||||||
INSERT INTO "sys_i18n" VALUES (2000, 'menu.psap.agent', '座席', 'Agent');
|
INSERT INTO "sys_i18n" VALUES (2000, 'menu.psap.agent', '座席', 'Agent');
|
||||||
INSERT INTO "sys_i18n" VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information');
|
INSERT INTO "sys_i18n" VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information');
|
||||||
|
|||||||
@@ -202,6 +202,7 @@ INSERT INTO "sys_menu" VALUES (1145, 'menu.common.ftp', 2096, 1, '', '', '1', '1
|
|||||||
INSERT INTO "sys_menu" VALUES (1146, 'menu.common.ftpSync', 2096, 2, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:ftpSync', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
INSERT INTO "sys_menu" VALUES (1146, 'menu.common.ftpSync', 2096, 2, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:ftpSync', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||||
INSERT INTO "sys_menu" VALUES (1147, 'menu.common.download', 2096, 3, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:download', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
INSERT INTO "sys_menu" VALUES (1147, 'menu.common.download', 2096, 3, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:download', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||||
INSERT INTO "sys_menu" VALUES (1148, 'menu.common.delete', 2096, 4, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:delete', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
INSERT INTO "sys_menu" VALUES (1148, 'menu.common.delete', 2096, 4, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:delete', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||||
|
INSERT INTO "sys_menu" VALUES (1149, 'menu.neData.udmAuth.exportDec', 2000, 7, '', '', '1', '1', 'B', '1', '1', 'neData:udm-auth:export-dec', '#', '0', 'supervisor', 1757671977637, 'supervisor', 1757671977637, '');
|
||||||
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, '');
|
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, '');
|
||||||
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, '');
|
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, '');
|
||||||
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, '');
|
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, '');
|
||||||
|
|||||||
@@ -4,8 +4,9 @@
|
|||||||
DROP TABLE IF EXISTS "udm_auth";
|
DROP TABLE IF EXISTS "udm_auth";
|
||||||
CREATE TABLE "udm_auth" (
|
CREATE TABLE "udm_auth" (
|
||||||
"id" integer NOT NULL,
|
"id" integer NOT NULL,
|
||||||
"imsi" text(50) NOT NULL,
|
"create_time" integer,
|
||||||
"ne_id" text(50),
|
"ne_id" text(50),
|
||||||
|
"imsi" text(50) NOT NULL,
|
||||||
"amf" text(50),
|
"amf" text(50),
|
||||||
"status" text(50),
|
"status" text(50),
|
||||||
"ki" text(50),
|
"ki" text(50),
|
||||||
|
|||||||
@@ -4,9 +4,10 @@
|
|||||||
DROP TABLE IF EXISTS "udm_sub";
|
DROP TABLE IF EXISTS "udm_sub";
|
||||||
CREATE TABLE "udm_sub" (
|
CREATE TABLE "udm_sub" (
|
||||||
"id" integer NOT NULL,
|
"id" integer NOT NULL,
|
||||||
|
"create_time" integer,
|
||||||
|
"ne_id" text(50),
|
||||||
"imsi" text(50) NOT NULL,
|
"imsi" text(50) NOT NULL,
|
||||||
"msisdn" text(50),
|
"msisdn" text(50),
|
||||||
"ne_id" text(50),
|
|
||||||
"am_dat" text(1500),
|
"am_dat" text(1500),
|
||||||
"ambr" text(50),
|
"ambr" text(50),
|
||||||
"nssai" text(50),
|
"nssai" text(50),
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
DROP TABLE IF EXISTS "udm_voip";
|
DROP TABLE IF EXISTS "udm_voip";
|
||||||
CREATE TABLE "udm_voip" (
|
CREATE TABLE "udm_voip" (
|
||||||
"id" integer NOT NULL,
|
"id" integer NOT NULL,
|
||||||
|
"create_time" integer,
|
||||||
"ne_id" text(50),
|
"ne_id" text(50),
|
||||||
"username" text(50),
|
"username" text(50),
|
||||||
"password" text(128),
|
"password" text(128),
|
||||||
|
|||||||
@@ -4,9 +4,10 @@
|
|||||||
DROP TABLE IF EXISTS "udm_volte_ims";
|
DROP TABLE IF EXISTS "udm_volte_ims";
|
||||||
CREATE TABLE "udm_volte_ims" (
|
CREATE TABLE "udm_volte_ims" (
|
||||||
"id" integer NOT NULL,
|
"id" integer NOT NULL,
|
||||||
|
"create_time" integer,
|
||||||
|
"ne_id" text(50),
|
||||||
"imsi" text(50) NOT NULL,
|
"imsi" text(50) NOT NULL,
|
||||||
"msisdn" text(50),
|
"msisdn" text(50),
|
||||||
"ne_id" text(50),
|
|
||||||
"tag" text(50),
|
"tag" text(50),
|
||||||
"vni" text(128),
|
"vni" text(128),
|
||||||
PRIMARY KEY ("id")
|
PRIMARY KEY ("id")
|
||||||
|
|||||||
@@ -195,4 +195,15 @@ REPLACE INTO "sys_dict_data" VALUES (170, 'sys_user_type', 'dictData.sys_user_ty
|
|||||||
REPLACE INTO "sys_dict_data" VALUES (171, 'sys_user_type', 'dictData.sys_user_type.ldap', 'LDAP', 2, '', 'lime', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO "sys_dict_data" VALUES (171, 'sys_user_type', 'dictData.sys_user_type.ldap', 'LDAP', 2, '', 'lime', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
REPLACE INTO "sys_dict_data" VALUES (172, 'sys_user_type', 'dictData.sys_user_type.smtp', 'SMTP', 3, '', 'magenta', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO "sys_dict_data" VALUES (172, 'sys_user_type', 'dictData.sys_user_type.smtp', 'SMTP', 3, '', 'magenta', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
REPLACE INTO "sys_dict_data" VALUES (173, 'sys_user_type', 'dictData.sys_user_type.oauth2', 'OAuth2', 4, '', 'gold', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO "sys_dict_data" VALUES (173, 'sys_user_type', 'dictData.sys_user_type.oauth2', 'OAuth2', 4, '', 'gold', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_data" VALUES (174, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.0', '0', 0, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_data" VALUES (175, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.1', '1', 1, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_data" VALUES (176, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.2', '2', 2, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_data" VALUES (177, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.3', '3', 3, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_data" VALUES (178, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.4', '4', 4, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_data" VALUES (179, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.5', '5', 5, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_data" VALUES (180, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.6', '6', 6, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_data" VALUES (181, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.7', '7', 7, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_data" VALUES (182, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.8', '8', 8, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_data" VALUES (183, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.9', '9', 9, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_data" VALUES (184, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.10', '10', 10, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
|
||||||
|
|||||||
@@ -52,3 +52,4 @@ REPLACE INTO "sys_dict_type" VALUES (71, 'dictType.trace_msg_type', 'trace_msg_t
|
|||||||
REPLACE INTO "sys_dict_type" VALUES (72, 'dictType.trace_msg_direct', 'trace_msg_direct', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO "sys_dict_type" VALUES (72, 'dictType.trace_msg_direct', 'trace_msg_direct', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
REPLACE INTO "sys_dict_type" VALUES (73, 'dictType.trace_interfaces', 'trace_interfaces', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO "sys_dict_type" VALUES (73, 'dictType.trace_interfaces', 'trace_interfaces', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
REPLACE INTO "sys_dict_type" VALUES (74, 'dictType.cdr_sip_code_cause', 'cdr_sip_code_cause', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO "sys_dict_type" VALUES (74, 'dictType.cdr_sip_code_cause', 'cdr_sip_code_cause', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (75, 'dictType.cdr_cause_smsc', 'cdr_cause_smsc', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
|||||||
@@ -976,6 +976,17 @@ hour: data time from the hour before the task execution time');
|
|||||||
REPLACE INTO "sys_i18n" VALUES (794, 'menu.system.setting.homeSet', '主页设置', 'Home Set');
|
REPLACE INTO "sys_i18n" VALUES (794, 'menu.system.setting.homeSet', '主页设置', 'Home Set');
|
||||||
REPLACE INTO "sys_i18n" VALUES (795, 'menu.system.setting.reset', '重置', 'Reset');
|
REPLACE INTO "sys_i18n" VALUES (795, 'menu.system.setting.reset', '重置', 'Reset');
|
||||||
REPLACE INTO "sys_i18n" VALUES (796, 'menu.system.setting.backup', '备份还原', 'Backup Restore');
|
REPLACE INTO "sys_i18n" VALUES (796, 'menu.system.setting.backup', '备份还原', 'Backup Restore');
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (797, 'dictData.cdr_cause_smsc.0', '未知错误', 'Unknown Error');
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (798, 'dictData.cdr_cause_smsc.1', '无错误', 'No error');
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (799, 'dictData.cdr_cause_smsc.2', '通过SIP传输的消息源数据中SMSC提取参数错误', 'Error in SMSC extract parameter of Message Originating data via SIP');
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (800, 'dictData.cdr_cause_smsc.3', '消息来源数据中消息来源的服务中心编号缺失', 'Missing Service Center Number of Message Originating data in Message Originating');
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (801, 'dictData.cdr_cause_smsc.4', '未知服务中心号码消息来源数据中的消息来源', 'Unknown Service Center Number of Message Originating data in Message Originating');
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (802, 'dictData.cdr_cause_smsc.5', '消息源数据中缺少必需参数源地址(RP-OA)', 'Missing Required Parameter Originating Address(RP-OA) in Message Originating data');
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (803, 'dictData.cdr_cause_smsc.6', 'SMSC解码错误或消息来源数据', 'Error in smsc decoding Message Originating data');
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (804, 'dictData.cdr_cause_smsc.7', '消息发起路由失败(无法确定如何路由呼叫号码(通过4G/2G))', 'Message Originating routing failed(not know how to route called number(via 4G/2g))');
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (804, 'dictData.cdr_cause_smsc.8', 'SMSC 未收到 RP-ACK 数据包(cscf→smsc)', 'SMSC not receive RP-ACK pkg(cscf->smsc)');
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (806, 'dictData.cdr_cause_smsc.9', 'SMSC接收错误的RP-ACK数据包(cscf→smsc)', 'SMSC receive wrong RP-ACK pkg(cscf->smsc)');
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (807, 'dictData.cdr_cause_smsc.10', 'CAMEL 流程错误', 'CAMEL process error');
|
||||||
|
|
||||||
REPLACE INTO "sys_i18n" VALUES (2000, 'menu.psap.agent', '座席', 'Agent');
|
REPLACE INTO "sys_i18n" VALUES (2000, 'menu.psap.agent', '座席', 'Agent');
|
||||||
REPLACE INTO "sys_i18n" VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information');
|
REPLACE INTO "sys_i18n" VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information');
|
||||||
|
|||||||
@@ -201,6 +201,7 @@ REPLACE INTO "sys_menu" VALUES (1145, 'menu.common.ftp', 2096, 1, '', '', '1', '
|
|||||||
REPLACE INTO "sys_menu" VALUES (1146, 'menu.common.ftpSync', 2096, 2, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:ftpSync', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
REPLACE INTO "sys_menu" VALUES (1146, 'menu.common.ftpSync', 2096, 2, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:ftpSync', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||||
REPLACE INTO "sys_menu" VALUES (1147, 'menu.common.download', 2096, 3, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:download', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
REPLACE INTO "sys_menu" VALUES (1147, 'menu.common.download', 2096, 3, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:download', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||||
REPLACE INTO "sys_menu" VALUES (1148, 'menu.common.delete', 2096, 4, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:delete', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
REPLACE INTO "sys_menu" VALUES (1148, 'menu.common.delete', 2096, 4, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:delete', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||||
|
REPLACE INTO "sys_menu" VALUES (1149, 'menu.neData.udmAuth.exportDec', 2000, 7, '', '', '1', '1', 'B', '1', '1', 'neData:udm-auth:export-dec', '#', '0', 'supervisor', 1757671977637, 'supervisor', 1757671977637, '');
|
||||||
REPLACE 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, '');
|
REPLACE 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, '');
|
||||||
REPLACE 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, '');
|
REPLACE 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, '');
|
||||||
REPLACE 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, '');
|
REPLACE 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, '');
|
||||||
|
|||||||
29
build/database/lite/upgrade/upg_udm_auth.sql
Normal file
29
build/database/lite/upgrade/upg_udm_auth.sql
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for udm_auth
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS "udm_auth";
|
||||||
|
CREATE TABLE "udm_auth" (
|
||||||
|
"id" integer NOT NULL,
|
||||||
|
"create_time" integer,
|
||||||
|
"ne_id" text(50),
|
||||||
|
"imsi" text(50) NOT NULL,
|
||||||
|
"amf" text(50),
|
||||||
|
"status" text(50),
|
||||||
|
"ki" text(50),
|
||||||
|
"algo_index" text(50),
|
||||||
|
"opc" text(50),
|
||||||
|
PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Indexes structure for table udm_auth
|
||||||
|
-- ----------------------------
|
||||||
|
CREATE UNIQUE INDEX "uk_auth_imsi_ne"
|
||||||
|
ON "udm_auth" (
|
||||||
|
"imsi" ASC,
|
||||||
|
"ne_id" ASC
|
||||||
|
);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of udm_auth
|
||||||
|
-- ----------------------------
|
||||||
52
build/database/lite/upgrade/upg_udm_sub.sql
Normal file
52
build/database/lite/upgrade/upg_udm_sub.sql
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for udm_sub
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS "udm_sub";
|
||||||
|
CREATE TABLE "udm_sub" (
|
||||||
|
"id" integer NOT NULL,
|
||||||
|
"create_time" integer,
|
||||||
|
"ne_id" text(50),
|
||||||
|
"imsi" text(50) NOT NULL,
|
||||||
|
"msisdn" text(50),
|
||||||
|
"am_dat" text(1500),
|
||||||
|
"ambr" text(50),
|
||||||
|
"nssai" text(50),
|
||||||
|
"rat" text(50),
|
||||||
|
"arfb" text(50),
|
||||||
|
"sar" text(50),
|
||||||
|
"cn_type" text(50),
|
||||||
|
"rfsp_index" text(50),
|
||||||
|
"reg_timer" text(50),
|
||||||
|
"ue_usage_type" text(50),
|
||||||
|
"active_time" text(50),
|
||||||
|
"mico" text(50),
|
||||||
|
"odb_ps" text(50),
|
||||||
|
"group_id" text(50),
|
||||||
|
"eps_dat" text(1500),
|
||||||
|
"eps_flag" text(50),
|
||||||
|
"eps_odb" text(50),
|
||||||
|
"hplmn_odb" text(50),
|
||||||
|
"ard" text(50),
|
||||||
|
"epstpl" text(50),
|
||||||
|
"context_id" text(50),
|
||||||
|
"apn_mum" text(50),
|
||||||
|
"apn_context" text(50),
|
||||||
|
"static_ip" text(50),
|
||||||
|
"sm_data" text(1500),
|
||||||
|
"smf_sel" text(50),
|
||||||
|
"cag" text(50),
|
||||||
|
PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Indexes structure for table udm_sub
|
||||||
|
-- ----------------------------
|
||||||
|
CREATE UNIQUE INDEX "uk_sub_imsi_ne"
|
||||||
|
ON "udm_sub" (
|
||||||
|
"imsi" ASC,
|
||||||
|
"ne_id" ASC
|
||||||
|
);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of udm_sub
|
||||||
|
-- ----------------------------
|
||||||
25
build/database/lite/upgrade/upg_udm_voip.sql
Normal file
25
build/database/lite/upgrade/upg_udm_voip.sql
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for udm_voip
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS "udm_voip";
|
||||||
|
CREATE TABLE "udm_voip" (
|
||||||
|
"id" integer NOT NULL,
|
||||||
|
"create_time" integer,
|
||||||
|
"ne_id" text(50),
|
||||||
|
"username" text(50),
|
||||||
|
"password" text(128),
|
||||||
|
PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Indexes structure for table udm_voip
|
||||||
|
-- ----------------------------
|
||||||
|
CREATE UNIQUE INDEX "uk_voip_user_ne"
|
||||||
|
ON "udm_voip" (
|
||||||
|
"username" ASC,
|
||||||
|
"ne_id" ASC
|
||||||
|
);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of udm_voip
|
||||||
|
-- ----------------------------
|
||||||
32
build/database/lite/upgrade/upg_udm_volte_ims.sql
Normal file
32
build/database/lite/upgrade/upg_udm_volte_ims.sql
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for udm_volte_ims
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS "udm_volte_ims";
|
||||||
|
CREATE TABLE "udm_volte_ims" (
|
||||||
|
"id" integer NOT NULL,
|
||||||
|
"create_time" integer,
|
||||||
|
"ne_id" text(50),
|
||||||
|
"imsi" text(50) NOT NULL,
|
||||||
|
"msisdn" text(50),
|
||||||
|
"tag" text(50),
|
||||||
|
"vni" text(128),
|
||||||
|
PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Indexes structure for table udm_volte_ims
|
||||||
|
-- ----------------------------
|
||||||
|
CREATE INDEX "idx_volte_tag"
|
||||||
|
ON "udm_volte_ims" (
|
||||||
|
"tag" ASC
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX "uk_volte_imsi_ne"
|
||||||
|
ON "udm_volte_ims" (
|
||||||
|
"imsi" ASC,
|
||||||
|
"msisdn" ASC,
|
||||||
|
"ne_id" ASC
|
||||||
|
);
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of udm_volte_ims
|
||||||
|
-- ----------------------------
|
||||||
@@ -199,6 +199,17 @@ INSERT INTO `sys_dict_data` VALUES (170, 'sys_user_type', 'dictData.sys_user_typ
|
|||||||
INSERT INTO `sys_dict_data` VALUES (171, 'sys_user_type', 'dictData.sys_user_type.ldap', 'LDAP', 2, '', 'lime', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO `sys_dict_data` VALUES (171, 'sys_user_type', 'dictData.sys_user_type.ldap', 'LDAP', 2, '', 'lime', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
INSERT INTO `sys_dict_data` VALUES (172, 'sys_user_type', 'dictData.sys_user_type.smtp', 'SMTP', 3, '', 'magenta', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO `sys_dict_data` VALUES (172, 'sys_user_type', 'dictData.sys_user_type.smtp', 'SMTP', 3, '', 'magenta', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
INSERT INTO `sys_dict_data` VALUES (173, 'sys_user_type', 'dictData.sys_user_type.oauth2', 'OAuth2', 4, '', 'gold', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO `sys_dict_data` VALUES (173, 'sys_user_type', 'dictData.sys_user_type.oauth2', 'OAuth2', 4, '', 'gold', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO `sys_dict_data` VALUES (174, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.0', '0', 0, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO `sys_dict_data` VALUES (175, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.1', '1', 1, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO `sys_dict_data` VALUES (176, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.2', '2', 2, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO `sys_dict_data` VALUES (177, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.3', '3', 3, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO `sys_dict_data` VALUES (178, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.4', '4', 4, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO `sys_dict_data` VALUES (179, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.5', '5', 5, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO `sys_dict_data` VALUES (180, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.6', '6', 6, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO `sys_dict_data` VALUES (181, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.7', '7', 7, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO `sys_dict_data` VALUES (182, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.8', '8', 8, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO `sys_dict_data` VALUES (183, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.9', '9', 9, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO `sys_dict_data` VALUES (184, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.10', '10', 10, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
|
||||||
SET FOREIGN_KEY_CHECKS = 1;
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
|
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ INSERT INTO `sys_dict_type` VALUES (71, 'dictType.trace_msg_type', 'trace_msg_ty
|
|||||||
INSERT INTO `sys_dict_type` VALUES (72, 'dictType.trace_msg_direct', 'trace_msg_direct', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO `sys_dict_type` VALUES (72, 'dictType.trace_msg_direct', 'trace_msg_direct', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
INSERT INTO `sys_dict_type` VALUES (73, 'dictType.trace_interfaces', 'trace_interfaces', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO `sys_dict_type` VALUES (73, 'dictType.trace_interfaces', 'trace_interfaces', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
INSERT INTO `sys_dict_type` VALUES (74, 'dictType.cdr_sip_code_cause', 'cdr_sip_code_cause', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO `sys_dict_type` VALUES (74, 'dictType.cdr_sip_code_cause', 'cdr_sip_code_cause', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO `sys_dict_type` VALUES (75, 'dictType.cdr_cause_smsc', 'cdr_cause_smsc', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
|||||||
@@ -811,6 +811,17 @@ INSERT INTO `sys_i18n` VALUES (793, 'job.backup_export_kpi_remark', 'dataType:
|
|||||||
INSERT INTO `sys_i18n` VALUES (794, 'menu.system.setting.homeSet', '主页设置', 'Home Set');
|
INSERT INTO `sys_i18n` VALUES (794, 'menu.system.setting.homeSet', '主页设置', 'Home Set');
|
||||||
INSERT INTO `sys_i18n` VALUES (795, 'menu.system.setting.reset', '重置', 'Reset');
|
INSERT INTO `sys_i18n` VALUES (795, 'menu.system.setting.reset', '重置', 'Reset');
|
||||||
INSERT INTO `sys_i18n` VALUES (796, 'menu.system.setting.backup', '备份还原', 'Backup Restore');
|
INSERT INTO `sys_i18n` VALUES (796, 'menu.system.setting.backup', '备份还原', 'Backup Restore');
|
||||||
|
INSERT INTO `sys_i18n` VALUES (797, 'dictData.cdr_cause_smsc.0', '未知错误', 'Unknown Error');
|
||||||
|
INSERT INTO `sys_i18n` VALUES (798, 'dictData.cdr_cause_smsc.1', '无错误', 'No error');
|
||||||
|
INSERT INTO `sys_i18n` VALUES (799, 'dictData.cdr_cause_smsc.2', '通过SIP传输的消息源数据中SMSC提取参数错误', 'Error in SMSC extract parameter of Message Originating data via SIP');
|
||||||
|
INSERT INTO `sys_i18n` VALUES (800, 'dictData.cdr_cause_smsc.3', '消息来源数据中消息来源的服务中心编号缺失', 'Missing Service Center Number of Message Originating data in Message Originating');
|
||||||
|
INSERT INTO `sys_i18n` VALUES (801, 'dictData.cdr_cause_smsc.4', '未知服务中心号码消息来源数据中的消息来源', 'Unknown Service Center Number of Message Originating data in Message Originating');
|
||||||
|
INSERT INTO `sys_i18n` VALUES (802, 'dictData.cdr_cause_smsc.5', '消息源数据中缺少必需参数源地址(RP-OA)', 'Missing Required Parameter Originating Address(RP-OA) in Message Originating data');
|
||||||
|
INSERT INTO `sys_i18n` VALUES (803, 'dictData.cdr_cause_smsc.6', 'SMSC解码错误或消息来源数据', 'Error in smsc decoding Message Originating data');
|
||||||
|
INSERT INTO `sys_i18n` VALUES (804, 'dictData.cdr_cause_smsc.7', '消息发起路由失败(无法确定如何路由呼叫号码(通过4G/2G))', 'Message Originating routing failed(not know how to route called number(via 4G/2g))');
|
||||||
|
INSERT INTO `sys_i18n` VALUES (804, 'dictData.cdr_cause_smsc.8', 'SMSC 未收到 RP-ACK 数据包(cscf→smsc)', 'SMSC not receive RP-ACK pkg(cscf->smsc)');
|
||||||
|
INSERT INTO `sys_i18n` VALUES (806, 'dictData.cdr_cause_smsc.9', 'SMSC接收错误的RP-ACK数据包(cscf→smsc)', 'SMSC receive wrong RP-ACK pkg(cscf->smsc)');
|
||||||
|
INSERT INTO `sys_i18n` VALUES (807, 'dictData.cdr_cause_smsc.10', 'CAMEL 流程错误', 'CAMEL process error');
|
||||||
|
|
||||||
INSERT INTO `sys_i18n` VALUES (2000, 'menu.psap.agent', '座席', 'Agent');
|
INSERT INTO `sys_i18n` VALUES (2000, 'menu.psap.agent', '座席', 'Agent');
|
||||||
INSERT INTO `sys_i18n` VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information');
|
INSERT INTO `sys_i18n` VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information');
|
||||||
|
|||||||
@@ -205,6 +205,7 @@ INSERT INTO `sys_menu` VALUES (1145, 'menu.common.ftp', 2096, 1, '', '', '1', '1
|
|||||||
INSERT INTO `sys_menu` VALUES (1146, 'menu.common.ftpSync', 2096, 2, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:ftpSync', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
INSERT INTO `sys_menu` VALUES (1146, 'menu.common.ftpSync', 2096, 2, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:ftpSync', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||||
INSERT INTO `sys_menu` VALUES (1147, 'menu.common.download', 2096, 3, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:download', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
INSERT INTO `sys_menu` VALUES (1147, 'menu.common.download', 2096, 3, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:download', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||||
INSERT INTO `sys_menu` VALUES (1148, 'menu.common.delete', 2096, 4, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:delete', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
INSERT INTO `sys_menu` VALUES (1148, 'menu.common.delete', 2096, 4, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:delete', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||||
|
INSERT INTO `sys_menu` VALUES (1149, 'menu.neData.udmAuth.exportDec', 2000, 7, '', '', '1', '1', 'B', '1', '1', 'neData:udm-auth:export-dec', '#', '0', 'supervisor', 1757671977637, 'supervisor', 1757671977637, '');
|
||||||
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, '');
|
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, '');
|
||||||
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, '');
|
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, '');
|
||||||
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, '');
|
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, '');
|
||||||
|
|||||||
@@ -5,8 +5,9 @@
|
|||||||
DROP TABLE IF EXISTS `udm_auth`;
|
DROP TABLE IF EXISTS `udm_auth`;
|
||||||
CREATE TABLE `udm_auth` (
|
CREATE TABLE `udm_auth` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
`imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID',
|
`create_time` bigint NULL DEFAULT 0 COMMENT '创建时间',
|
||||||
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
|
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
|
||||||
|
`imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID',
|
||||||
`amf` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AMF',
|
`amf` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AMF',
|
||||||
`status` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '状态',
|
`status` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '状态',
|
||||||
`ki` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'ki',
|
`ki` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'ki',
|
||||||
|
|||||||
@@ -5,9 +5,10 @@
|
|||||||
DROP TABLE IF EXISTS `udm_sub`;
|
DROP TABLE IF EXISTS `udm_sub`;
|
||||||
CREATE TABLE `udm_sub` (
|
CREATE TABLE `udm_sub` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`create_time` bigint NULL DEFAULT 0 COMMENT '创建时间',
|
||||||
|
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
|
||||||
`imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID',
|
`imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID',
|
||||||
`msisdn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户电话号码',
|
`msisdn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户电话号码',
|
||||||
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
|
|
||||||
`am_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData',
|
`am_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData',
|
||||||
`ambr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData SubUeAMBRTemp',
|
`ambr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData SubUeAMBRTemp',
|
||||||
`nssai` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData SubSNSSAITemp',
|
`nssai` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData SubSNSSAITemp',
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
DROP TABLE IF EXISTS `udm_voip`;
|
DROP TABLE IF EXISTS `udm_voip`;
|
||||||
CREATE TABLE `udm_voip` (
|
CREATE TABLE `udm_voip` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`create_time` bigint NULL DEFAULT 0 COMMENT '创建时间',
|
||||||
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
|
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
|
||||||
`username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户名',
|
`username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户名',
|
||||||
`password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '密码',
|
`password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '密码',
|
||||||
|
|||||||
@@ -5,9 +5,10 @@
|
|||||||
DROP TABLE IF EXISTS `udm_volte_ims`;
|
DROP TABLE IF EXISTS `udm_volte_ims`;
|
||||||
CREATE TABLE `udm_volte_ims` (
|
CREATE TABLE `udm_volte_ims` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`create_time` bigint NULL DEFAULT 0 COMMENT '创建时间',
|
||||||
|
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
|
||||||
`imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID',
|
`imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID',
|
||||||
`msisdn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户电话号码',
|
`msisdn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户电话号码',
|
||||||
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
|
|
||||||
`tag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '0=VoIP, 1=VoLTE',
|
`tag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '0=VoIP, 1=VoLTE',
|
||||||
`vni` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'VNI',
|
`vni` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'VNI',
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
|
|||||||
@@ -203,6 +203,17 @@ REPLACE INTO `sys_dict_data` VALUES (170, 'sys_user_type', 'dictData.sys_user_ty
|
|||||||
REPLACE INTO `sys_dict_data` VALUES (171, 'sys_user_type', 'dictData.sys_user_type.ldap', 'LDAP', 2, '', 'lime', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO `sys_dict_data` VALUES (171, 'sys_user_type', 'dictData.sys_user_type.ldap', 'LDAP', 2, '', 'lime', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
REPLACE INTO `sys_dict_data` VALUES (172, 'sys_user_type', 'dictData.sys_user_type.smtp', 'SMTP', 3, '', 'magenta', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO `sys_dict_data` VALUES (172, 'sys_user_type', 'dictData.sys_user_type.smtp', 'SMTP', 3, '', 'magenta', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
REPLACE INTO `sys_dict_data` VALUES (173, 'sys_user_type', 'dictData.sys_user_type.oauth2', 'OAuth2', 4, '', 'gold', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO `sys_dict_data` VALUES (173, 'sys_user_type', 'dictData.sys_user_type.oauth2', 'OAuth2', 4, '', 'gold', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO `sys_dict_data` VALUES (174, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.0', '0', 0, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO `sys_dict_data` VALUES (175, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.1', '1', 1, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO `sys_dict_data` VALUES (176, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.2', '2', 2, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO `sys_dict_data` VALUES (177, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.3', '3', 3, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO `sys_dict_data` VALUES (178, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.4', '4', 4, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO `sys_dict_data` VALUES (179, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.5', '5', 5, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO `sys_dict_data` VALUES (180, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.6', '6', 6, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO `sys_dict_data` VALUES (181, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.7', '7', 7, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO `sys_dict_data` VALUES (182, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.8', '8', 8, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO `sys_dict_data` VALUES (183, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.9', '9', 9, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO `sys_dict_data` VALUES (184, 'cdr_cause_smsc', 'dictData.cdr_cause_smsc.10', '10', 10, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
|
||||||
SET FOREIGN_KEY_CHECKS = 1;
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
|
|
||||||
|
|||||||
@@ -57,5 +57,6 @@ REPLACE INTO `sys_dict_type` VALUES (71, 'dictType.trace_msg_type', 'trace_msg_t
|
|||||||
REPLACE INTO `sys_dict_type` VALUES (72, 'dictType.trace_msg_direct', 'trace_msg_direct', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO `sys_dict_type` VALUES (72, 'dictType.trace_msg_direct', 'trace_msg_direct', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
REPLACE INTO `sys_dict_type` VALUES (73, 'dictType.trace_interfaces', 'trace_interfaces', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO `sys_dict_type` VALUES (73, 'dictType.trace_interfaces', 'trace_interfaces', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
REPLACE INTO `sys_dict_type` VALUES (74, 'dictType.cdr_sip_code_cause', 'cdr_sip_code_cause', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO `sys_dict_type` VALUES (74, 'dictType.cdr_sip_code_cause', 'cdr_sip_code_cause', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO `sys_dict_type` VALUES (75, 'dictType.cdr_cause_smsc', 'cdr_cause_smsc', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
|
||||||
-- Dump completed on 2025-02-14 15:26:56
|
-- Dump completed on 2025-02-14 15:26:56
|
||||||
|
|||||||
@@ -808,6 +808,17 @@ REPLACE INTO `sys_i18n` VALUES (793, 'job.backup_export_kpi_remark', 'dataType:
|
|||||||
REPLACE INTO `sys_i18n` VALUES (794, 'menu.system.setting.homeSet', '主页设置', 'Home Set');
|
REPLACE INTO `sys_i18n` VALUES (794, 'menu.system.setting.homeSet', '主页设置', 'Home Set');
|
||||||
REPLACE INTO `sys_i18n` VALUES (795, 'menu.system.setting.reset', '重置', 'Reset');
|
REPLACE INTO `sys_i18n` VALUES (795, 'menu.system.setting.reset', '重置', 'Reset');
|
||||||
REPLACE INTO `sys_i18n` VALUES (796, 'menu.system.setting.backup', '备份还原', 'Backup Restore');
|
REPLACE INTO `sys_i18n` VALUES (796, 'menu.system.setting.backup', '备份还原', 'Backup Restore');
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (797, 'dictData.cdr_cause_smsc.0', '未知错误', 'Unknown Error');
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (798, 'dictData.cdr_cause_smsc.1', '无错误', 'No error');
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (799, 'dictData.cdr_cause_smsc.2', '通过SIP传输的消息源数据中SMSC提取参数错误', 'Error in SMSC extract parameter of Message Originating data via SIP');
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (800, 'dictData.cdr_cause_smsc.3', '消息来源数据中消息来源的服务中心编号缺失', 'Missing Service Center Number of Message Originating data in Message Originating');
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (801, 'dictData.cdr_cause_smsc.4', '未知服务中心号码消息来源数据中的消息来源', 'Unknown Service Center Number of Message Originating data in Message Originating');
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (802, 'dictData.cdr_cause_smsc.5', '消息源数据中缺少必需参数源地址(RP-OA)', 'Missing Required Parameter Originating Address(RP-OA) in Message Originating data');
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (803, 'dictData.cdr_cause_smsc.6', 'SMSC解码错误或消息来源数据', 'Error in smsc decoding Message Originating data');
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (804, 'dictData.cdr_cause_smsc.7', '消息发起路由失败(无法确定如何路由呼叫号码(通过4G/2G))', 'Message Originating routing failed(not know how to route called number(via 4G/2g))');
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (804, 'dictData.cdr_cause_smsc.8', 'SMSC 未收到 RP-ACK 数据包(cscf→smsc)', 'SMSC not receive RP-ACK pkg(cscf->smsc)');
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (806, 'dictData.cdr_cause_smsc.9', 'SMSC接收错误的RP-ACK数据包(cscf→smsc)', 'SMSC receive wrong RP-ACK pkg(cscf->smsc)');
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (807, 'dictData.cdr_cause_smsc.10', 'CAMEL 流程错误', 'CAMEL process error');
|
||||||
|
|
||||||
REPLACE INTO `sys_i18n` VALUES (2000, 'menu.psap.agent', '座席', 'Agent');
|
REPLACE INTO `sys_i18n` VALUES (2000, 'menu.psap.agent', '座席', 'Agent');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information');
|
REPLACE INTO `sys_i18n` VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information');
|
||||||
|
|||||||
@@ -227,6 +227,7 @@ REPLACE INTO `sys_menu` VALUES (1145, 'menu.common.ftp', 2096, 1, '', '', '1', '
|
|||||||
REPLACE INTO `sys_menu` VALUES (1146, 'menu.common.ftpSync', 2096, 2, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:ftpSync', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
REPLACE INTO `sys_menu` VALUES (1146, 'menu.common.ftpSync', 2096, 2, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:ftpSync', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||||
REPLACE INTO `sys_menu` VALUES (1147, 'menu.common.download', 2096, 3, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:download', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
REPLACE INTO `sys_menu` VALUES (1147, 'menu.common.download', 2096, 3, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:download', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||||
REPLACE INTO `sys_menu` VALUES (1148, 'menu.common.delete', 2096, 4, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:delete', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
REPLACE INTO `sys_menu` VALUES (1148, 'menu.common.delete', 2096, 4, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:delete', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||||
|
REPLACE INTO `sys_menu` VALUES (1149, 'menu.neData.udmAuth.exportDec', 2000, 7, '', '', '1', '1', 'B', '1', '1', 'neData:udm-auth:export-dec', '#', '0', 'supervisor', 1757671977637, 'supervisor', 1757671977637, '');
|
||||||
REPLACE 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, '');
|
REPLACE 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, '');
|
||||||
REPLACE 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, '');
|
REPLACE 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, '');
|
||||||
REPLACE 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, '');
|
REPLACE 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, '');
|
||||||
|
|||||||
@@ -3,8 +3,9 @@
|
|||||||
--
|
--
|
||||||
CREATE TABLE IF NOT EXISTS `udm_auth` (
|
CREATE TABLE IF NOT EXISTS `udm_auth` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
`imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID',
|
`create_time` bigint NULL DEFAULT 0 COMMENT '创建时间',
|
||||||
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
|
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
|
||||||
|
`imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID',
|
||||||
`amf` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AMF',
|
`amf` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AMF',
|
||||||
`status` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '状态',
|
`status` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '状态',
|
||||||
`ki` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'ki',
|
`ki` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'ki',
|
||||||
@@ -14,4 +15,9 @@ CREATE TABLE IF NOT EXISTS `udm_auth` (
|
|||||||
UNIQUE KEY `uk_auth_imsi_ne` (`imsi`,`ne_id`) USING BTREE COMMENT 'imsi_neid唯一主键'
|
UNIQUE KEY `uk_auth_imsi_ne` (`imsi`,`ne_id`) USING BTREE COMMENT 'imsi_neid唯一主键'
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='UDM用户数据_鉴权';
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='UDM用户数据_鉴权';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- COLUMN for udm_auth
|
||||||
|
-- ----------------------------
|
||||||
|
ALTER TABLE `udm_auth` ADD COLUMN `create_time` bigint NULL DEFAULT 0 COMMENT '创建时间' AFTER `id`;
|
||||||
|
|
||||||
-- Dump completed on 2025-02-14 15:26:56
|
-- Dump completed on 2025-02-14 15:26:56
|
||||||
|
|||||||
@@ -3,9 +3,10 @@
|
|||||||
--
|
--
|
||||||
CREATE TABLE IF NOT EXISTS `udm_sub` (
|
CREATE TABLE IF NOT EXISTS `udm_sub` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`create_time` bigint NULL DEFAULT 0 COMMENT '创建时间',
|
||||||
|
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
|
||||||
`imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID',
|
`imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID',
|
||||||
`msisdn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户电话号码',
|
`msisdn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户电话号码',
|
||||||
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
|
|
||||||
`am_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData',
|
`am_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData',
|
||||||
`ambr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData SubUeAMBRTemp',
|
`ambr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData SubUeAMBRTemp',
|
||||||
`nssai` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData SubSNSSAITemp',
|
`nssai` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'AmData SubSNSSAITemp',
|
||||||
@@ -37,4 +38,9 @@ CREATE TABLE IF NOT EXISTS `udm_sub` (
|
|||||||
UNIQUE KEY `uk_sub_imsi_ne` (`imsi`,`ne_id`) USING BTREE COMMENT 'imsi_neid唯一主键'
|
UNIQUE KEY `uk_sub_imsi_ne` (`imsi`,`ne_id`) USING BTREE COMMENT 'imsi_neid唯一主键'
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UDM用户数据_签约';
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UDM用户数据_签约';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- COLUMN for udm_sub
|
||||||
|
-- ----------------------------
|
||||||
|
ALTER TABLE `udm_sub` ADD COLUMN `create_time` bigint NULL DEFAULT 0 COMMENT '创建时间' AFTER `id`;
|
||||||
|
|
||||||
-- Dump completed on 2025-02-14 15:26:56
|
-- Dump completed on 2025-02-14 15:26:56
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
--
|
--
|
||||||
CREATE TABLE IF NOT EXISTS `udm_voip` (
|
CREATE TABLE IF NOT EXISTS `udm_voip` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`create_time` bigint NULL DEFAULT 0 COMMENT '创建时间',
|
||||||
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
|
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
|
||||||
`username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户名',
|
`username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户名',
|
||||||
`password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '密码',
|
`password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '密码',
|
||||||
@@ -10,4 +11,9 @@ CREATE TABLE IF NOT EXISTS `udm_voip` (
|
|||||||
UNIQUE KEY `uk_voip_user_ne` (`username`,`ne_id`) USING BTREE COMMENT 'user_neid唯一主键'
|
UNIQUE KEY `uk_voip_user_ne` (`username`,`ne_id`) USING BTREE COMMENT 'user_neid唯一主键'
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='UDM用户数据_VOIP';
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='UDM用户数据_VOIP';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- COLUMN for udm_voip
|
||||||
|
-- ----------------------------
|
||||||
|
ALTER TABLE `udm_voip` ADD COLUMN `create_time` bigint NULL DEFAULT 0 COMMENT '创建时间' AFTER `id`;
|
||||||
|
|
||||||
-- Dump completed on 2025-04-22 15:26:56
|
-- Dump completed on 2025-04-22 15:26:56
|
||||||
|
|||||||
@@ -3,9 +3,10 @@
|
|||||||
--
|
--
|
||||||
CREATE TABLE IF NOT EXISTS `udm_volte_ims` (
|
CREATE TABLE IF NOT EXISTS `udm_volte_ims` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`create_time` bigint NULL DEFAULT 0 COMMENT '创建时间',
|
||||||
|
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
|
||||||
`imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID',
|
`imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID',
|
||||||
`msisdn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户电话号码',
|
`msisdn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户电话号码',
|
||||||
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
|
|
||||||
`tag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '0=VoIP, 1=VoLTE',
|
`tag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '0=VoIP, 1=VoLTE',
|
||||||
`vni` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'VNI',
|
`vni` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'VNI',
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
@@ -13,4 +14,9 @@ CREATE TABLE IF NOT EXISTS `udm_volte_ims` (
|
|||||||
KEY `idx_volte_tag` (`tag`) USING BTREE COMMENT 'tag索引'
|
KEY `idx_volte_tag` (`tag`) USING BTREE COMMENT 'tag索引'
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UDM用户数据_VolteIMS用户';
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UDM用户数据_VolteIMS用户';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- COLUMN for udm_volte_ims
|
||||||
|
-- ----------------------------
|
||||||
|
ALTER TABLE `udm_volte_ims` ADD COLUMN `create_time` bigint NULL DEFAULT 0 COMMENT '创建时间' AFTER `id`;
|
||||||
|
|
||||||
-- Dump completed on 2025-04-22 15:26:56
|
-- Dump completed on 2025-04-22 15:26:56
|
||||||
|
|||||||
@@ -422,12 +422,13 @@ func (s BackupExportCDRProcessor) exportSMSC(query map[string]string, fileType s
|
|||||||
"Service Type",
|
"Service Type",
|
||||||
"Caller",
|
"Caller",
|
||||||
"Called",
|
"Called",
|
||||||
"Result",
|
"Result Code",
|
||||||
|
"Result Cause",
|
||||||
"Time",
|
"Time",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
// 读取字典数据 CDR 原因码
|
// 读取字典数据 CDR 原因码
|
||||||
dictCDRCauseCode := s.sysDictService.FindByType("cdr_cause_code")
|
dictCDRSMSCCauseCode := s.sysDictService.FindByType("cdr_cause_smsc")
|
||||||
for _, row := range rows {
|
for _, row := range rows {
|
||||||
// 解析 JSON 字符串为 map
|
// 解析 JSON 字符串为 map
|
||||||
var cdrJSON map[string]interface{}
|
var cdrJSON map[string]interface{}
|
||||||
@@ -457,19 +458,20 @@ func (s BackupExportCDRProcessor) exportSMSC(query map[string]string, fileType s
|
|||||||
caller = v.(string)
|
caller = v.(string)
|
||||||
}
|
}
|
||||||
// 呼叫结果 0失败,1成功
|
// 呼叫结果 0失败,1成功
|
||||||
callResult := "Fail"
|
callResult := "FAILED"
|
||||||
if v, ok := cdrJSON["result"]; ok && v != nil {
|
if v, ok := cdrJSON["result"]; ok && v != nil {
|
||||||
resultVal := parse.Number(v)
|
resultVal := parse.Number(v)
|
||||||
if resultVal == 1 {
|
if resultVal == 1 {
|
||||||
callResult = "Success"
|
callResult = "SUCCESS"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 结果原因
|
// 结果原因
|
||||||
if v, ok := cdrJSON["cause"]; ok && v != nil && callResult == "Fail" {
|
callCause := "UNKNOW ERROR"
|
||||||
|
if v, ok := cdrJSON["cause"]; ok && v != nil {
|
||||||
cause := fmt.Sprint(v)
|
cause := fmt.Sprint(v)
|
||||||
for _, v := range dictCDRCauseCode {
|
for _, v := range dictCDRSMSCCauseCode {
|
||||||
if cause == v.DataValue {
|
if cause == v.DataValue {
|
||||||
callResult = fmt.Sprintf("%s, %s", callResult, i18n.TKey(language, v.DataLabel))
|
callCause = i18n.TKey(language, v.DataLabel)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -492,6 +494,7 @@ func (s BackupExportCDRProcessor) exportSMSC(query map[string]string, fileType s
|
|||||||
caller,
|
caller,
|
||||||
called,
|
called,
|
||||||
callResult,
|
callResult,
|
||||||
|
callCause,
|
||||||
timeStr,
|
timeStr,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -511,11 +514,12 @@ func (s BackupExportCDRProcessor) exportSMSC(query map[string]string, fileType s
|
|||||||
"D1": "Service Type",
|
"D1": "Service Type",
|
||||||
"E1": "Caller",
|
"E1": "Caller",
|
||||||
"F1": "Called",
|
"F1": "Called",
|
||||||
"G1": "Result",
|
"G1": "Result Code",
|
||||||
"H1": "Time",
|
"H1": "Result Cause",
|
||||||
|
"I1": "Time",
|
||||||
}
|
}
|
||||||
// 读取字典数据 CDR 原因码
|
// 读取字典数据 CDR 原因码
|
||||||
dictCDRCauseCode := s.sysDictService.FindByType("cdr_cause_code")
|
dictCDRSMSCCauseCode := s.sysDictService.FindByType("cdr_cause_smsc")
|
||||||
// 从第二行开始的数据
|
// 从第二行开始的数据
|
||||||
dataCells := make([]map[string]any, 0)
|
dataCells := make([]map[string]any, 0)
|
||||||
for i, row := range rows {
|
for i, row := range rows {
|
||||||
@@ -548,19 +552,20 @@ func (s BackupExportCDRProcessor) exportSMSC(query map[string]string, fileType s
|
|||||||
caller = v.(string)
|
caller = v.(string)
|
||||||
}
|
}
|
||||||
// 呼叫结果 0失败,1成功
|
// 呼叫结果 0失败,1成功
|
||||||
callResult := "Fail"
|
callResult := "FAILED"
|
||||||
if v, ok := cdrJSON["result"]; ok && v != nil {
|
if v, ok := cdrJSON["result"]; ok && v != nil {
|
||||||
resultVal := parse.Number(v)
|
resultVal := parse.Number(v)
|
||||||
if resultVal == 1 {
|
if resultVal == 1 {
|
||||||
callResult = "Success"
|
callResult = "SUCCESS"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 结果原因
|
// 结果原因
|
||||||
if v, ok := cdrJSON["cause"]; ok && v != nil && callResult == "Fail" {
|
callCause := "UNKNOW ERROR"
|
||||||
|
if v, ok := cdrJSON["cause"]; ok && v != nil {
|
||||||
cause := fmt.Sprint(v)
|
cause := fmt.Sprint(v)
|
||||||
for _, v := range dictCDRCauseCode {
|
for _, v := range dictCDRSMSCCauseCode {
|
||||||
if cause == v.DataValue {
|
if cause == v.DataValue {
|
||||||
callResult = fmt.Sprintf("%s, %s", callResult, i18n.TKey(language, v.DataLabel))
|
callCause = i18n.TKey(language, v.DataLabel)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -583,7 +588,8 @@ func (s BackupExportCDRProcessor) exportSMSC(query map[string]string, fileType s
|
|||||||
"E" + idx: caller,
|
"E" + idx: caller,
|
||||||
"F" + idx: called,
|
"F" + idx: called,
|
||||||
"G" + idx: callResult,
|
"G" + idx: callResult,
|
||||||
"H" + idx: timeStr,
|
"H" + idx: callCause,
|
||||||
|
"I" + idx: timeStr,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 导出数据表格
|
// 导出数据表格
|
||||||
|
|||||||
@@ -340,3 +340,85 @@ func (s IMSController) KPIBusyWeek(c *gin.Context) {
|
|||||||
data := s.kpiReportService.IMSBusyWeek(neInfo.RmUID, query.WeekStart, query.WeekEnd)
|
data := s.kpiReportService.IMSBusyWeek(neInfo.RmUID, query.WeekStart, query.WeekEnd)
|
||||||
c.JSON(200, resp.OkData(data))
|
c.JSON(200, resp.OkData(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CDR MOS
|
||||||
|
//
|
||||||
|
// GET /cdr/mos-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 MOS hour statistics
|
||||||
|
// @Description MOS hour statistics
|
||||||
|
// @Router /neData/ims/cdr/mos-hour [get]
|
||||||
|
func (s IMSController) CDRMOSHour(c *gin.Context) {
|
||||||
|
language := reqctx.AcceptLanguage(c)
|
||||||
|
var query struct {
|
||||||
|
NeID string `form:"neId" 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.FindByNeTypeAndNeID("IMS", query.NeID)
|
||||||
|
if neInfo.NeId != query.NeID || neInfo.IP == "" {
|
||||||
|
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
data := s.cdrEventService.IMSCDRMOSHour(neInfo.RmUID, query.Timestamp)
|
||||||
|
c.JSON(200, resp.OkData(data))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CDR Call Connection Time
|
||||||
|
//
|
||||||
|
// GET /cdr/cct-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 MOS hour statistics
|
||||||
|
// @Description MOS hour statistics
|
||||||
|
// @Router /neData/ims/cdr/cct-hour [get]
|
||||||
|
func (s IMSController) CDRCCTHour(c *gin.Context) {
|
||||||
|
language := reqctx.AcceptLanguage(c)
|
||||||
|
var query struct {
|
||||||
|
NeID string `form:"neId" 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.FindByNeTypeAndNeID("IMS", query.NeID)
|
||||||
|
if neInfo.NeId != query.NeID || neInfo.IP == "" {
|
||||||
|
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
data := s.cdrEventService.IMSCDRCCTHour(neInfo.RmUID, query.Timestamp)
|
||||||
|
c.JSON(200, resp.OkData(data))
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,7 +2,9 @@ package controller
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -499,13 +501,19 @@ func (s *UDMAuthController) Export(c *gin.Context) {
|
|||||||
if fileType == "csv" {
|
if fileType == "csv" {
|
||||||
// 转换数据
|
// 转换数据
|
||||||
data := [][]string{}
|
data := [][]string{}
|
||||||
data = append(data, []string{"imsi", "ki", "algo", "amf", "opc"})
|
data = append(data, []string{"imsi", "ki", "algo", "amf", "opc", "create_time"})
|
||||||
for _, v := range rows {
|
for _, v := range rows {
|
||||||
opc := v.Opc
|
opc := v.Opc
|
||||||
if opc == "-" {
|
if opc == "-" {
|
||||||
opc = ""
|
opc = ""
|
||||||
}
|
}
|
||||||
data = append(data, []string{v.IMSI, v.Ki, v.AlgoIndex, v.Amf, opc})
|
createTime := ""
|
||||||
|
if v.CreateTime == 0 {
|
||||||
|
createTime = time.Now().Format(time.RFC3339)
|
||||||
|
} else {
|
||||||
|
createTime = time.UnixMilli(v.CreateTime).Format(time.RFC3339)
|
||||||
|
}
|
||||||
|
data = append(data, []string{v.IMSI, v.Ki, v.AlgoIndex, v.Amf, opc, createTime})
|
||||||
}
|
}
|
||||||
// 输出到文件
|
// 输出到文件
|
||||||
if err := file.WriterFileCSV(data, filePath); err != nil {
|
if err := file.WriterFileCSV(data, filePath); err != nil {
|
||||||
@@ -522,7 +530,13 @@ func (s *UDMAuthController) Export(c *gin.Context) {
|
|||||||
if opc == "-" {
|
if opc == "-" {
|
||||||
opc = ""
|
opc = ""
|
||||||
}
|
}
|
||||||
data = append(data, []string{v.IMSI, v.Ki, v.AlgoIndex, v.Amf, opc})
|
createTime := ""
|
||||||
|
if v.CreateTime == 0 {
|
||||||
|
createTime = time.Now().Format(time.RFC3339)
|
||||||
|
} else {
|
||||||
|
createTime = time.UnixMilli(v.CreateTime).Format(time.RFC3339)
|
||||||
|
}
|
||||||
|
data = append(data, []string{v.IMSI, v.Ki, v.AlgoIndex, v.Amf, opc, createTime})
|
||||||
}
|
}
|
||||||
// 输出到文件
|
// 输出到文件
|
||||||
if err := file.WriterFileTXTLine(data, ",", filePath); err != nil {
|
if err := file.WriterFileTXTLine(data, ",", filePath); err != nil {
|
||||||
@@ -645,3 +659,77 @@ func (s *UDMAuthController) Import(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
c.JSON(200, resp.OkMsg(resultMsg))
|
c.JSON(200, resp.OkMsg(resultMsg))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UDM鉴权用户导出解密数据
|
||||||
|
//
|
||||||
|
// GET /export-dec
|
||||||
|
//
|
||||||
|
// @Tags network_data/udm/auth
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param data body object true "Request Param"
|
||||||
|
// @Success 200 {object} object "Response Results"
|
||||||
|
// @Security TokenAuth
|
||||||
|
// @Summary UDM Authenticated User Export Decrypted Data
|
||||||
|
// @Description UDM Authenticated User Export Decrypted Data
|
||||||
|
// @Router /neData/udm/auth/export-dec [get]
|
||||||
|
func (s *UDMAuthController) ExportDec(c *gin.Context) {
|
||||||
|
// 查询结果,根据查询条件结果,单页最大值限制
|
||||||
|
neId := c.Query("neId")
|
||||||
|
if neId == "" {
|
||||||
|
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 网元主机的Telnet客户端
|
||||||
|
telnetClient, err := s.neInfoService.NeRunTelnetClient("UDM", neId, 1)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer telnetClient.Close()
|
||||||
|
|
||||||
|
// 发送MML
|
||||||
|
// 导出解密的ki和opc 需要执行 dec authdat:imsi=all
|
||||||
|
// 生成文件 /user/local/etc/udm/authdata.txt
|
||||||
|
cmd := "dec authdat:imsi=all"
|
||||||
|
data, err := telnet.ConvertToStr(telnetClient, cmd)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 命令ok时
|
||||||
|
if strings.Contains(data, "ok") {
|
||||||
|
// 网元主机的SSH客户端
|
||||||
|
sshClient, err := s.neInfoService.NeRunSSHClient("UDM", neId)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer sshClient.Close()
|
||||||
|
// 网元主机的SSH客户端进行文件传输
|
||||||
|
sftpClient, err := sshClient.NewClientSFTP()
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer sftpClient.Close()
|
||||||
|
|
||||||
|
// 复制到本地
|
||||||
|
nePath := "/usr/local/etc/udm/authdata.txt"
|
||||||
|
localFilePath := filepath.Join("/tmp/omc/pull", filepath.Base(nePath))
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
localFilePath = fmt.Sprintf("C:%s", localFilePath)
|
||||||
|
}
|
||||||
|
if err = sftpClient.CopyFileRemoteToLocal(nePath, localFilePath); err != nil {
|
||||||
|
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
sshClient.RunCMD(fmt.Sprintf("sudo rm -rf %s", nePath))
|
||||||
|
defer os.Remove(localFilePath)
|
||||||
|
c.FileAttachment(localFilePath, filepath.Base(nePath))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.JSON(200, resp.ErrMsg("unexpected result"))
|
||||||
|
}
|
||||||
|
|||||||
@@ -505,10 +505,16 @@ func (s *UDMSubController) Export(c *gin.Context) {
|
|||||||
if fileType == "csv" {
|
if fileType == "csv" {
|
||||||
// 转换数据
|
// 转换数据
|
||||||
data := [][]string{}
|
data := [][]string{}
|
||||||
data = append(data, []string{"IMSI", "MSISDN", "UeAmbrTpl", "NssaiTpl", "AreaForbiddenTpl", "ServiceAreaRestrictionTpl", "RatRestrictions", "CnTypeRestrictions", "SmfSel", "SmData", "EPSDat"})
|
data = append(data, []string{"IMSI", "MSISDN", "UeAmbrTpl", "NssaiTpl", "AreaForbiddenTpl", "ServiceAreaRestrictionTpl", "RatRestrictions", "CnTypeRestrictions", "SmfSel", "SmData", "EPSDat", "CreateTime"})
|
||||||
for _, v := range rows {
|
for _, v := range rows {
|
||||||
epsDat := fmt.Sprintf("%s,%s,%s,%s,%s,%s,%s,%s", v.EpsFlag, v.EpsOdb, v.HplmnOdb, v.Ard, v.Epstpl, v.ContextId, v.ApnContext, v.StaticIp)
|
epsDat := fmt.Sprintf("%s,%s,%s,%s,%s,%s,%s,%s", v.EpsFlag, v.EpsOdb, v.HplmnOdb, v.Ard, v.Epstpl, v.ContextId, v.ApnContext, v.StaticIp)
|
||||||
data = append(data, []string{v.IMSI, v.MSISDN, v.UeAmbrTpl, v.NssaiTpl, v.AreaForbiddenTpl, v.ServiceAreaRestrictionTpl, v.RatRestrictions, v.CnTypeRestrictions, v.SmfSel, v.SmData, epsDat})
|
createTime := ""
|
||||||
|
if v.CreateTime == 0 {
|
||||||
|
createTime = time.Now().Format(time.RFC3339)
|
||||||
|
} else {
|
||||||
|
createTime = time.UnixMilli(v.CreateTime).Format(time.RFC3339)
|
||||||
|
}
|
||||||
|
data = append(data, []string{v.IMSI, v.MSISDN, v.UeAmbrTpl, v.NssaiTpl, v.AreaForbiddenTpl, v.ServiceAreaRestrictionTpl, v.RatRestrictions, v.CnTypeRestrictions, v.SmfSel, v.SmData, epsDat, createTime})
|
||||||
}
|
}
|
||||||
// 输出到文件
|
// 输出到文件
|
||||||
if err := file.WriterFileCSV(data, filePath); err != nil {
|
if err := file.WriterFileCSV(data, filePath); err != nil {
|
||||||
@@ -522,7 +528,13 @@ func (s *UDMSubController) Export(c *gin.Context) {
|
|||||||
data := [][]string{}
|
data := [][]string{}
|
||||||
for _, v := range rows {
|
for _, v := range rows {
|
||||||
epsDat := fmt.Sprintf("%s,%s,%s,%s,%s,%s,%s,%s", v.EpsFlag, v.EpsOdb, v.HplmnOdb, v.Ard, v.Epstpl, v.ContextId, v.ApnContext, v.StaticIp)
|
epsDat := fmt.Sprintf("%s,%s,%s,%s,%s,%s,%s,%s", v.EpsFlag, v.EpsOdb, v.HplmnOdb, v.Ard, v.Epstpl, v.ContextId, v.ApnContext, v.StaticIp)
|
||||||
data = append(data, []string{v.IMSI, v.MSISDN, v.UeAmbrTpl, v.NssaiTpl, v.AreaForbiddenTpl, v.ServiceAreaRestrictionTpl, v.RatRestrictions, v.CnTypeRestrictions, v.SmfSel, v.SmData, epsDat})
|
createTime := ""
|
||||||
|
if v.CreateTime == 0 {
|
||||||
|
createTime = time.Now().Format(time.RFC3339)
|
||||||
|
} else {
|
||||||
|
createTime = time.UnixMilli(v.CreateTime).Format(time.RFC3339)
|
||||||
|
}
|
||||||
|
data = append(data, []string{v.IMSI, v.MSISDN, v.UeAmbrTpl, v.NssaiTpl, v.AreaForbiddenTpl, v.ServiceAreaRestrictionTpl, v.RatRestrictions, v.CnTypeRestrictions, v.SmfSel, v.SmData, epsDat, createTime})
|
||||||
}
|
}
|
||||||
// 输出到文件
|
// 输出到文件
|
||||||
if err := file.WriterFileTXTLine(data, ",", filePath); err != nil {
|
if err := file.WriterFileTXTLine(data, ",", filePath); err != nil {
|
||||||
|
|||||||
@@ -437,9 +437,15 @@ func (s *UDMVOIPController) Export(c *gin.Context) {
|
|||||||
if fileType == "csv" {
|
if fileType == "csv" {
|
||||||
// 转换数据
|
// 转换数据
|
||||||
data := [][]string{}
|
data := [][]string{}
|
||||||
data = append(data, []string{"username", "password"})
|
data = append(data, []string{"username", "password", "createTime"})
|
||||||
for _, v := range rows {
|
for _, v := range rows {
|
||||||
data = append(data, []string{v.UserName, v.Password})
|
createTime := ""
|
||||||
|
if v.CreateTime == 0 {
|
||||||
|
createTime = time.Now().Format(time.RFC3339)
|
||||||
|
} else {
|
||||||
|
createTime = time.UnixMilli(v.CreateTime).Format(time.RFC3339)
|
||||||
|
}
|
||||||
|
data = append(data, []string{v.UserName, v.Password, createTime})
|
||||||
}
|
}
|
||||||
// 输出到文件
|
// 输出到文件
|
||||||
if err := file.WriterFileCSV(data, filePath); err != nil {
|
if err := file.WriterFileCSV(data, filePath); err != nil {
|
||||||
@@ -452,7 +458,13 @@ func (s *UDMVOIPController) Export(c *gin.Context) {
|
|||||||
// 转换数据
|
// 转换数据
|
||||||
data := [][]string{}
|
data := [][]string{}
|
||||||
for _, v := range rows {
|
for _, v := range rows {
|
||||||
data = append(data, []string{v.UserName, v.Password})
|
createTime := ""
|
||||||
|
if v.CreateTime == 0 {
|
||||||
|
createTime = time.Now().Format(time.RFC3339)
|
||||||
|
} else {
|
||||||
|
createTime = time.UnixMilli(v.CreateTime).Format(time.RFC3339)
|
||||||
|
}
|
||||||
|
data = append(data, []string{v.UserName, v.Password, createTime})
|
||||||
}
|
}
|
||||||
// 输出到文件
|
// 输出到文件
|
||||||
if err := file.WriterFileTXTLine(data, ",", filePath); err != nil {
|
if err := file.WriterFileTXTLine(data, ",", filePath); err != nil {
|
||||||
|
|||||||
@@ -481,9 +481,15 @@ func (s *UDMVolteIMSController) Export(c *gin.Context) {
|
|||||||
if fileType == "csv" {
|
if fileType == "csv" {
|
||||||
// 转换数据
|
// 转换数据
|
||||||
data := [][]string{}
|
data := [][]string{}
|
||||||
data = append(data, []string{"IMSI", "MSISDN", "TAG", "VNI"})
|
data = append(data, []string{"IMSI", "MSISDN", "TAG", "VNI", "CreateTime"})
|
||||||
for _, v := range rows {
|
for _, v := range rows {
|
||||||
data = append(data, []string{v.IMSI, v.MSISDN, v.Tag, v.VNI})
|
createTime := ""
|
||||||
|
if v.CreateTime == 0 {
|
||||||
|
createTime = time.Now().Format(time.RFC3339)
|
||||||
|
} else {
|
||||||
|
createTime = time.UnixMilli(v.CreateTime).Format(time.RFC3339)
|
||||||
|
}
|
||||||
|
data = append(data, []string{v.IMSI, v.MSISDN, v.Tag, v.VNI, createTime})
|
||||||
}
|
}
|
||||||
// 输出到文件
|
// 输出到文件
|
||||||
if err := file.WriterFileCSV(data, filePath); err != nil {
|
if err := file.WriterFileCSV(data, filePath); err != nil {
|
||||||
@@ -496,7 +502,13 @@ func (s *UDMVolteIMSController) Export(c *gin.Context) {
|
|||||||
// 转换数据
|
// 转换数据
|
||||||
data := [][]string{}
|
data := [][]string{}
|
||||||
for _, v := range rows {
|
for _, v := range rows {
|
||||||
data = append(data, []string{v.IMSI, v.MSISDN, v.Tag, v.VNI})
|
createTime := ""
|
||||||
|
if v.CreateTime == 0 {
|
||||||
|
createTime = time.Now().Format(time.RFC3339)
|
||||||
|
} else {
|
||||||
|
createTime = time.UnixMilli(v.CreateTime).Format(time.RFC3339)
|
||||||
|
}
|
||||||
|
data = append(data, []string{v.IMSI, v.MSISDN, v.Tag, v.VNI, createTime})
|
||||||
}
|
}
|
||||||
// 输出到文件
|
// 输出到文件
|
||||||
if err := file.WriterFileTXTLine(data, ",", filePath); err != nil {
|
if err := file.WriterFileTXTLine(data, ",", filePath); err != nil {
|
||||||
|
|||||||
@@ -2,13 +2,15 @@ package model
|
|||||||
|
|
||||||
// UDMAuthUser UDM鉴权用户 udm_auth
|
// UDMAuthUser UDM鉴权用户 udm_auth
|
||||||
type UDMAuthUser struct {
|
type UDMAuthUser struct {
|
||||||
ID string `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 默认ID
|
ID string `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 默认ID
|
||||||
IMSI string `json:"imsi" gorm:"column:imsi"` // SIM卡/USIM卡ID
|
CreateTime int64 `json:"createTime" gorm:"column:create_time"` // 创建时间
|
||||||
NeId string `json:"neId" gorm:"column:ne_id"` // UDM网元标识
|
NeId string `json:"neId" gorm:"column:ne_id"` // UDM网元标识
|
||||||
Amf string `json:"amf" gorm:"column:amf"` // AMF
|
IMSI string `json:"imsi" gorm:"column:imsi"` // SIM卡/USIM卡ID
|
||||||
Ki string `json:"ki" gorm:"column:ki"` // ki
|
|
||||||
AlgoIndex string `json:"algoIndex" gorm:"column:algo_index"` // algoIndex
|
Amf string `json:"amf" gorm:"column:amf"` // AMF
|
||||||
Opc string `json:"opc" gorm:"column:opc"` // OPC
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
// TableName 表名称
|
// TableName 表名称
|
||||||
|
|||||||
@@ -2,10 +2,11 @@ package model
|
|||||||
|
|
||||||
// UDMSubUser UDM签约用户 udm_sub
|
// UDMSubUser UDM签约用户 udm_sub
|
||||||
type UDMSubUser struct {
|
type UDMSubUser struct {
|
||||||
ID string `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键
|
ID string `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键
|
||||||
IMSI string `json:"imsi" gorm:"column:imsi"` // SIM卡/USIM卡ID
|
CreateTime int64 `json:"createTime" gorm:"column:create_time"` // 创建时间
|
||||||
MSISDN string `json:"msisdn" gorm:"column:msisdn"` // 用户电话号码
|
NeId string `json:"neId" gorm:"column:ne_id"` // UDM网元标识
|
||||||
NeId string `json:"neId" gorm:"column:ne_id"` // 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
|
AmDat string `json:"amDat" gorm:"column:am_dat"` // AmData
|
||||||
UeAmbrTpl string `json:"ambr" gorm:"column:ambr"` // AmData SubUeAMBRTemp
|
UeAmbrTpl string `json:"ambr" gorm:"column:ambr"` // AmData SubUeAMBRTemp
|
||||||
|
|||||||
@@ -2,8 +2,9 @@ package model
|
|||||||
|
|
||||||
// UDMVOIPUser UDMVOIP用户 udm_voip
|
// UDMVOIPUser UDMVOIP用户 udm_voip
|
||||||
type UDMVOIPUser struct {
|
type UDMVOIPUser struct {
|
||||||
ID string `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键
|
ID string `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键
|
||||||
NeId string `json:"neId" gorm:"column:ne_id"` // UDM网元标识
|
CreateTime int64 `json:"createTime" gorm:"column:create_time"` // 创建时间
|
||||||
|
NeId string `json:"neId" gorm:"column:ne_id"` // UDM网元标识
|
||||||
|
|
||||||
UserName string `json:"username" gorm:"column:username"` // 用户名
|
UserName string `json:"username" gorm:"column:username"` // 用户名
|
||||||
Password string `json:"password" gorm:"column:password"` // 密码
|
Password string `json:"password" gorm:"column:password"` // 密码
|
||||||
|
|||||||
@@ -2,10 +2,11 @@ package model
|
|||||||
|
|
||||||
// UDMVolteIMSUser UDMVolteIMS用户 udm_volte_ims
|
// UDMVolteIMSUser UDMVolteIMS用户 udm_volte_ims
|
||||||
type UDMVolteIMSUser struct {
|
type UDMVolteIMSUser struct {
|
||||||
ID string `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键
|
ID string `json:"id" gorm:"column:id;primaryKey;autoIncrement"` // 主键
|
||||||
IMSI string `json:"imsi" gorm:"column:imsi"` // SIM卡/USIM卡ID
|
CreateTime int64 `json:"createTime" gorm:"column:create_time"` // 创建时间
|
||||||
MSISDN string `json:"msisdn" gorm:"column:msisdn"` // 用户电话号码
|
NeId string `json:"neId" gorm:"column:ne_id"` // UDM网元标识
|
||||||
NeId string `json:"neId" gorm:"column:ne_id"` // 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
|
Tag string `json:"tag" gorm:"column:tag"` // 0=VoIP, 1=VoLTE
|
||||||
VNI string `json:"vni" gorm:"column:vni"` // VNI
|
VNI string `json:"vni" gorm:"column:vni"` // VNI
|
||||||
|
|||||||
@@ -192,6 +192,14 @@ func Setup(router *gin.Engine) {
|
|||||||
middleware.AuthorizeUser(nil),
|
middleware.AuthorizeUser(nil),
|
||||||
controller.NewIMS.KPIBusyWeek,
|
controller.NewIMS.KPIBusyWeek,
|
||||||
)
|
)
|
||||||
|
imsGroup.GET("/cdr/mos-hour",
|
||||||
|
middleware.AuthorizeUser(nil),
|
||||||
|
controller.NewIMS.CDRMOSHour,
|
||||||
|
)
|
||||||
|
imsGroup.GET("/cdr/cct-hour",
|
||||||
|
middleware.AuthorizeUser(nil),
|
||||||
|
controller.NewIMS.CDRCCTHour,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 网元SMSC
|
// 网元SMSC
|
||||||
@@ -380,6 +388,11 @@ func Setup(router *gin.Engine) {
|
|||||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.udmAuth", collectlogs.BUSINESS_TYPE_IMPORT)),
|
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.udmAuth", collectlogs.BUSINESS_TYPE_IMPORT)),
|
||||||
controller.NewUDMAuth.Import,
|
controller.NewUDMAuth.Import,
|
||||||
)
|
)
|
||||||
|
udmAuthGroup.GET("/export-dec",
|
||||||
|
middleware.AuthorizeUser(map[string][]string{"hasPerms": {"neData:udm-auth:export-dec"}}),
|
||||||
|
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.udmAuth", collectlogs.BUSINESS_TYPE_EXPORT)),
|
||||||
|
controller.NewUDMAuth.ExportDec,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 网元UDM 签约用户信息
|
// 网元UDM 签约用户信息
|
||||||
|
|||||||
@@ -74,6 +74,9 @@ func (r CDREvent) SelectByPage(neType string, query map[string]string) ([]model.
|
|||||||
tx = tx.Where("JSON_EXTRACT(cdr_json, '$.servedMSISDN') like ?", fmt.Sprintf("%%%s%%", v))
|
tx = tx.Where("JSON_EXTRACT(cdr_json, '$.servedMSISDN') like ?", fmt.Sprintf("%%%s%%", v))
|
||||||
}
|
}
|
||||||
case "IMS":
|
case "IMS":
|
||||||
|
if v, ok := query["recordType"]; ok && v != "" {
|
||||||
|
tx = tx.Where("JSON_EXTRACT(cdr_json, '$.recordType') = ?", fmt.Sprintf("'%s'", v))
|
||||||
|
}
|
||||||
if v, ok := query["callerParty"]; ok && v != "" {
|
if v, ok := query["callerParty"]; ok && v != "" {
|
||||||
tx = tx.Where("JSON_EXTRACT(cdr_json, '$.callerParty') like ?", fmt.Sprintf("%%%s%%", v))
|
tx = tx.Where("JSON_EXTRACT(cdr_json, '$.callerParty') like ?", fmt.Sprintf("%%%s%%", v))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ type UEEvent struct{}
|
|||||||
func (r UEEvent) SelectByPage(neType string, query map[string]string) ([]model.UEEvent, int64) {
|
func (r UEEvent) SelectByPage(neType string, query map[string]string) ([]model.UEEvent, int64) {
|
||||||
// 表名
|
// 表名
|
||||||
tableName := fmt.Sprintf("ue_event_%s", strings.ToLower(neType))
|
tableName := fmt.Sprintf("ue_event_%s", strings.ToLower(neType))
|
||||||
tx := db.DB("").Table(tableName).Model(&model.CDREvent{})
|
tx := db.DB("").Table(tableName).Model(&model.UEEvent{})
|
||||||
// 查询条件拼接
|
// 查询条件拼接
|
||||||
if v, ok := query["rmUID"]; ok && v != "" {
|
if v, ok := query["rmUID"]; ok && v != "" {
|
||||||
tx = tx.Where("rm_uid = ?", v)
|
tx = tx.Where("rm_uid = ?", v)
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"be.ems/src/framework/i18n"
|
"be.ems/src/framework/i18n"
|
||||||
"be.ems/src/framework/logger"
|
"be.ems/src/framework/logger"
|
||||||
@@ -62,11 +63,12 @@ func (r CDREvent) ExportSMSC(rows []model.CDREvent, fileName, language string) (
|
|||||||
"D1": "Service Type",
|
"D1": "Service Type",
|
||||||
"E1": "Caller",
|
"E1": "Caller",
|
||||||
"F1": "Called",
|
"F1": "Called",
|
||||||
"G1": "Result",
|
"G1": "Result Code",
|
||||||
"H1": "Time",
|
"H1": "Result Cause",
|
||||||
|
"I1": "Time",
|
||||||
}
|
}
|
||||||
// 读取字典数据 CDR 原因码
|
// 读取字典数据 CDR 原因码
|
||||||
dictCDRCauseCode := sysService.NewSysDictData.FindByType("cdr_cause_code")
|
dictCDRSMSCCauseCode := sysService.NewSysDictData.FindByType("cdr_cause_smsc")
|
||||||
// 从第二行开始的数据
|
// 从第二行开始的数据
|
||||||
dataCells := make([]map[string]any, 0)
|
dataCells := make([]map[string]any, 0)
|
||||||
for i, row := range rows {
|
for i, row := range rows {
|
||||||
@@ -99,19 +101,20 @@ func (r CDREvent) ExportSMSC(rows []model.CDREvent, fileName, language string) (
|
|||||||
caller = v.(string)
|
caller = v.(string)
|
||||||
}
|
}
|
||||||
// 呼叫结果 0失败,1成功
|
// 呼叫结果 0失败,1成功
|
||||||
callResult := "Fail"
|
callResult := "FAILED"
|
||||||
if v, ok := cdrJSON["result"]; ok && v != nil {
|
if v, ok := cdrJSON["result"]; ok && v != nil {
|
||||||
resultVal := parse.Number(v)
|
resultVal := parse.Number(v)
|
||||||
if resultVal == 1 {
|
if resultVal == 1 {
|
||||||
callResult = "Success"
|
callResult = "SUCCESS"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 结果原因
|
// 结果原因
|
||||||
if v, ok := cdrJSON["cause"]; ok && v != nil && callResult == "Fail" {
|
callCause := "UNKNOW ERROR"
|
||||||
|
if v, ok := cdrJSON["cause"]; ok && v != nil {
|
||||||
cause := fmt.Sprint(v)
|
cause := fmt.Sprint(v)
|
||||||
for _, v := range dictCDRCauseCode {
|
for _, v := range dictCDRSMSCCauseCode {
|
||||||
if cause == v.DataValue {
|
if cause == v.DataValue {
|
||||||
callResult = fmt.Sprintf("%s, %s", callResult, i18n.TKey(language, v.DataLabel))
|
callCause = i18n.TKey(language, v.DataLabel)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -134,7 +137,8 @@ func (r CDREvent) ExportSMSC(rows []model.CDREvent, fileName, language string) (
|
|||||||
"E" + idx: caller,
|
"E" + idx: caller,
|
||||||
"F" + idx: called,
|
"F" + idx: called,
|
||||||
"G" + idx: callResult,
|
"G" + idx: callResult,
|
||||||
"H" + idx: timeStr,
|
"H" + idx: callCause,
|
||||||
|
"I" + idx: timeStr,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -643,3 +647,153 @@ func (r CDREvent) ExportIMS(rows []model.CDREvent, fileName, language string) (s
|
|||||||
// 导出数据表格
|
// 导出数据表格
|
||||||
return file.WriteSheet(headerCells, dataCells, fileName, "")
|
return file.WriteSheet(headerCells, dataCells, fileName, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IMSCDRMOSHour CDR MOS 统计
|
||||||
|
func (r CDREvent) IMSCDRMOSHour(rmUID 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)
|
||||||
|
}
|
||||||
|
|
||||||
|
query := map[string]string{
|
||||||
|
"rmUID": rmUID,
|
||||||
|
"recordType": "MOC",
|
||||||
|
"beginTime": fmt.Sprintf("%d", beginTime.Unix()),
|
||||||
|
"endTime": fmt.Sprintf("%d", endTime.Unix()),
|
||||||
|
}
|
||||||
|
rows, total := r.cdrEventRepository.SelectByPage("IMS", query)
|
||||||
|
if total == 0 {
|
||||||
|
return []map[string]any{}
|
||||||
|
}
|
||||||
|
// 创建一个map来存储按时间段合并后的数据
|
||||||
|
timeGroup := make(map[int64]map[string]float64)
|
||||||
|
// 遍历每个数据项
|
||||||
|
for _, row := range rows {
|
||||||
|
// 将毫秒时间戳转换为小时级时间戳(保留到小时的起始毫秒)
|
||||||
|
timeHour := row.Timestamp / 3600 * 3600 // 1小时 = 3600000毫秒
|
||||||
|
|
||||||
|
// 解析 JSON 字符串为 map
|
||||||
|
var cdrJSON map[string]interface{}
|
||||||
|
err := json.Unmarshal([]byte(row.CdrJson), &cdrJSON)
|
||||||
|
if err != nil {
|
||||||
|
logger.Warnf("Unmarshal JSON: %s", err.Error())
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// 记录类型
|
||||||
|
var mosAverage float64 = 0
|
||||||
|
if v, ok := cdrJSON["mosAverage"]; ok && v != nil {
|
||||||
|
mosAverage = v.(float64)
|
||||||
|
} else {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// 合并到对应的小时段
|
||||||
|
if _, exists := timeGroup[timeHour]; !exists {
|
||||||
|
timeGroup[timeHour] = map[string]float64{
|
||||||
|
"total": 0,
|
||||||
|
"mosSum": 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timeGroup[timeHour]["total"] += 1
|
||||||
|
timeGroup[timeHour]["mosSum"] += mosAverage
|
||||||
|
}
|
||||||
|
|
||||||
|
// 时间组合输出
|
||||||
|
data := make([]map[string]any, 0, len(timeGroup))
|
||||||
|
for hour, sums := range timeGroup {
|
||||||
|
data = append(data, map[string]any{
|
||||||
|
"timeGroup": fmt.Sprintf("%d", hour),
|
||||||
|
"total": sums["total"],
|
||||||
|
"mosSum": float64(int(sums["mosSum"]*100)) / 100,
|
||||||
|
"mosAvg": float64(int(sums["mosSum"]/sums["total"]*100)) / 100,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
|
||||||
|
// IMSCDRCCTHour CDR CCT 统计
|
||||||
|
func (r CDREvent) IMSCDRCCTHour(rmUID 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)
|
||||||
|
}
|
||||||
|
|
||||||
|
query := map[string]string{
|
||||||
|
"rmUID": rmUID,
|
||||||
|
"recordType": "MOC",
|
||||||
|
"beginTime": fmt.Sprintf("%d", beginTime.Unix()),
|
||||||
|
"endTime": fmt.Sprintf("%d", endTime.Unix()),
|
||||||
|
}
|
||||||
|
rows, total := r.cdrEventRepository.SelectByPage("IMS", query)
|
||||||
|
if total == 0 {
|
||||||
|
return []map[string]any{}
|
||||||
|
}
|
||||||
|
// 创建一个map来存储按时间段合并后的数据
|
||||||
|
timeGroup := make(map[int64]map[string]float64)
|
||||||
|
// 遍历每个数据项
|
||||||
|
for _, row := range rows {
|
||||||
|
// 将毫秒时间戳转换为小时级时间戳(保留到小时的起始毫秒)
|
||||||
|
timeHour := row.Timestamp / 3600 * 3600 // 1小时 = 3600000毫秒
|
||||||
|
|
||||||
|
// 解析 JSON 字符串为 map
|
||||||
|
var cdrJSON map[string]interface{}
|
||||||
|
err := json.Unmarshal([]byte(row.CdrJson), &cdrJSON)
|
||||||
|
if err != nil {
|
||||||
|
logger.Warnf("Unmarshal JSON: %s", err.Error())
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// 记录类型
|
||||||
|
var callConnectionTime float64 = 0
|
||||||
|
if v, ok := cdrJSON["callConnectionTime"]; ok && v != nil {
|
||||||
|
callConnectionTime = v.(float64)
|
||||||
|
} else {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// 合并到对应的小时段
|
||||||
|
if _, exists := timeGroup[timeHour]; !exists {
|
||||||
|
timeGroup[timeHour] = map[string]float64{
|
||||||
|
"total": 0,
|
||||||
|
"cctSum": 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timeGroup[timeHour]["total"] += 1
|
||||||
|
timeGroup[timeHour]["cctSum"] += callConnectionTime
|
||||||
|
}
|
||||||
|
|
||||||
|
// 时间组合输出
|
||||||
|
data := make([]map[string]any, 0, len(timeGroup))
|
||||||
|
for hour, sums := range timeGroup {
|
||||||
|
data = append(data, map[string]any{
|
||||||
|
"timeGroup": fmt.Sprintf("%d", hour),
|
||||||
|
"total": sums["total"],
|
||||||
|
"cctSum": float64(int(sums["cctSum"]*100)) / 100,
|
||||||
|
"cctAvg": float64(int(sums["cctSum"]/sums["total"]*100)) / 100,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"be.ems/src/framework/database/redis"
|
"be.ems/src/framework/database/redis"
|
||||||
|
"be.ems/src/framework/utils/date"
|
||||||
neService "be.ems/src/modules/ne/service"
|
neService "be.ems/src/modules/ne/service"
|
||||||
"be.ems/src/modules/ne_data/model"
|
"be.ems/src/modules/ne_data/model"
|
||||||
"be.ems/src/modules/ne_data/repository"
|
"be.ems/src/modules/ne_data/repository"
|
||||||
@@ -63,13 +65,21 @@ func (r *UDMAuthUser) dataByRedis(imsi, neId string) []model.UDMAuthUser {
|
|||||||
if v, ok := m["amf"]; ok {
|
if v, ok := m["amf"]; ok {
|
||||||
amf = strings.Replace(v, "\r\n", "", 1)
|
amf = strings.Replace(v, "\r\n", "", 1)
|
||||||
}
|
}
|
||||||
|
var createTime int64 = 0
|
||||||
|
if v, ok := m["create_time"]; ok {
|
||||||
|
t := date.ParseStrToDate(v, date.YYYY_MM_DDTHH_MM_SSZ)
|
||||||
|
createTime = t.UnixMilli()
|
||||||
|
} else {
|
||||||
|
createTime = time.Now().UnixMilli()
|
||||||
|
}
|
||||||
a := model.UDMAuthUser{
|
a := model.UDMAuthUser{
|
||||||
IMSI: imsi,
|
CreateTime: createTime,
|
||||||
Amf: amf,
|
NeId: neId,
|
||||||
Ki: m["ki"],
|
IMSI: imsi,
|
||||||
AlgoIndex: m["algo"],
|
Amf: amf,
|
||||||
Opc: m["opc"],
|
Ki: m["ki"],
|
||||||
NeId: neId,
|
AlgoIndex: m["algo"],
|
||||||
|
Opc: m["opc"],
|
||||||
}
|
}
|
||||||
arr = append(arr, a)
|
arr = append(arr, a)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"be.ems/src/framework/database/redis"
|
"be.ems/src/framework/database/redis"
|
||||||
|
"be.ems/src/framework/utils/date"
|
||||||
neService "be.ems/src/modules/ne/service"
|
neService "be.ems/src/modules/ne/service"
|
||||||
"be.ems/src/modules/ne_data/model"
|
"be.ems/src/modules/ne_data/model"
|
||||||
"be.ems/src/modules/ne_data/repository"
|
"be.ems/src/modules/ne_data/repository"
|
||||||
@@ -59,14 +61,22 @@ func (r *UDMSubUser) dataByRedis(imsi, neId string) []model.UDMSubUser {
|
|||||||
if strings.Contains(imsi, "-") || !hasPrefix {
|
if strings.Contains(imsi, "-") || !hasPrefix {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
var createTime int64 = 0
|
||||||
|
if v, ok := m["create_time"]; ok {
|
||||||
|
t := date.ParseStrToDate(v, date.YYYY_MM_DDTHH_MM_SSZ)
|
||||||
|
createTime = t.UnixMilli()
|
||||||
|
} else {
|
||||||
|
createTime = time.Now().UnixMilli()
|
||||||
|
}
|
||||||
|
|
||||||
a := model.UDMSubUser{
|
a := model.UDMSubUser{
|
||||||
IMSI: imsi, // udm-sd:360000100000130
|
CreateTime: createTime,
|
||||||
MSISDN: m["gpsi"], // 8612300000130
|
NeId: neId,
|
||||||
NeId: neId,
|
IMSI: imsi, // udm-sd:360000100000130
|
||||||
SmfSel: m["smf-sel"], // def_snssai
|
MSISDN: m["gpsi"], // 8612300000130
|
||||||
SmData: m["sm-dat"], // 1-000001&cmnet&ims&3gnet
|
SmfSel: m["smf-sel"], // def_snssai
|
||||||
Cag: m["cag"], // def_cag
|
SmData: m["sm-dat"], // 1-000001&cmnet&ims&3gnet
|
||||||
|
Cag: m["cag"], // def_cag
|
||||||
}
|
}
|
||||||
|
|
||||||
// def_ambr,def_nssai,0,def_arfb,def_sar,3,1,12000,1,1000,0,1,-
|
// def_ambr,def_nssai,0,def_arfb,def_sar,3,1,12000,1,1000,0,1,-
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"be.ems/src/framework/database/redis"
|
"be.ems/src/framework/database/redis"
|
||||||
|
"be.ems/src/framework/utils/date"
|
||||||
neService "be.ems/src/modules/ne/service"
|
neService "be.ems/src/modules/ne/service"
|
||||||
"be.ems/src/modules/ne_data/model"
|
"be.ems/src/modules/ne_data/model"
|
||||||
"be.ems/src/modules/ne_data/repository"
|
"be.ems/src/modules/ne_data/repository"
|
||||||
@@ -54,11 +56,19 @@ func (r UDMVOIPUser) dataByRedis(username, neId string) []model.UDMVOIPUser {
|
|||||||
if strings.Contains(username, "-") || !hasPrefix {
|
if strings.Contains(username, "-") || !hasPrefix {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
var createTime int64 = 0
|
||||||
|
if v, ok := m["create_time"]; ok {
|
||||||
|
t := date.ParseStrToDate(v, date.YYYY_MM_DDTHH_MM_SSZ)
|
||||||
|
createTime = t.UnixMilli()
|
||||||
|
} else {
|
||||||
|
createTime = time.Now().UnixMilli()
|
||||||
|
}
|
||||||
|
|
||||||
a := model.UDMVOIPUser{
|
a := model.UDMVOIPUser{
|
||||||
NeId: neId,
|
CreateTime: createTime,
|
||||||
UserName: username,
|
NeId: neId,
|
||||||
Password: m["password"],
|
UserName: username,
|
||||||
|
Password: m["password"],
|
||||||
}
|
}
|
||||||
arr = append(arr, a)
|
arr = append(arr, a)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"be.ems/src/framework/database/redis"
|
"be.ems/src/framework/database/redis"
|
||||||
|
"be.ems/src/framework/utils/date"
|
||||||
neService "be.ems/src/modules/ne/service"
|
neService "be.ems/src/modules/ne/service"
|
||||||
"be.ems/src/modules/ne_data/model"
|
"be.ems/src/modules/ne_data/model"
|
||||||
"be.ems/src/modules/ne_data/repository"
|
"be.ems/src/modules/ne_data/repository"
|
||||||
@@ -61,13 +63,21 @@ func (r UDMVolteIMSUser) dataByRedis(imsi, neId string) []model.UDMVolteIMSUser
|
|||||||
if len(impiParts) > 1 {
|
if len(impiParts) > 1 {
|
||||||
vni = impiParts[1]
|
vni = impiParts[1]
|
||||||
}
|
}
|
||||||
|
var createTime int64 = 0
|
||||||
|
if v, ok := m["create_time"]; ok {
|
||||||
|
t := date.ParseStrToDate(v, date.YYYY_MM_DDTHH_MM_SSZ)
|
||||||
|
createTime = t.UnixMilli()
|
||||||
|
} else {
|
||||||
|
createTime = time.Now().UnixMilli()
|
||||||
|
}
|
||||||
|
|
||||||
a := model.UDMVolteIMSUser{
|
a := model.UDMVolteIMSUser{
|
||||||
NeId: neId,
|
CreateTime: createTime,
|
||||||
IMSI: keys[1],
|
NeId: neId,
|
||||||
MSISDN: keys[2],
|
IMSI: keys[1],
|
||||||
Tag: m["tag"], // volte = tag
|
MSISDN: keys[2],
|
||||||
VNI: vni,
|
Tag: m["tag"], // volte = tag
|
||||||
|
VNI: vni,
|
||||||
}
|
}
|
||||||
arr = append(arr, a)
|
arr = append(arr, a)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,8 +34,6 @@ type Alarm struct {
|
|||||||
alarmEventService *neDataService.AlarmEvent
|
alarmEventService *neDataService.AlarmEvent
|
||||||
alarmLogService *neDataService.AlarmLog
|
alarmLogService *neDataService.AlarmLog
|
||||||
alarmForwardLogService *neDataService.AlarmForwardLog
|
alarmForwardLogService *neDataService.AlarmForwardLog
|
||||||
|
|
||||||
alarm neDataModel.Alarm
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resolve 接收处理
|
// Resolve 接收处理
|
||||||
@@ -50,7 +48,7 @@ func (s *Alarm) Resolve(a oam.Alarm) error {
|
|||||||
lastSeq := neDataService.NewAlarm.FindAlarmSeqLast(neInfo.NeType, neInfo.NeId)
|
lastSeq := neDataService.NewAlarm.FindAlarmSeqLast(neInfo.NeType, neInfo.NeId)
|
||||||
|
|
||||||
// 告警信息
|
// 告警信息
|
||||||
s.alarm = neDataModel.Alarm{
|
alarm := neDataModel.Alarm{
|
||||||
NeType: neInfo.NeType,
|
NeType: neInfo.NeType,
|
||||||
NeId: neInfo.NeId,
|
NeId: neInfo.NeId,
|
||||||
NeName: neInfo.NeName,
|
NeName: neInfo.NeName,
|
||||||
@@ -77,11 +75,11 @@ func (s *Alarm) Resolve(a oam.Alarm) error {
|
|||||||
// 进行清除
|
// 进行清除
|
||||||
if a.AlarmStatus == oam.ALARM_STATUS_CLEAR {
|
if a.AlarmStatus == oam.ALARM_STATUS_CLEAR {
|
||||||
if a.PerceivedSeverity == oam.ALARM_SEVERITY_EVENT {
|
if a.PerceivedSeverity == oam.ALARM_SEVERITY_EVENT {
|
||||||
if err := s.clearEvent(); err != nil {
|
if err := s.clearEvent(alarm); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err := s.clear(); err != nil {
|
if err := s.clear(alarm); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -90,40 +88,40 @@ func (s *Alarm) Resolve(a oam.Alarm) error {
|
|||||||
// 进行新增
|
// 进行新增
|
||||||
if a.AlarmStatus == oam.ALARM_STATUS_ACTIVE {
|
if a.AlarmStatus == oam.ALARM_STATUS_ACTIVE {
|
||||||
if a.PerceivedSeverity == oam.ALARM_SEVERITY_EVENT {
|
if a.PerceivedSeverity == oam.ALARM_SEVERITY_EVENT {
|
||||||
if err := s.addEvent(); err != nil {
|
if err := s.addEvent(alarm); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err := s.add(); err != nil {
|
if err := s.add(alarm); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 记录日志
|
// 记录日志
|
||||||
if err := s.saveLog(); err != nil {
|
if err := s.saveLog(alarm); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// 推送
|
// 推送
|
||||||
s.wsService.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.NeType, neInfo.NeId), s.alarm)
|
s.wsService.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.NeType, neInfo.NeId), alarm)
|
||||||
// 通知
|
// 通知
|
||||||
go s.notify(neInfo.IP)
|
go s.notify(neInfo.IP, alarm)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// saveLog 记录日志
|
// saveLog 记录日志
|
||||||
func (s *Alarm) saveLog() error {
|
func (s *Alarm) saveLog(alarm neDataModel.Alarm) error {
|
||||||
alarmLog := neDataModel.AlarmLog{
|
alarmLog := neDataModel.AlarmLog{
|
||||||
NeType: s.alarm.NeType,
|
NeType: alarm.NeType,
|
||||||
NeId: s.alarm.NeId,
|
NeId: alarm.NeId,
|
||||||
AlarmSeq: s.alarm.AlarmSeq,
|
AlarmSeq: alarm.AlarmSeq,
|
||||||
AlarmId: s.alarm.AlarmId,
|
AlarmId: alarm.AlarmId,
|
||||||
AlarmTitle: s.alarm.AlarmTitle,
|
AlarmTitle: alarm.AlarmTitle,
|
||||||
AlarmCode: s.alarm.AlarmCode,
|
AlarmCode: alarm.AlarmCode,
|
||||||
AlarmStatus: s.alarm.AlarmStatus,
|
AlarmStatus: alarm.AlarmStatus,
|
||||||
AlarmType: s.alarm.AlarmType,
|
AlarmType: alarm.AlarmType,
|
||||||
OrigSeverity: s.alarm.PerceivedSeverity,
|
OrigSeverity: alarm.PerceivedSeverity,
|
||||||
EventTime: s.alarm.EventTime,
|
EventTime: alarm.EventTime,
|
||||||
}
|
}
|
||||||
insertId := s.alarmLogService.Insert(alarmLog)
|
insertId := s.alarmLogService.Insert(alarmLog)
|
||||||
if insertId <= 0 {
|
if insertId <= 0 {
|
||||||
@@ -133,94 +131,94 @@ func (s *Alarm) saveLog() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// add 新增告警
|
// add 新增告警
|
||||||
func (s *Alarm) add() error {
|
func (s *Alarm) add(alarm neDataModel.Alarm) error {
|
||||||
// 检查网元告警ID是否唯一
|
// 检查网元告警ID是否唯一
|
||||||
alarmIdArr := s.alarmService.Find(neDataModel.Alarm{
|
alarmIdArr := s.alarmService.Find(neDataModel.Alarm{
|
||||||
NeType: s.alarm.NeType,
|
NeType: alarm.NeType,
|
||||||
NeId: s.alarm.NeId,
|
NeId: alarm.NeId,
|
||||||
AlarmId: s.alarm.AlarmId,
|
AlarmId: alarm.AlarmId,
|
||||||
})
|
})
|
||||||
if len(alarmIdArr) > 0 {
|
if len(alarmIdArr) > 0 {
|
||||||
return fmt.Errorf("already exists alarmId:%s", s.alarm.AlarmId)
|
return fmt.Errorf("already exists alarmId:%s", alarm.AlarmId)
|
||||||
}
|
}
|
||||||
insertId := s.alarmService.Insert(s.alarm)
|
insertId := s.alarmService.Insert(alarm)
|
||||||
if insertId > 0 {
|
if insertId > 0 {
|
||||||
s.alarm.ID = insertId
|
alarm.ID = insertId
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return fmt.Errorf("add alarm fail")
|
return fmt.Errorf("add alarm fail")
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear 清除告警
|
// clear 清除告警
|
||||||
func (s *Alarm) clear() error {
|
func (s *Alarm) clear(alarm neDataModel.Alarm) error {
|
||||||
// 检查网元告警ID是否唯一
|
// 检查网元告警ID是否唯一
|
||||||
alarmIdArr := s.alarmService.Find(neDataModel.Alarm{
|
alarmIdArr := s.alarmService.Find(neDataModel.Alarm{
|
||||||
NeType: s.alarm.NeType,
|
NeType: alarm.NeType,
|
||||||
NeId: s.alarm.NeId,
|
NeId: alarm.NeId,
|
||||||
AlarmId: s.alarm.AlarmId,
|
AlarmId: alarm.AlarmId,
|
||||||
})
|
})
|
||||||
if len(alarmIdArr) != 1 {
|
if len(alarmIdArr) != 1 {
|
||||||
return fmt.Errorf("not exists alarmId:%s", s.alarm.AlarmId)
|
return fmt.Errorf("not exists alarmId:%s", alarm.AlarmId)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 告警清除
|
// 告警清除
|
||||||
rows, _ := s.alarmService.ClearByIds([]int64{alarmIdArr[0].ID}, s.alarm.ObjectUid, constants.ALARM_CLEAR_TYPE_AUTO_CLEAR)
|
rows, _ := s.alarmService.ClearByIds([]int64{alarmIdArr[0].ID}, alarm.ObjectUid, constants.ALARM_CLEAR_TYPE_AUTO_CLEAR)
|
||||||
if rows > 0 {
|
if rows > 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return fmt.Errorf("clear fail alarmId:%s", s.alarm.AlarmId)
|
return fmt.Errorf("clear fail alarmId:%s", alarm.AlarmId)
|
||||||
}
|
}
|
||||||
|
|
||||||
// addEvent 新增告警事件
|
// addEvent 新增告警事件
|
||||||
func (s *Alarm) addEvent() error {
|
func (s *Alarm) addEvent(alarm neDataModel.Alarm) error {
|
||||||
// 检查网元告警ID是否唯一
|
// 检查网元告警ID是否唯一
|
||||||
alarmIdArr := s.alarmEventService.Find(neDataModel.AlarmEvent{
|
alarmIdArr := s.alarmEventService.Find(neDataModel.AlarmEvent{
|
||||||
NeType: s.alarm.NeType,
|
NeType: alarm.NeType,
|
||||||
NeId: s.alarm.NeId,
|
NeId: alarm.NeId,
|
||||||
AlarmId: s.alarm.AlarmId,
|
AlarmId: alarm.AlarmId,
|
||||||
})
|
})
|
||||||
if len(alarmIdArr) > 0 {
|
if len(alarmIdArr) > 0 {
|
||||||
return fmt.Errorf("event already exists alarmId:%s", s.alarm.AlarmId)
|
return fmt.Errorf("event already exists alarmId:%s", alarm.AlarmId)
|
||||||
}
|
}
|
||||||
// seq 告警序号
|
// seq 告警序号
|
||||||
lastSeq := s.alarmEventService.FindAlarmEventSeqLast(s.alarm.NeType, s.alarm.NeId)
|
lastSeq := s.alarmEventService.FindAlarmEventSeqLast(alarm.NeType, alarm.NeId)
|
||||||
|
|
||||||
alarmEvent := neDataModel.AlarmEvent{
|
alarmEvent := neDataModel.AlarmEvent{
|
||||||
NeType: s.alarm.NeType,
|
NeType: alarm.NeType,
|
||||||
NeId: s.alarm.NeId,
|
NeId: alarm.NeId,
|
||||||
AlarmSeq: lastSeq + 1,
|
AlarmSeq: lastSeq + 1,
|
||||||
AlarmId: s.alarm.AlarmId,
|
AlarmId: alarm.AlarmId,
|
||||||
AlarmTitle: s.alarm.AlarmTitle,
|
AlarmTitle: alarm.AlarmTitle,
|
||||||
AlarmCode: s.alarm.AlarmCode,
|
AlarmCode: alarm.AlarmCode,
|
||||||
EventTime: s.alarm.EventTime,
|
EventTime: alarm.EventTime,
|
||||||
ObjectUid: s.alarm.ObjectUid,
|
ObjectUid: alarm.ObjectUid,
|
||||||
ObjectName: s.alarm.ObjectName,
|
ObjectName: alarm.ObjectName,
|
||||||
ObjectType: s.alarm.ObjectType,
|
ObjectType: alarm.ObjectType,
|
||||||
LocationInfo: s.alarm.LocationInfo,
|
LocationInfo: alarm.LocationInfo,
|
||||||
AlarmStatus: s.alarm.AlarmStatus,
|
AlarmStatus: alarm.AlarmStatus,
|
||||||
SpecificProblem: s.alarm.SpecificProblem,
|
SpecificProblem: alarm.SpecificProblem,
|
||||||
SpecificProblemId: s.alarm.SpecificProblemId,
|
SpecificProblemId: alarm.SpecificProblemId,
|
||||||
AddInfo: s.alarm.AddInfo,
|
AddInfo: alarm.AddInfo,
|
||||||
}
|
}
|
||||||
insertId := s.alarmEventService.Insert(alarmEvent)
|
insertId := s.alarmEventService.Insert(alarmEvent)
|
||||||
if insertId > 0 {
|
if insertId > 0 {
|
||||||
alarmEvent.ID = insertId
|
alarmEvent.ID = insertId
|
||||||
// 网元重启后,清除活动告警
|
// 网元重启后,清除活动告警
|
||||||
if s.alarm.AlarmCode == constants.ALARM_EVENT_REBOOT {
|
if alarm.AlarmCode == constants.ALARM_EVENT_REBOOT {
|
||||||
rows := s.alarmService.Find(neDataModel.Alarm{
|
rows := s.alarmService.Find(neDataModel.Alarm{
|
||||||
NeType: s.alarm.NeType,
|
NeType: alarm.NeType,
|
||||||
NeId: s.alarm.NeId,
|
NeId: alarm.NeId,
|
||||||
AlarmStatus: oam.ALARM_STATUS_ACTIVE,
|
AlarmStatus: oam.ALARM_STATUS_ACTIVE,
|
||||||
})
|
})
|
||||||
ids := make([]int64, 0)
|
ids := make([]int64, 0)
|
||||||
for _, v := range rows {
|
for _, v := range rows {
|
||||||
ids = append(ids, v.ID)
|
ids = append(ids, v.ID)
|
||||||
}
|
}
|
||||||
s.alarmService.ClearByIds(ids, s.alarm.ObjectUid, constants.ALARM_CLEAR_TYPE_AUTO_CLEAR)
|
s.alarmService.ClearByIds(ids, alarm.ObjectUid, constants.ALARM_CLEAR_TYPE_AUTO_CLEAR)
|
||||||
}
|
}
|
||||||
// 网元重启后,有跟踪任务的需要重新补发启动任务
|
// 网元重启后,有跟踪任务的需要重新补发启动任务
|
||||||
if s.alarm.AlarmCode == constants.ALARM_EVENT_REBOOT {
|
if alarm.AlarmCode == constants.ALARM_EVENT_REBOOT {
|
||||||
traceService.NewTraceTask.RunUnstopped(s.alarm.NeType, s.alarm.NeId)
|
traceService.NewTraceTask.RunUnstopped(alarm.NeType, alarm.NeId)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -228,38 +226,38 @@ func (s *Alarm) addEvent() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// clearEvent 清除告警事件
|
// clearEvent 清除告警事件
|
||||||
func (s *Alarm) clearEvent() error {
|
func (s *Alarm) clearEvent(alarm neDataModel.Alarm) error {
|
||||||
alarmEventService := neDataService.NewAlarmEvent
|
alarmEventService := neDataService.NewAlarmEvent
|
||||||
// 检查网元告警ID是否唯一
|
// 检查网元告警ID是否唯一
|
||||||
alarmIdArr := alarmEventService.Find(neDataModel.AlarmEvent{
|
alarmIdArr := alarmEventService.Find(neDataModel.AlarmEvent{
|
||||||
NeType: s.alarm.NeType,
|
NeType: alarm.NeType,
|
||||||
NeId: s.alarm.NeId,
|
NeId: alarm.NeId,
|
||||||
AlarmId: s.alarm.AlarmId,
|
AlarmId: alarm.AlarmId,
|
||||||
})
|
})
|
||||||
if len(alarmIdArr) != 1 {
|
if len(alarmIdArr) != 1 {
|
||||||
return fmt.Errorf("event not exists alarmId:%s", s.alarm.AlarmId)
|
return fmt.Errorf("event not exists alarmId:%s", alarm.AlarmId)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 告警清除
|
// 告警清除
|
||||||
rows, _ := s.alarmEventService.ClearByIds([]int64{alarmIdArr[0].ID}, s.alarm.ObjectUid, constants.ALARM_CLEAR_TYPE_AUTO_CLEAR)
|
rows, _ := s.alarmEventService.ClearByIds([]int64{alarmIdArr[0].ID}, alarm.ObjectUid, constants.ALARM_CLEAR_TYPE_AUTO_CLEAR)
|
||||||
if rows > 0 {
|
if rows > 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return fmt.Errorf("event clear fail alarmId:%s", s.alarm.AlarmId)
|
return fmt.Errorf("event clear fail alarmId:%s", alarm.AlarmId)
|
||||||
}
|
}
|
||||||
|
|
||||||
// notify 通知
|
// notify 通知
|
||||||
func (s *Alarm) notify(neIp string) {
|
func (s *Alarm) notify(neIp string, alarm neDataModel.Alarm) {
|
||||||
// 邮箱
|
// 邮箱
|
||||||
emailEnable := parse.Boolean(config.Get("notification.email.enable"))
|
emailEnable := parse.Boolean(config.Get("notification.email.enable"))
|
||||||
if emailEnable {
|
if emailEnable {
|
||||||
emailList := fmt.Sprint(config.Get("notification.email.emailList"))
|
emailList := fmt.Sprint(config.Get("notification.email.emailList"))
|
||||||
emailResult := "Sent Successfully!"
|
emailResult := "Sent Successfully!"
|
||||||
emailErr := notificationService.EmailAlarm(s.alarm, neIp)
|
emailErr := notificationService.EmailAlarm(alarm, neIp)
|
||||||
if emailErr != nil {
|
if emailErr != nil {
|
||||||
emailResult = emailErr.Error()
|
emailResult = emailErr.Error()
|
||||||
}
|
}
|
||||||
s.notifyLog("EMAIL", emailList, emailResult)
|
s.notifyLog(alarm, "EMAIL", emailList, emailResult)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 短信
|
// 短信
|
||||||
@@ -267,27 +265,27 @@ func (s *Alarm) notify(neIp string) {
|
|||||||
if smscEnable {
|
if smscEnable {
|
||||||
mobileList := fmt.Sprint(config.Get("notification.smsc.mobileList"))
|
mobileList := fmt.Sprint(config.Get("notification.smsc.mobileList"))
|
||||||
smscResult := "Sent Successfully!"
|
smscResult := "Sent Successfully!"
|
||||||
smscErr := notificationService.SMSCAlarm(s.alarm, neIp)
|
smscErr := notificationService.SMSCAlarm(alarm, neIp)
|
||||||
if smscErr != nil {
|
if smscErr != nil {
|
||||||
smscResult = smscErr.Error()
|
smscResult = smscErr.Error()
|
||||||
}
|
}
|
||||||
s.notifyLog("SMSC", mobileList, smscResult)
|
s.notifyLog(alarm, "SMSC", mobileList, smscResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// notifyLog 通知日志
|
// notifyLog 通知日志
|
||||||
func (s *Alarm) notifyLog(forwardBy, toUser, result string) error {
|
func (s *Alarm) notifyLog(alarm neDataModel.Alarm, forwardBy, toUser, result string) error {
|
||||||
alarmForwardLog := neDataModel.AlarmForwardLog{
|
alarmForwardLog := neDataModel.AlarmForwardLog{
|
||||||
NeType: s.alarm.NeType,
|
NeType: alarm.NeType,
|
||||||
NeId: s.alarm.NeId,
|
NeId: alarm.NeId,
|
||||||
AlarmSeq: s.alarm.AlarmSeq,
|
AlarmSeq: alarm.AlarmSeq,
|
||||||
AlarmId: s.alarm.AlarmId,
|
AlarmId: alarm.AlarmId,
|
||||||
AlarmTitle: s.alarm.AlarmTitle,
|
AlarmTitle: alarm.AlarmTitle,
|
||||||
AlarmCode: s.alarm.AlarmCode,
|
AlarmCode: alarm.AlarmCode,
|
||||||
AlarmStatus: s.alarm.AlarmStatus,
|
AlarmStatus: alarm.AlarmStatus,
|
||||||
AlarmType: s.alarm.AlarmType,
|
AlarmType: alarm.AlarmType,
|
||||||
OrigSeverity: s.alarm.OrigSeverity,
|
OrigSeverity: alarm.OrigSeverity,
|
||||||
EventTime: s.alarm.EventTime,
|
EventTime: alarm.EventTime,
|
||||||
Type: forwardBy,
|
Type: forwardBy,
|
||||||
Target: toUser,
|
Target: toUser,
|
||||||
Result: result,
|
Result: result,
|
||||||
|
|||||||
@@ -102,10 +102,14 @@ func (s MMLController) Command(c *gin.Context) {
|
|||||||
// 发送MML
|
// 发送MML
|
||||||
result := []string{}
|
result := []string{}
|
||||||
resultStr := "Success"
|
resultStr := "Success"
|
||||||
|
hasCommand := false
|
||||||
for _, v := range body.Command {
|
for _, v := range body.Command {
|
||||||
if v == "" {
|
if v == "" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if strings.Contains(v, "dec key") {
|
||||||
|
hasCommand = true
|
||||||
|
}
|
||||||
output, err := telnetClient.RunCMD(v + "\r\n")
|
output, err := telnetClient.RunCMD(v + "\r\n")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
result = append(result, err.Error())
|
result = append(result, err.Error())
|
||||||
@@ -115,6 +119,16 @@ func (s MMLController) Command(c *gin.Context) {
|
|||||||
result = append(result, strings.TrimSpace(output))
|
result = append(result, strings.TrimSpace(output))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UDM 特殊命令处理
|
||||||
|
if body.NeType == "UDM" && hasCommand {
|
||||||
|
output, err := s.neInfoService.NeRunSSHCmd(neInfo.NeType, neInfo.NeId, "cat /usr/local/etc/udm/ueKeyProfile.tmp")
|
||||||
|
if err != nil {
|
||||||
|
result = append(result, err.Error())
|
||||||
|
} else {
|
||||||
|
result = append(result, output)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 记录日志
|
// 记录日志
|
||||||
mmlLog := model.MMLLog{
|
mmlLog := model.MMLLog{
|
||||||
NeType: body.NeType,
|
NeType: body.NeType,
|
||||||
|
|||||||
Reference in New Issue
Block a user