ref: 多core表结构和代码调整修改

This commit is contained in:
TsMask
2025-06-10 17:50:54 +08:00
parent c7501a952d
commit cfe6ab61e3
189 changed files with 2159 additions and 3195 deletions

View File

@@ -1,18 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for alarm -- Table structure for alarm
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `alarm`; DROP TABLE IF EXISTS `alarm`;
CREATE TABLE `alarm` ( CREATE TABLE `alarm` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元类型', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元ID', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`ne_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元名称', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`province` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元省份地域',
`pv_flag` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元标识虚拟化标识',
`alarm_seq` int DEFAULT '0' COMMENT '告警序号 同网元类型连续递增', `alarm_seq` int DEFAULT '0' COMMENT '告警序号 同网元类型连续递增',
`alarm_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '告警ID', `alarm_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '告警ID',
`alarm_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '告警标题', `alarm_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '告警标题',
@@ -37,10 +31,7 @@ CREATE TABLE `alarm` (
`clear_user` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '清除用户', `clear_user` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '清除用户',
`timestamp` bigint DEFAULT '0' COMMENT '创建时间', `timestamp` bigint DEFAULT '0' COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_uni_aid_ne_aseq` (`ne_type`,`ne_id`,`alarm_id`,`alarm_seq`) USING BTREE, UNIQUE KEY `uk_alarm_aid_aseq_atype` (`ne_uid`, `alarm_id`, `alarm_seq`, `alarm_type`) USING BTREE COMMENT '唯一网元资源产生的ID与序号与状态',
KEY `idx_status_severity_time` (`alarm_status`,`orig_severity`,`event_time`) USING BTREE KEY `idx_alarm_status_severity_time` (`alarm_status`,`orig_severity`,`event_time`) USING BTREE COMMENT '索引-告警状态_告警级别_事件时间',
KEY `idx_alarm_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='告警_记录表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='告警_记录表';
SET FOREIGN_KEY_CHECKS = 1;
-- Dump completed on 2025-02-14 15:26:56

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for alarm_event -- Table structure for alarm_event
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `alarm_event`; DROP TABLE IF EXISTS `alarm_event`;
CREATE TABLE `alarm_event` ( CREATE TABLE `alarm_event` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元类型', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元ID', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`alarm_seq` int DEFAULT '0' COMMENT '告警序号 同网元类型连续递增', `alarm_seq` int DEFAULT '0' COMMENT '告警序号 同网元类型连续递增',
`alarm_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '告警ID', `alarm_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '告警ID',
`alarm_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '告警标题', `alarm_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '告警标题',
@@ -28,10 +25,9 @@ CREATE TABLE `alarm_event` (
`clear_user` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '清除用户', `clear_user` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '清除用户',
`timestamp` bigint DEFAULT '0' COMMENT '创建时间', `timestamp` bigint DEFAULT '0' COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_ti_aid_aseq` (`ne_type`,`ne_id`,`alarm_id`,`alarm_seq`) USING BTREE, UNIQUE KEY `uk_aevent_aid_aseq` (`ne_uid`, `alarm_id`, `alarm_seq`) USING BTREE COMMENT '唯一网元资源产生的ID与序号与状态',
KEY `idx_astatus_etime` (`alarm_status`,`event_time`) USING BTREE KEY `idx_aevent_status_etime` (`alarm_status`,`event_time`) USING BTREE COMMENT '索引-告警状态_事件时间',
KEY `idx_aevent_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='告警_事件记录表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='告警_事件记录表';
SET FOREIGN_KEY_CHECKS = 1;
-- Dump completed on 2025-02-14 15:26:56 -- Dump completed on 2025-02-14 15:26:56

View File

@@ -1,6 +1,3 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- --
-- Table structure for table `alarm_forward_log` -- Table structure for table `alarm_forward_log`
-- --
@@ -8,8 +5,9 @@ SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `alarm_forward_log`; DROP TABLE IF EXISTS `alarm_forward_log`;
CREATE TABLE `alarm_forward_log` ( CREATE TABLE `alarm_forward_log` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`alarm_seq` int DEFAULT '0' COMMENT '告警序号 同网元类型连续递增', `alarm_seq` int DEFAULT '0' COMMENT '告警序号 同网元类型连续递增',
`alarm_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '告警ID', `alarm_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '告警ID',
`alarm_code` int DEFAULT '0' COMMENT '告警状态码', `alarm_code` int DEFAULT '0' COMMENT '告警状态码',
@@ -22,7 +20,8 @@ CREATE TABLE `alarm_forward_log` (
`type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '转发方式 SMS/EMAIL', `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '转发方式 SMS/EMAIL',
`target` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '发送目标用户', `target` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '发送目标用户',
`result` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '发送结果', `result` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '发送结果',
PRIMARY KEY (`id`) USING BTREE PRIMARY KEY (`id`) USING BTREE,
KEY `idx_aforward_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='告警_转发日志记录'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='告警_转发日志记录';
SET FOREIGN_KEY_CHECKS=1; SET FOREIGN_KEY_CHECKS=1;

View File

@@ -1,4 +1,3 @@
-- MariaDB dump 10.19 Distrib 10.6.16-MariaDB, for debian-linux-gnu (x86_64)
-- --
-- Table structure for table `alarm_log` -- Table structure for table `alarm_log`
-- --
@@ -6,8 +5,9 @@
DROP TABLE IF EXISTS `alarm_log`; DROP TABLE IF EXISTS `alarm_log`;
CREATE TABLE `alarm_log` ( CREATE TABLE `alarm_log` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`alarm_seq` int DEFAULT '0' COMMENT '告警序号 同网元类型连续递增', `alarm_seq` int DEFAULT '0' COMMENT '告警序号 同网元类型连续递增',
`alarm_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '告警ID', `alarm_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '告警ID',
`alarm_code` int DEFAULT '0' COMMENT '告警状态码', `alarm_code` int DEFAULT '0' COMMENT '告警状态码',
@@ -17,7 +17,8 @@ CREATE TABLE `alarm_log` (
`orig_severity` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '3' COMMENT '严重程度 1: Critical, 2: Major, 3: Minor, 4: Warning, 5: Event(Only VNF)', `orig_severity` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '3' COMMENT '严重程度 1: Critical, 2: Major, 3: Minor, 4: Warning, 5: Event(Only VNF)',
`event_time` bigint DEFAULT '0' COMMENT '事件产生时间 秒级', `event_time` bigint DEFAULT '0' COMMENT '事件产生时间 秒级',
`created_at` bigint DEFAULT '0' COMMENT '创建时间', `created_at` bigint DEFAULT '0' COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE PRIMARY KEY (`id`) USING BTREE,
KEY `idx_alog_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='告警_日志记录'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='告警_日志记录';
-- Dump completed on 2024-02-18 18:26:55 -- Dump completed on 2024-02-18 18:26:55

View File

@@ -7,14 +7,15 @@ SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `cdr_event`; DROP TABLE IF EXISTS `cdr_event`;
CREATE TABLE `cdr_event` ( CREATE TABLE `cdr_event` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`timestamp` bigint DEFAULT '0' COMMENT '接收到的timestamp秒级存储毫秒时间戳', `timestamp` bigint DEFAULT '0' COMMENT '接收到的timestamp秒级存储毫秒时间戳',
`cdr_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'data JSON String', `cdr_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'data JSON String',
`created_at` bigint DEFAULT '0' COMMENT '记录创建存储毫秒', `created_at` bigint DEFAULT '0' COMMENT '记录创建存储毫秒',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_uid_t` (`rm_uid`,`timestamp`) USING BTREE KEY `idx_cdr_uid_t` (`ne_uid`,`timestamp`) USING BTREE,
KEY `idx_cdr_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='CDR事件_基础表结构'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='CDR事件_基础表结构';
SET FOREIGN_KEY_CHECKS = 1; SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -7,14 +7,15 @@ SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `cdr_event_ims`; DROP TABLE IF EXISTS `cdr_event_ims`;
CREATE TABLE `cdr_event_ims` ( CREATE TABLE `cdr_event_ims` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`timestamp` bigint DEFAULT '0' COMMENT '接收到的timestamp秒级存储毫秒时间戳', `timestamp` bigint DEFAULT '0' COMMENT '接收到的timestamp秒级存储毫秒时间戳',
`cdr_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'data JSON String', `cdr_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'data JSON String',
`created_at` bigint DEFAULT '0' COMMENT '记录创建存储毫秒', `created_at` bigint DEFAULT '0' COMMENT '记录创建存储毫秒',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_ims_uid_t` (`rm_uid`,`timestamp`) USING BTREE KEY `idx_cdr_ims_uid_t` (`ne_uid`,`timestamp`) USING BTREE,
KEY `idx_cdr_ims_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='CDR事件_IMS'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='CDR事件_IMS';
SET FOREIGN_KEY_CHECKS = 1; SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -7,14 +7,15 @@ SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `cdr_event_sgwc`; DROP TABLE IF EXISTS `cdr_event_sgwc`;
CREATE TABLE `cdr_event_sgwc` ( CREATE TABLE `cdr_event_sgwc` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`timestamp` bigint DEFAULT '0' COMMENT '接收到的timestamp秒级存储毫秒时间戳', `timestamp` bigint DEFAULT '0' COMMENT '接收到的timestamp秒级存储毫秒时间戳',
`cdr_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'data JSON String', `cdr_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'data JSON String',
`created_at` bigint DEFAULT '0' COMMENT '记录创建存储毫秒', `created_at` bigint DEFAULT '0' COMMENT '记录创建存储毫秒',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_sgwc_uid_t` (`rm_uid`,`timestamp`) USING BTREE KEY `idx_cdr_sgwc_uid_t` (`ne_uid`,`timestamp`) USING BTREE,
KEY `idx_cdr_sgwc_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='CDR事件_SGWC'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='CDR事件_SGWC';
SET FOREIGN_KEY_CHECKS = 1; SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -7,14 +7,15 @@ SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `cdr_event_smf`; DROP TABLE IF EXISTS `cdr_event_smf`;
CREATE TABLE `cdr_event_smf` ( CREATE TABLE `cdr_event_smf` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`timestamp` bigint DEFAULT '0' COMMENT '接收到的timestamp秒级存储毫秒时间戳', `timestamp` bigint DEFAULT '0' COMMENT '接收到的timestamp秒级存储毫秒时间戳',
`cdr_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'data JSON String', `cdr_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'data JSON String',
`created_at` bigint DEFAULT '0' COMMENT '记录创建存储毫秒', `created_at` bigint DEFAULT '0' COMMENT '记录创建存储毫秒',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_smf_uid_t` (`rm_uid`,`timestamp`) USING BTREE KEY `idx_cdr_smf_uid_t` (`ne_uid`,`timestamp`) USING BTREE,
KEY `idx_cdr_smf_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='CDR事件_SMF'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='CDR事件_SMF';
SET FOREIGN_KEY_CHECKS = 1; SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -7,14 +7,15 @@ SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `cdr_event_smsc`; DROP TABLE IF EXISTS `cdr_event_smsc`;
CREATE TABLE `cdr_event_smsc` ( CREATE TABLE `cdr_event_smsc` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`timestamp` bigint DEFAULT '0' COMMENT '接收到的timestamp秒级存储毫秒时间戳', `timestamp` bigint DEFAULT '0' COMMENT '接收到的timestamp秒级存储毫秒时间戳',
`cdr_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'data JSON String', `cdr_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'data JSON String',
`created_at` bigint DEFAULT '0' COMMENT '记录创建存储毫秒', `created_at` bigint DEFAULT '0' COMMENT '记录创建存储毫秒',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_smsc_uid_t` (`rm_uid`,`timestamp`) USING BTREE KEY `idx_cdr_smsc_uid_t` (`ne_uid`,`timestamp`) USING BTREE,
KEY `idx_cdr_smsc_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='CDR事件_SMSC'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='CDR事件_SMSC';
SET FOREIGN_KEY_CHECKS = 1; SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -0,0 +1,20 @@
--
-- Table structure for table `core_info`
--
DROP TABLE IF EXISTS `core_info`;
CREATE TABLE `core_info` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '核心网ID',
`core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`core_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网名称',
`core_sn` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网序列号',
`omc_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'OMC安装生成的唯一编码',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '备注',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者',
`create_time` bigint DEFAULT '0' COMMENT '创建时间',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',
`update_time` bigint DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_core_name_sn` (`core_name`,`core_sn`) USING BTREE COMMENT '唯一名称和序号定义'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='核心网_基础信息表';
-- Dump completed on 2025-06-04 15:26:56

View File

@@ -7,9 +7,9 @@ SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `kpi_c_report`; DROP TABLE IF EXISTS `kpi_c_report`;
CREATE TABLE `kpi_c_report` ( CREATE TABLE `kpi_c_report` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +18,8 @@ CREATE TABLE `kpi_c_report` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_c_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_c_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpic_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据记录基础表结构'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据记录基础表结构';
SET FOREIGN_KEY_CHECKS = 1; SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_c_report_amf -- Table structure for kpi_c_report_amf
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_c_report_amf`; DROP TABLE IF EXISTS `kpi_c_report_amf`;
CREATE TABLE `kpi_c_report_amf` ( CREATE TABLE `kpi_c_report_amf` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_c_report_amf` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_c_amf_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpic_amf_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpic_amf_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_AMF'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_AMF';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_c_report_ausf -- Table structure for kpi_c_report_ausf
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_c_report_ausf`; DROP TABLE IF EXISTS `kpi_c_report_ausf`;
CREATE TABLE `kpi_c_report_ausf` ( CREATE TABLE `kpi_c_report_ausf` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_c_report_ausf` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_c_ausf_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpic_ausf_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpic_ausf_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_AUSF'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_AUSF';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_c_report_cbc -- Table structure for kpi_c_report_cbc
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_c_report_cbc`; DROP TABLE IF EXISTS `kpi_c_report_cbc`;
CREATE TABLE `kpi_c_report_cbc` ( CREATE TABLE `kpi_c_report_cbc` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_c_report_cbc` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_c_cbc_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpic_cbc_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpic_cbc_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_CBC'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_CBC';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_c_report_hlr -- Table structure for kpi_c_report_hlr
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_c_report_hlr`; DROP TABLE IF EXISTS `kpi_c_report_hlr`;
CREATE TABLE `kpi_c_report_hlr` ( CREATE TABLE `kpi_c_report_hlr` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_c_report_hlr` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_c_hlr_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpic_hlr_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpic_hlr_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_HLR'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_HLR';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_c_report_ims -- Table structure for kpi_c_report_ims
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_c_report_ims`; DROP TABLE IF EXISTS `kpi_c_report_ims`;
CREATE TABLE `kpi_c_report_ims` ( CREATE TABLE `kpi_c_report_ims` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_c_report_ims` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_c_ims_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpic_ims_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpic_ims_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_IMS'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_IMS';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_c_report_mme -- Table structure for kpi_c_report_mme
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_c_report_mme`; DROP TABLE IF EXISTS `kpi_c_report_mme`;
CREATE TABLE `kpi_c_report_mme` ( CREATE TABLE `kpi_c_report_mme` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_c_report_mme` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_c_mme_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpic_mme_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpic_mme_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_MME'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_MME';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_c_report_mocngw -- Table structure for kpi_c_report_mocngw
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_c_report_mocngw`; DROP TABLE IF EXISTS `kpi_c_report_mocngw`;
CREATE TABLE `kpi_c_report_mocngw` ( CREATE TABLE `kpi_c_report_mocngw` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_c_report_mocngw` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_c_mocngw_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpic_mocngw_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpic_mocngw_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_MOCNGW'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_MOCNGW';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_c_report_nssf -- Table structure for kpi_c_report_nssf
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_c_report_nssf`; DROP TABLE IF EXISTS `kpi_c_report_nssf`;
CREATE TABLE `kpi_c_report_nssf` ( CREATE TABLE `kpi_c_report_nssf` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_c_report_nssf` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_c_nssf_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpic_nssf_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpic_nssf_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_NSSF'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_NSSF';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_c_report_pcf -- Table structure for kpi_c_report_pcf
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_c_report_pcf`; DROP TABLE IF EXISTS `kpi_c_report_pcf`;
CREATE TABLE `kpi_c_report_pcf` ( CREATE TABLE `kpi_c_report_pcf` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_c_report_pcf` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_c_pcf_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpic_pcf_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpic_pcf_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_PCF'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_PCF';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_c_report_smf -- Table structure for kpi_c_report_smf
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_c_report_smf`; DROP TABLE IF EXISTS `kpi_c_report_smf`;
CREATE TABLE `kpi_c_report_smf` ( CREATE TABLE `kpi_c_report_smf` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_c_report_smf` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_c_smf_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpic_smf_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpic_smf_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_SMF'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_SMF';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_c_report_smsc -- Table structure for kpi_c_report_smsc
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_c_report_smsc`; DROP TABLE IF EXISTS `kpi_c_report_smsc`;
CREATE TABLE `kpi_c_report_smsc` ( CREATE TABLE `kpi_c_report_smsc` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_c_report_smsc` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_c_smsc_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpic_smsc_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpic_smsc_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_SMSC'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_SMSC';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_c_report_udm -- Table structure for kpi_c_report_udm
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_c_report_udm`; DROP TABLE IF EXISTS `kpi_c_report_udm`;
CREATE TABLE `kpi_c_report_udm` ( CREATE TABLE `kpi_c_report_udm` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_c_report_udm` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_c_udm_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpic_udm_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpic_udm_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_UDM'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_UDM';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_c_report_upf -- Table structure for kpi_c_report_upf
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_c_report_upf`; DROP TABLE IF EXISTS `kpi_c_report_upf`;
CREATE TABLE `kpi_c_report_upf` ( CREATE TABLE `kpi_c_report_upf` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_c_report_upf` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_c_upf_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpic_upf_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpic_upf_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_UPF'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_自定义指标数据_UPF';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_report -- Table structure for kpi_report
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_report`; DROP TABLE IF EXISTS `kpi_report`;
CREATE TABLE `kpi_report` ( CREATE TABLE `kpi_report` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_report` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpi_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpi_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据记录基础表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据记录基础表';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_report_amf -- Table structure for kpi_report_amf
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_report_amf`; DROP TABLE IF EXISTS `kpi_report_amf`;
CREATE TABLE `kpi_report_amf` ( CREATE TABLE `kpi_report_amf` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_report_amf` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_amf_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpi_amf_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpi_amf_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_AMF'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_AMF';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_report_ausf -- Table structure for kpi_report_ausf
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_report_ausf`; DROP TABLE IF EXISTS `kpi_report_ausf`;
CREATE TABLE `kpi_report_ausf` ( CREATE TABLE `kpi_report_ausf` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_report_ausf` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_ausf_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpi_ausf_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpi_ausf_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_AUSF'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_AUSF';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_report_cbc -- Table structure for kpi_report_cbc
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_report_cbc`; DROP TABLE IF EXISTS `kpi_report_cbc`;
CREATE TABLE `kpi_report_cbc` ( CREATE TABLE `kpi_report_cbc` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_report_cbc` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_cbc_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpi_cbc_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpi_cbc_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_CBC'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_CBC';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_report_hlr -- Table structure for kpi_report_hlr
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_report_hlr`; DROP TABLE IF EXISTS `kpi_report_hlr`;
CREATE TABLE `kpi_report_hlr` ( CREATE TABLE `kpi_report_hlr` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_report_hlr` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_hlr_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpi_hlr_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpi_hlr_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_HLR'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_HLR';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_report_ims -- Table structure for kpi_report_ims
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_report_ims`; DROP TABLE IF EXISTS `kpi_report_ims`;
CREATE TABLE `kpi_report_ims` ( CREATE TABLE `kpi_report_ims` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_report_ims` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_ims_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpi_ims_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpi_ims_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_IMS'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_IMS';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_report_mme -- Table structure for kpi_report_mme
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_report_mme`; DROP TABLE IF EXISTS `kpi_report_mme`;
CREATE TABLE `kpi_report_mme` ( CREATE TABLE `kpi_report_mme` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_report_mme` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_mme_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpi_mme_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpi_mme_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_MME'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_MME';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_report_mocngw -- Table structure for kpi_report_mocngw
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_report_mocngw`; DROP TABLE IF EXISTS `kpi_report_mocngw`;
CREATE TABLE `kpi_report_mocngw` ( CREATE TABLE `kpi_report_mocngw` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_report_mocngw` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_mocngw_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpi_mocngw_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpi_mocngw_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_MOCNGW'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_MOCNGW';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_report_nssf -- Table structure for kpi_report_nssf
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_report_nssf`; DROP TABLE IF EXISTS `kpi_report_nssf`;
CREATE TABLE `kpi_report_nssf` ( CREATE TABLE `kpi_report_nssf` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_report_nssf` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_nssf_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpi_nssf_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpi_nssf_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_NSSF'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_NSSF';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_report_pcf -- Table structure for kpi_report_pcf
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_report_pcf`; DROP TABLE IF EXISTS `kpi_report_pcf`;
CREATE TABLE `kpi_report_pcf` ( CREATE TABLE `kpi_report_pcf` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_report_pcf` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_pcf_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpi_pcf_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpi_pcf_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_PCF'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_PCF';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_report_smf -- Table structure for kpi_report_smf
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_report_smf`; DROP TABLE IF EXISTS `kpi_report_smf`;
CREATE TABLE `kpi_report_smf` ( CREATE TABLE `kpi_report_smf` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_report_smf` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_smf_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpi_smf_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpi_smf_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_SMF'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_SMF';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_report_smsc -- Table structure for kpi_report_smsc
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_report_smsc`; DROP TABLE IF EXISTS `kpi_report_smsc`;
CREATE TABLE `kpi_report_smsc` ( CREATE TABLE `kpi_report_smsc` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_report_smsc` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_smsc_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpi_smsc_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpi_smsc_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_SMSC'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_SMSC';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_report_udm -- Table structure for kpi_report_udm
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_report_udm`; DROP TABLE IF EXISTS `kpi_report_udm`;
CREATE TABLE `kpi_report_udm` ( CREATE TABLE `kpi_report_udm` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_report_udm` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_udm_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpi_udm_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpi_udm_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_UDM'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_UDM';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,15 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------- -- ----------------------------
-- Table structure for kpi_report_upf -- Table structure for kpi_report_upf
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `kpi_report_upf`; DROP TABLE IF EXISTS `kpi_report_upf`;
CREATE TABLE `kpi_report_upf` ( CREATE TABLE `kpi_report_upf` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss', `date` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Date of the report yyyy-mm-dd hh:mi:ss',
`start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss', `start_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Start time of the report hh:mi:ss',
`end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss', `end_time` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'End time of the report hh:mi:ss',
@@ -18,7 +15,6 @@ CREATE TABLE `kpi_report_upf` (
`kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String', `kpi_values` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT 'KPI values JSON String',
`created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳', `created_at` bigint DEFAULT '0' COMMENT 'Creation time 接收到的timestamp秒级存储毫秒时间戳',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_upf_uid_at` (`rm_uid`,`created_at`) USING BTREE KEY `idx_kpi_upf_uid_at` (`ne_uid`,`created_at`) USING BTREE,
KEY `idx_kpi_upf_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_UPF'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KPI_指标数据_UPF';
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,27 +1,8 @@
-- MariaDB dump 10.19 Distrib 10.6.16-MariaDB, for debian-linux-gnu (x86_64)
--
-- Host: 192.168.2.219 Database: omc_db
-- ------------------------------------------------------
-- Server version 10.3.38-MariaDB
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-- --
-- Table structure for table `mml_log` -- Table structure for table `mml_log`
-- --
DROP TABLE IF EXISTS `mml_log`; DROP TABLE IF EXISTS `mml_log`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `mml_log` ( CREATE TABLE `mml_log` (
`id` int(11) NOT NULL AUTO_INCREMENT, `id` int(11) NOT NULL AUTO_INCREMENT,
`user` varchar(32) DEFAULT NULL, `user` varchar(32) DEFAULT NULL,
@@ -32,16 +13,6 @@ CREATE TABLE `mml_log` (
`result` varchar(2048) DEFAULT NULL, `result` varchar(2048) DEFAULT NULL,
`log_time` datetime DEFAULT NULL, `log_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=467 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2024-03-06 17:26:56 -- Dump completed on 2024-03-06 17:26:56

View File

@@ -1,13 +1,12 @@
-- --
-- Table structure for table `nb_state` -- Table structure for table `nb_state`
-- --
DROP TABLE IF EXISTS `nb_state`; DROP TABLE IF EXISTS `nb_state`;
CREATE TABLE `nb_state` ( CREATE TABLE `nb_state` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元类型 AMF MME', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元ID', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '资源唯一标识', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`create_time` bigint DEFAULT '0' COMMENT '创建时间', `create_time` bigint DEFAULT '0' COMMENT '创建时间',
`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '基站IP地址', `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '基站IP地址',
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '基站名称', `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '基站名称',
@@ -16,7 +15,6 @@ CREATE TABLE `nb_state` (
`state` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'OFF' COMMENT '基站状态 OFF ON', `state` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'OFF' COMMENT '基站状态 OFF ON',
`time` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '状态时间', `time` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '状态时间',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_state_type_id_uid_cat` (`ne_type`,`ne_id`,`rm_uid`,`create_time`) USING BTREE COMMENT '唯一网元类型和ID' KEY `idx_nbst_ne_time` (`ne_uid`,`create_time`) USING BTREE COMMENT '状态时间',
KEY `idx_nbst_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='基站_状态记录表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='基站_状态记录表';
-- Dump completed on 2025-02-08 12:50:13

View File

@@ -1,13 +1,12 @@
-- MariaDB dump 10.19 Distrib 10.6.16-MariaDB, for debian-linux-gnu (x86_64)
-- --
-- Table structure for table `ne_config_backup` -- Table structure for table `ne_config_backup`
-- --
DROP TABLE IF EXISTS `ne_config_backup`; DROP TABLE IF EXISTS `ne_config_backup`;
CREATE TABLE `ne_config_backup` ( CREATE TABLE `ne_config_backup` (
`id` bigint NOT NULL AUTO_INCREMENT, `id` bigint NOT NULL AUTO_INCREMENT,
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元类型', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元ID', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '压缩包名称', `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '压缩包名称',
`path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '压缩包位置', `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '压缩包位置',
`remark` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '备注', `remark` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '备注',
@@ -16,7 +15,5 @@ CREATE TABLE `ne_config_backup` (
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者', `update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',
`update_time` bigint DEFAULT '0' COMMENT '更新时间', `update_time` bigint DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_cb_type_id` (`ne_type`,`ne_id`) USING BTREE COMMENT '网元类型_网元ID' KEY `idx_cfgbak_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='网元_配置文件备份记录'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='网元_配置文件备份记录';
-- Dump completed on 2025-02-14 15:26:56

View File

@@ -1,6 +1,3 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- --
-- Table structure for table `ne_host` -- Table structure for table `ne_host`
-- --
@@ -26,11 +23,3 @@ CREATE TABLE `ne_host` (
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_type_group_title` (`host_type`,`group_id`,`title`) USING BTREE COMMENT '同组内名称唯一' UNIQUE KEY `uk_type_group_title` (`host_type`,`group_id`,`title`) USING BTREE COMMENT '同组内名称唯一'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='网元_主机表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='网元_主机表';
-- 初始数据对应网元
INSERT INTO `ne_host` VALUES (1, 'ssh', '1', 'OMC_001_22', '127.0.0.1', 22, 'omcuser', '2', '', '', '', '', '', 'system', 1729063407329, '', 0);
INSERT INTO `ne_host` VALUES (2, 'telnet', '1', 'OMC_001_4100', '127.0.0.1', 4100, 'admin', '0', 'NUBonCin4GZgl7o12YjeClE8ToQmYp9KWdhMjSNxc2M=', '', '', '', '', 'system', 1729063407329, '', 0);
SET FOREIGN_KEY_CHECKS=1;
-- Dump completed on 2025-02-14 15:26:56

View File

@@ -1,11 +1,6 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- --
-- Table structure for table `ne_host_cmd` -- Table structure for table `ne_host_cmd`
-- --
DROP TABLE IF EXISTS `ne_host_cmd`; DROP TABLE IF EXISTS `ne_host_cmd`;
CREATE TABLE `ne_host_cmd` ( CREATE TABLE `ne_host_cmd` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '命令主键', `id` bigint NOT NULL AUTO_INCREMENT COMMENT '命令主键',
@@ -21,7 +16,3 @@ CREATE TABLE `ne_host_cmd` (
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_host_type_group_title`(`cmd_type` ASC, `group_id` ASC, `title` ASC) USING BTREE COMMENT '同组内名称唯一' UNIQUE INDEX `uk_host_type_group_title`(`cmd_type` ASC, `group_id` ASC, `title` ASC) USING BTREE COMMENT '同组内名称唯一'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '网元主机命令表' ROW_FORMAT = DYNAMIC; ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '网元主机命令表' ROW_FORMAT = DYNAMIC;
SET FOREIGN_KEY_CHECKS=1;
-- Dump completed on 2025-02-14 15:26:56

View File

@@ -1,23 +1,20 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- --
-- Table structure for table `ne_info` -- Table structure for table `ne_info`
-- --
DROP TABLE IF EXISTS `ne_info`; DROP TABLE IF EXISTS `ne_info`;
CREATE TABLE `ne_info` ( CREATE TABLE `ne_info` (
`id` bigint NOT NULL AUTO_INCREMENT, `id` bigint NOT NULL AUTO_INCREMENT COMMENT '网元ID',
`core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元ID',
`rm_uid` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元资源唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元名称', `ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元名称',
`ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元服务IP', `ip_addr` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元服务IP',
`port` int DEFAULT '0' COMMENT '端口', `port` int DEFAULT '0' COMMENT '端口',
`pv_flag` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'PNF' COMMENT '网元虚拟化标识 物理PNF 虚拟VNF', `pv_flag` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'PNF' COMMENT '网元虚拟化标识 物理PNF 虚拟VNF',
`province` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'AreaNet' COMMENT '省份地域', `province` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'AreaNet' COMMENT '省份地域',
`vendor_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '厂商名称', `vendor_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '厂商名称',
`dn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '网络标识', `dn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '网络标识',
`ne_address` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'MAC地址', `mac_addr` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'MAC地址',
`host_ids` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元主机ID组 数据格式(ssh,telnet) UDM(ssh,telnet,redis) UPF(ssh,telnet,telnet)', `host_ids` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元主机ID组 数据格式(ssh,telnet) UDM(ssh,telnet,redis) UPF(ssh,telnet,telnet)',
`status` int DEFAULT '0' COMMENT '网元状态 0离线 1在线 2配置待下发 3备用模式', `status` int DEFAULT '0' COMMENT '网元状态 0离线 1在线 2配置待下发 3备用模式',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '备注', `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '备注',
@@ -26,12 +23,5 @@ CREATE TABLE `ne_info` (
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者', `update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',
`update_time` bigint DEFAULT '0' COMMENT '更新时间', `update_time` bigint DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `ux_netype_neid` (`ne_type`,`ne_id`) USING BTREE UNIQUE KEY `uk_core_ne_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '唯一核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='网元_基础信息表 关联对应版本、授权、主机'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='网元_基础信息表 关联创建版本、授权、主机';
-- 初始网元数据
INSERT INTO `ne_info` VALUES (1, 'OMC', '001', '4400HXOMC001', 'OMC_001', '127.0.0.1', 33030, 'PNF', 'AreaNet', '-', '-', '-', '1,2', 0, '', 'system', 1713928436971, '', 0);
SET FOREIGN_KEY_CHECKS=1;
-- Dump completed on 2025-02-14 15:26:56

View File

@@ -1,19 +1,15 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- --
-- Table structure for table `ne_license` -- Table structure for table `ne_license`
-- --
DROP TABLE IF EXISTS `ne_license`; DROP TABLE IF EXISTS `ne_license`;
CREATE TABLE `ne_license` ( CREATE TABLE `ne_license` (
`id` bigint NOT NULL AUTO_INCREMENT, `id` bigint NOT NULL AUTO_INCREMENT,
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元类型', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元ID', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`activation_request_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '激活申请代码', `activation_request_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '激活申请代码',
`license_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '激活授权文件', `license_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '激活授权文件',
`capability` bigint DEFAULT '0' COMMENT '用户容量', `capability` bigint DEFAULT '0' COMMENT '容量 仅AMF/MME/UDM限制',
`serial_num` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '序列号', `serial_num` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '序列号',
`expiry_date` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '许可证到期日期', `expiry_date` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '许可证到期日期',
`status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '状态 0无效 1有效', `status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '状态 0无效 1有效',
@@ -23,12 +19,5 @@ CREATE TABLE `ne_license` (
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者', `update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',
`update_time` bigint DEFAULT '0' COMMENT '更新时间', `update_time` bigint DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_lic_type_id` (`ne_type`,`ne_id`) USING BTREE COMMENT '唯一网元类型和网元ID' UNIQUE KEY `uk_lic_core_ne_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '唯一核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='网元_授权激活信息'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='网元_授权激活信息';
-- 初始数据对应网元
INSERT INTO `ne_license` VALUES (1, 'OMC', '001', '', '', 0, '', '', '0', '', 'system', 1713928436971, '', 0);
SET FOREIGN_KEY_CHECKS=1;
-- Dump completed on 2025-02-14 15:26:56

View File

@@ -1,6 +1,3 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- --
-- Table structure for table `ne_software` -- Table structure for table `ne_software`
-- --
@@ -19,7 +16,3 @@ CREATE TABLE `ne_software` (
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_type_name_version` (`ne_type`,`name`,`version`) USING BTREE COMMENT '唯一网元类型和文件名版本是否唯一' UNIQUE KEY `uk_type_name_version` (`ne_type`,`name`,`version`) USING BTREE COMMENT '唯一网元类型和文件名版本是否唯一'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='网元_软件包'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='网元_软件包';
SET FOREIGN_KEY_CHECKS=1;
-- Dump completed on 2025-02-14 15:26:56

View File

@@ -1,14 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- --
-- Table structure for table `ne_state` -- Table structure for table `ne_state`
-- --
DROP TABLE IF EXISTS `ne_state`; DROP TABLE IF EXISTS `ne_state`;
CREATE TABLE `ne_state` ( CREATE TABLE `ne_state` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`version` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '版本', `version` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '版本',
`capability` bigint DEFAULT '0' COMMENT '用户容量', `capability` bigint DEFAULT '0' COMMENT '用户容量',
`serial_num` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '序列号', `serial_num` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '序列号',
@@ -20,7 +18,5 @@ CREATE TABLE `ne_state` (
`nf_mem_used` bigint DEFAULT '0' COMMENT '内存使用KB-nf', `nf_mem_used` bigint DEFAULT '0' COMMENT '内存使用KB-nf',
`create_time` bigint DEFAULT '0' COMMENT '创建时间', `create_time` bigint DEFAULT '0' COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_type_id_time` (`ne_type`,`ne_id`,`create_time`) USING BTREE COMMENT 'idx_state_ne_type_id_at' KEY `idx_state_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='网元_状态记录内存/CPU/磁盘'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='网元_状态记录内存/CPU/磁盘';
SET FOREIGN_KEY_CHECKS=1;

View File

@@ -1,16 +1,12 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- --
-- Table structure for table `ne_version` -- Table structure for table `ne_version`
-- --
DROP TABLE IF EXISTS `ne_version`; DROP TABLE IF EXISTS `ne_version`;
CREATE TABLE `ne_version` ( CREATE TABLE `ne_version` (
`id` bigint NOT NULL AUTO_INCREMENT, `id` bigint NOT NULL AUTO_INCREMENT,
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元类型', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元ID', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '当前包名', `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '当前包名',
`version` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '当前版本', `version` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '-' COMMENT '当前版本',
`path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '当前软件包', `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '当前软件包',
@@ -26,12 +22,5 @@ CREATE TABLE `ne_version` (
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者', `update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',
`update_time` bigint DEFAULT '0' COMMENT '更新时间', `update_time` bigint DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_ver_type_id` (`ne_type`,`ne_id`) USING BTREE COMMENT '唯一网元类型和ID' UNIQUE KEY `uk_ver_core_ne_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '唯一核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='网元_版本信息'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='网元_版本信息';
-- 初始数据对应网元
INSERT INTO `ne_version` VALUES (1, 'OMC', '001', '', '', '', '', '', '', '', '', '', '0', 'system', 1729063407329, '', 0);
SET FOREIGN_KEY_CHECKS=1;
-- Dump completed on 2025-02-14 15:26:56

View File

@@ -1,7 +1,6 @@
-- --
-- Table structure for table `trace_task` -- Table structure for table `trace_task`
-- --
DROP TABLE IF EXISTS `trace_task`; DROP TABLE IF EXISTS `trace_task`;
CREATE TABLE `trace_task` ( CREATE TABLE `trace_task` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID', `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
@@ -18,9 +17,8 @@ CREATE TABLE `trace_task` (
`create_time` bigint DEFAULT '0' COMMENT '创建时间', `create_time` bigint DEFAULT '0' COMMENT '创建时间',
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '任务标题', `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '任务标题',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '备注', `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '备注',
`ne_list` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元列表 neType_neId 例如 UDM_001,AMF_001', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_list` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '网元列表 neUid,neUid',
`notify_url` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '信息数据通知回调地址UDP 例如udp:192.168.5.58:33033', `notify_url` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '信息数据通知回调地址UDP 例如udp:192.168.5.58:33033',
PRIMARY KEY (`id`) USING BTREE PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='跟踪_任务'; ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='跟踪_任务';
-- Dump completed on 2025-04-14 14:26:59

View File

@@ -1,19 +1,19 @@
-- --
-- Table structure for table `udm_auth` -- Table structure for table `udm_auth`
-- --
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 '主键',
`core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`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',
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识',
`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',
`algo_index` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'algoIndex', `algo_index` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'algoIndex',
`opc` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'OPC', `opc` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'OPC',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_auth_imsi_ne` (`imsi`,`ne_id`) USING BTREE COMMENT 'imsi_neid唯一主键' UNIQUE KEY `uk_udm_auth_imsi_ne` (`ne_uid`,`imsi`) USING BTREE COMMENT '唯一主键-IMSI_网元ID',
KEY `idx_udm_auth_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) 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用户数据_鉴权';
-- Dump completed on 2025-02-14 15:26:56

View File

@@ -1,16 +1,16 @@
-- --
-- Table structure for table `udm_extend` -- Table structure for table `udm_extend`
-- --
DROP TABLE IF EXISTS `udm_extend`; DROP TABLE IF EXISTS `udm_extend`;
CREATE TABLE `udm_extend` ( CREATE TABLE `udm_extend` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '默认ID', `id` int NOT NULL AUTO_INCREMENT COMMENT '默认ID',
`core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`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网元标识',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '备注', `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `imsi_ne` (`imsi`,`ne_id`) USING BTREE COMMENT 'imsi_ne唯一索引' UNIQUE KEY `uk_udm_extend_imsi_ne` (`ne_uid`,`imsi`) USING BTREE COMMENT '唯一索引-IMSI_资源标识',
KEY `idx_udm_extend_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UDM用户数据_IMSI扩展信息'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UDM用户数据_IMSI扩展信息';
-- Dump completed on 2025-02-14 15:26:56

View File

@@ -1,13 +1,14 @@
-- --
-- Table structure for table `udm_sub` -- Table structure for table `udm_sub`
-- --
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 '主键',
`core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`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',
@@ -36,7 +37,6 @@ CREATE TABLE `udm_sub` (
`smf_sel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'smfSel', `smf_sel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'smfSel',
`cag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'CAG', `cag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'CAG',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_sub_imsi_ne` (`imsi`,`ne_id`) USING BTREE COMMENT 'imsi_neid唯一主键' UNIQUE KEY `uk_udm_sub_imsi_ne` (`ne_uid`,`imsi`) USING BTREE COMMENT '唯一索引-SIM卡_网元标识',
KEY `idx_udm_sub_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UDM用户数据_签约'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UDM用户数据_签约';
-- Dump completed on 2025-02-14 15:26:56

View File

@@ -1,15 +1,15 @@
-- --
-- Table structure for table `udm_voip` -- Table structure for table `udm_voip`
-- --
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 '主键',
`ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UDM网元标识', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`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 '密码',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_voip_user_ne` (`username`,`ne_id`) USING BTREE COMMENT 'user_neid唯一主键' UNIQUE KEY `uk_udm_voip_user_ne` (`username`,`ne_uid`) USING BTREE COMMENT 'user_neid唯一主键',
KEY `idx_udm_voip_smsc_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) 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';
-- Dump completed on 2025-04-22 15:26:56

View File

@@ -1,18 +1,18 @@
-- --
-- Table structure for table `udm_volte_ims` -- Table structure for table `udm_volte_ims`
-- --
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 '主键',
`core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`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,
UNIQUE KEY `uk_volte_imsi_ne` (`imsi`,`msisdn`,`ne_id`) USING BTREE COMMENT 'imsi_msisdn_neid唯一主键', UNIQUE KEY `uk_volte_imsi_ne` (`ne_uid`,`imsi`,`msisdn`) USING BTREE COMMENT 'imsi_msisdn_neid唯一主键',
KEY `idx_volte_tag` (`tag`) USING BTREE COMMENT 'tag索引' KEY `idx_udm_volte_tag` (`tag`) USING BTREE COMMENT 'tag索引',
KEY `idx_udm_volte_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) 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用户';
-- Dump completed on 2025-04-22 15:26:56

View File

@@ -4,15 +4,14 @@
DROP TABLE IF EXISTS `ue_event`; DROP TABLE IF EXISTS `ue_event`;
CREATE TABLE `ue_event` ( CREATE TABLE `ue_event` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '可能没有', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`timestamp` bigint DEFAULT '48' COMMENT '接收到的timestamp秒级存储毫秒时间戳', `timestamp` bigint DEFAULT '48' COMMENT '接收到的timestamp秒级存储毫秒时间戳',
`event_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '事件类型 auth-result detach cm-state', `event_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '事件类型 auth-result detach cm-state',
`event_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'data JSON String', `event_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'data JSON String',
`created_at` bigint DEFAULT '0' COMMENT '记录创建存储毫秒', `created_at` bigint DEFAULT '0' COMMENT '记录创建存储毫秒',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_type_t` (`event_type`,`timestamp`) USING BTREE KEY `idx_ue_type_t` (`timestamp`,`event_type`) USING BTREE,
KEY `idx_ue_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UE事件_基础表结构'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UE事件_基础表结构';
-- Dump completed on 2025-02-14 15:26:56

View File

@@ -4,15 +4,16 @@
DROP TABLE IF EXISTS `ue_event_amf`; DROP TABLE IF EXISTS `ue_event_amf`;
CREATE TABLE `ue_event_amf` ( CREATE TABLE `ue_event_amf` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '可能没有', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`timestamp` bigint DEFAULT '48' COMMENT '接收到的timestamp秒级存储毫秒时间戳', `timestamp` bigint DEFAULT '48' COMMENT '接收到的timestamp秒级存储毫秒时间戳',
`event_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '事件类型 auth-result detach cm-state', `event_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '事件类型 auth-result detach cm-state',
`event_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'data JSON String', `event_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'data JSON String',
`created_at` bigint DEFAULT '0' COMMENT '记录创建存储毫秒', `created_at` bigint DEFAULT '0' COMMENT '记录创建存储毫秒',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_amf_type_t` (`event_type`,`timestamp`) USING BTREE KEY `idx_ue_amf_type_t` (`timestamp`,`event_type`) USING BTREE,
KEY `idx_ue_amf_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UE事件_AMF终端接入'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UE事件_AMF终端接入';
-- Dump completed on 2025-02-14 15:26:56 -- Dump completed on 2025-02-14 15:26:56

View File

@@ -4,15 +4,16 @@
DROP TABLE IF EXISTS `ue_event_mme`; DROP TABLE IF EXISTS `ue_event_mme`;
CREATE TABLE `ue_event_mme` ( CREATE TABLE `ue_event_mme` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `core_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '核心网唯一标识',
`ne_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', `ne_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '网元唯一标识',
`rm_uid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '可能没有', `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '网元类型',
`timestamp` bigint DEFAULT '48' COMMENT '接收到的timestamp秒级存储毫秒时间戳', `timestamp` bigint DEFAULT '48' COMMENT '接收到的timestamp秒级存储毫秒时间戳',
`event_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '事件类型 auth-result detach cm-state', `event_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '事件类型 auth-result detach cm-state',
`event_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'data JSON String', `event_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'data JSON String',
`created_at` bigint DEFAULT '0' COMMENT '记录创建存储毫秒', `created_at` bigint DEFAULT '0' COMMENT '记录创建存储毫秒',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
KEY `idx_mme_type_t` (`event_type`,`timestamp`) USING BTREE KEY `idx_ue_mme_type_t` (`timestamp`,`event_type`) USING BTREE,
KEY `idx_ue_mme_uid_type` (`core_uid`,`ne_uid`,`ne_type`) USING BTREE COMMENT '索引-核心网_资源标识_类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UE事件_MME终端接入'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UE事件_MME终端接入';
-- Dump completed on 2025-02-14 15:26:56 -- Dump completed on 2025-02-14 15:26:56

View File

@@ -47,8 +47,8 @@ func PostCDREventFrom(w http.ResponseWriter, r *http.Request) {
} }
// 是否存在网元 // 是否存在网元
neInfo := neService.NewNeInfo.FindByRmuid(body.RmUID) neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid("*", body.RmUID)
if neInfo.NeType != body.NeType || neInfo.RmUID != body.RmUID { if neInfo.NeType != body.NeType || neInfo.NeUID != body.RmUID {
services.ResponseInternalServerError500ProcessError(w, fmt.Errorf("network element does not exist")) services.ResponseInternalServerError500ProcessError(w, fmt.Errorf("network element does not exist"))
return return
} }
@@ -88,14 +88,14 @@ func PostCDREventFrom(w http.ResponseWriter, r *http.Request) {
switch neInfo.NeType { switch neInfo.NeType {
case "IMS": case "IMS":
if v, ok := body.CDR["recordType"]; ok && (v == "MOC" || v == "MTSM") { if v, ok := body.CDR["recordType"]; ok && (v == "MOC" || v == "MTSM") {
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s", wsService.GROUP_IMS_CDR, neInfo.NeId), data) wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_IMS_CDR, neInfo.CoreUID, neInfo.NeUID), data)
} }
case "SMF": case "SMF":
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s", wsService.GROUP_SMF_CDR, neInfo.NeId), data) wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_SMF_CDR, neInfo.CoreUID, neInfo.NeUID), data)
case "SMSC": case "SMSC":
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s", wsService.GROUP_SMSC_CDR, neInfo.NeId), data) wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_SMSC_CDR, neInfo.CoreUID, neInfo.NeUID), data)
case "SGWC": case "SGWC":
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s", wsService.GROUP_SGWC_CDR, neInfo.NeId), data) wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_SGWC_CDR, neInfo.CoreUID, neInfo.NeUID), data)
} }
services.ResponseStatusOK204NoContent(w) services.ResponseStatusOK204NoContent(w)

View File

@@ -15,9 +15,7 @@ import (
"be.ems/lib/global" "be.ems/lib/global"
"be.ems/lib/log" "be.ems/lib/log"
"be.ems/lib/services" "be.ems/lib/services"
"be.ems/src/framework/constants"
"be.ems/src/framework/database/db" "be.ems/src/framework/database/db"
neService "be.ems/src/modules/network_element/service"
"github.com/go-resty/resty/v2" "github.com/go-resty/resty/v2"
"github.com/gorilla/mux" "github.com/gorilla/mux"
@@ -26,8 +24,6 @@ import (
var ( var (
// NE CM export/import // NE CM export/import
NeCmUri = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/cm" NeCmUri = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/cm"
// NE info
UriNeInfo = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/neInfo"
// NE backup file // NE backup file
UriNeCmFile = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/{neType}/neBackup/{fileName}" UriNeCmFile = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/{neType}/neBackup/{fileName}"
// service action uri, action: start/stop/restart // service action uri, action: start/stop/restart
@@ -36,7 +32,6 @@ var (
UriNeInstance = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/instance/{action}" UriNeInstance = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/instance/{action}"
CustomNeCmUri = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/cm" CustomNeCmUri = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/cm"
CustomUriNeInfo = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/neInfo"
CustomUriNeCmFile = config.UriPrefix + "/systemManagement/{apiVersion}/{neType}/neBackup/{fileName}" CustomUriNeCmFile = config.UriPrefix + "/systemManagement/{apiVersion}/{neType}/neBackup/{fileName}"
// service action uri, action: start/stop/restart // service action uri, action: start/stop/restart
CustomUriNeService = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/service/{action}" CustomUriNeService = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/service/{action}"
@@ -68,37 +63,6 @@ func init() {
SetTimeout(time.Duration(1 * time.Second)) SetTimeout(time.Duration(1 * time.Second))
} }
func GetNeInfo(w http.ResponseWriter, r *http.Request) {
log.Debug("GetNeInfo processing... ")
// _, err := services.CheckFrontValidRequest(w, r)
// if err != nil {
// log.Error("Request error:", err)
// return
// }
vars := mux.Vars(r)
neType := vars["elementTypeValue"]
if neType == "" {
log.Error("elementTypeValue is empty")
services.ResponseNotFound404UriNotExist(w, r)
return
}
neId := services.GetUriParamString(r, "ne_id", ",", false, false)
// no, _ := strconv.ParseInt(neId, 10, 64)
neInfo, err := dborm.XormGetNeInfo(neType, neId)
if err != nil {
log.Error("dborm.XormGetNeInfo is failed:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
}
var response services.DataResponse
response.Data = neInfo
services.ResponseWithJson(w, http.StatusOK, response)
}
type OmcNeConfig struct { type OmcNeConfig struct {
NeId string `json:"neId" xorm:"ne_id"` // 网元标识(内部), NeId string `json:"neId" xorm:"ne_id"` // 网元标识(内部),
RmUID string `json:"rmUID" xorm:"rm_uid"` // rmUID 网元唯一标识 RmUID string `json:"rmUID" xorm:"rm_uid"` // rmUID 网元唯一标识
@@ -110,291 +74,6 @@ type OmcNeConfig struct {
Dn string `json:"dn" xorm:"dn"` // 资源里边的ManagedBy性能的Dn网络唯一标识 Dn string `json:"dn" xorm:"dn"` // 资源里边的ManagedBy性能的Dn网络唯一标识
} }
func PostNeInfo(w http.ResponseWriter, r *http.Request) {
log.Debug("PostNeInfo processing... ")
// _, err := services.CheckFrontValidRequest(w, r)
// if err != nil {
// log.Error("Request error:", err)
// return
// }
vars := mux.Vars(r)
neType := vars["elementTypeValue"]
if neType == "" {
log.Error("elementTypeValue is empty")
services.ResponseNotFound404UriNotExist(w, r)
return
}
neTypeUpper := strings.ToUpper(neType)
syncFlag := services.GetUriParamString(r, "sync2ne", ",", false, false)
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen))
if err != nil {
log.Error("Failed to o.ReadAll:", err)
services.ResponseNotFound404UriNotExist(w, r)
return
}
log.Trace("Body:", string(body))
neInfo := new(dborm.NeInfo)
err = json.Unmarshal(body, neInfo)
if err != nil {
log.Error("Failed to json.Unmarshal:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
}
//neInfo.UpdateTime = time.Now().Format(time.DateTime)
neInfo.UpdateTime = time.Now()
log.Debug("NE info:", neInfo)
//if !config.GetYamlConfig().OMC.Chk2Ne {
if syncFlag == "false" || neTypeUpper == config.GetYamlConfig().OMC.NeType {
neInfo.Status = NEStatusMaintain
affected, err := dborm.XormInsertNeInfo(neInfo)
if err != nil {
log.Error("Failed to insert Ne info:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
}
// 刷新缓存不存在结构体网元Id空字符串
neService.NewNeInfo.RefreshByNeTypeAndNeID(neInfo.NeType, neInfo.NeId)
mapRow := make(map[string]interface{})
row := map[string]interface{}{"affectedRows": affected}
mapRow["data"] = row
services.ResponseWithJson(w, http.StatusOK, mapRow)
return
} else {
hostUri := global.CombineHostUri(neInfo.Ip, neInfo.Port)
//hostUri := fmt.Sprintf("http://%s:%v", neInfo.Ip, neInfo.Port)
apiUri := fmt.Sprintf("%s/systemManagement/v1/elementType/%s/objectType/config/omcNeConfig?ne_id=%s", config.DefaultUriPrefix, strings.ToLower(neInfo.NeType), neInfo.NeId)
requestURI2NF := fmt.Sprintf("%s%s", hostUri, apiUri)
log.Debug("requestURI2NF:", requestURI2NF)
omcNeConfig := &OmcNeConfig{
NeId: neInfo.NeId,
RmUID: neInfo.RmUID,
NeName: neInfo.NeName,
PvFlag: neInfo.PvFlag,
Province: neInfo.Province,
VendorName: neInfo.VendorName,
Dn: neInfo.Dn,
}
body, _ = json.Marshal(omcNeConfig)
response, err := client.R().
EnableTrace().
SetHeaders(map[string]string{"User-Agent": config.GetDefaultUserAgent()}).
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
SetBody(body).
Put(requestURI2NF)
if err != nil {
log.Error("Failed to Put:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
}
log.Info("StatusCode: ", response.StatusCode())
respMsg := make(map[string]interface{})
switch response.StatusCode() {
case http.StatusOK, http.StatusCreated, http.StatusNoContent, http.StatusAccepted:
neInfo.Status = NEStatusActive
affected, err := dborm.XormInsertNeInfo(neInfo)
if err != nil {
log.Error("Failed to dborm.XormInsertNeInfo:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
} else if affected <= 0 {
log.Infof("Not record affected to insert ne_info")
}
// 刷新缓存不存在结构体网元Id空字符串
neService.NewNeInfo.RefreshByNeTypeAndNeID(neInfo.NeType, neInfo.NeId)
services.ResponseStatusOK204NoContent(w)
return
default:
log.Info("response body:", string(response.Body()))
body := new(map[string]interface{})
_ = json.Unmarshal(response.Body(), &body)
respMsg["error"] = body
}
services.ResponseWithJson(w, response.StatusCode(), respMsg)
return
}
}
func PutNeInfo(w http.ResponseWriter, r *http.Request) {
log.Debug("PutNeInfo processing... ")
// _, err := services.CheckFrontValidRequest(w, r)
// if err != nil {
// log.Error("Request error:", err)
// return
// }
vars := mux.Vars(r)
neType := vars["elementTypeValue"]
if neType == "" {
log.Error("elementTypeValue is empty")
services.ResponseNotFound404UriNotExist(w, r)
return
}
neTypeLower := strings.ToLower(neType)
neTypeUpper := strings.ToUpper(neType)
syncFlag := services.GetUriParamString(r, "sync2ne", ",", false, false)
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen))
if err != nil {
log.Error("Failed to io.ReadAll:", err)
services.ResponseNotFound404UriNotExist(w, r)
return
}
neInfo := new(dborm.NeInfo)
_ = json.Unmarshal(body, neInfo)
neInfo.NeType = strings.ToUpper(neType)
neInfo.UpdateTime = time.Now()
log.Debug("NE info:", neInfo)
//if !config.GetYamlConfig().OMC.Chk2Ne {
if syncFlag == "false" || neTypeUpper == config.GetYamlConfig().OMC.NeType {
neInfo.Status = NEStatusMaintain
affected, err := dborm.XormUpdateNeInfo(neInfo)
if err != nil {
log.Error("Failed to update Ne info:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
}
// 刷新缓存不存在结构体网元Id空字符串
neService.NewNeInfo.RefreshByNeTypeAndNeID(neInfo.NeType, neInfo.NeId)
mapRow := make(map[string]interface{})
row := map[string]interface{}{"affectedRows": affected}
mapRow["data"] = row
services.ResponseWithJson(w, http.StatusOK, mapRow)
return
} else {
hostUri := global.CombineHostUri(neInfo.Ip, neInfo.Port)
//hostUri := fmt.Sprintf("http://%s:%v", neInfo.Ip, neInfo.Port)
apiUri := fmt.Sprintf("%s/systemManagement/v1/elementType/%s/objectType/config/omcNeConfig?ne_id=%s", config.DefaultUriPrefix, neTypeLower, neInfo.NeId)
requestURI2NF := fmt.Sprintf("%s%s", hostUri, apiUri)
log.Debug("requestURI2NF:", requestURI2NF)
omcNeConfig := &OmcNeConfig{
NeId: neInfo.NeId,
RmUID: neInfo.RmUID,
NeName: neInfo.NeName,
PvFlag: neInfo.PvFlag,
Province: neInfo.Province,
VendorName: neInfo.VendorName,
Dn: neInfo.Dn,
}
body, _ = json.Marshal(omcNeConfig)
response, err := client.R().
EnableTrace().
SetHeaders(map[string]string{constants.HEADER_KEY: r.Header.Get(constants.HEADER_KEY)}).
SetHeaders(map[string]string{"User-Agent": config.GetDefaultUserAgent()}).
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
SetBody(body).
Put(requestURI2NF)
if err != nil {
log.Error("Failed to Put:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
}
log.Info("StatusCode: ", response.StatusCode())
respMsg := make(map[string]interface{})
switch response.StatusCode() {
case http.StatusOK, http.StatusCreated, http.StatusNoContent, http.StatusAccepted:
neInfo.Status = NEStatusActive
affected, err := dborm.XormUpdateNeInfo(neInfo)
if err != nil {
log.Error("Failed to dborm.XormUpdateNeInfo:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
} else if affected <= 0 {
log.Infof("Not record affected to insert ne_info")
}
// 刷新缓存不存在结构体网元Id空字符串
neService.NewNeInfo.RefreshByNeTypeAndNeID(neInfo.NeType, neInfo.NeId)
services.ResponseStatusOK204NoContent(w)
return
default:
log.Info("response body:", string(response.Body()))
body := new(map[string]interface{})
_ = json.Unmarshal(response.Body(), &body)
respMsg["error"] = body
}
services.ResponseWithJson(w, response.StatusCode(), respMsg)
return
}
}
func DeleteNeInfo(w http.ResponseWriter, r *http.Request) {
log.Debug("DeleteNeInfo processing... ")
// _, err := services.CheckFrontValidRequest(w, r)
// if err != nil {
// log.Error("Request error:", err)
// return
// }
vars := mux.Vars(r)
neType := vars["elementTypeValue"]
if neType == "" {
log.Error("elementTypeValue is empty")
services.ResponseNotFound404UriNotExist(w, r)
return
}
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen))
if err != nil {
log.Error("io.ReadAll is failed:", err)
services.ResponseNotFound404UriNotExist(w, r)
return
}
neInfo := new(dborm.NeInfo)
_ = json.Unmarshal(body, neInfo)
neInfo.NeType = strings.ToUpper(neType)
neInfo.NeId = services.GetUriParamString(r, "ne_id", ",", false, false)
neInfo, err = dborm.XormGetNeInfo(neInfo.NeType, neInfo.NeId)
if err != nil || neInfo == nil {
log.Error("Failed to delete Ne info:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
}
log.Debug("NE info:", neInfo)
// if NE in active status, can't delete NE
if !IsActiveNF(neInfo) {
affected, err := dborm.XormDeleteNeInfo(neInfo)
if err != nil {
log.Error("Failed to delete Ne info:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
}
// 刷新缓存不存在结构体网元Id空字符串
neService.NewNeInfo.RefreshByNeTypeAndNeID(neInfo.NeType, neInfo.NeId)
mapRow := make(map[string]interface{})
row := map[string]interface{}{"affectedRows": affected}
mapRow["data"] = row
services.ResponseWithJson(w, http.StatusOK, mapRow)
return
}
err = global.ErrCMCannotDeleteActiveNE
log.Error(err)
services.ResponseInternalServerError500ProcessError(w, err)
}
func IsActiveNF(neInfo *dborm.NeInfo) bool { func IsActiveNF(neInfo *dborm.NeInfo) bool {
log.Debug("IsActiveNF processing... ") log.Debug("IsActiveNF processing... ")

View File

@@ -1,208 +0,0 @@
package cm
import (
"strings"
"be.ems/lib/config"
"be.ems/lib/core/ctx"
"be.ems/lib/global"
"be.ems/lib/log"
"be.ems/lib/services"
"encoding/json"
"fmt"
"io"
"net/http"
neService "be.ems/src/modules/network_element/service"
"github.com/go-resty/resty/v2"
"github.com/gorilla/mux"
)
var (
// parameter config management
ParamConfigUri = config.DefaultUriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/config/{paraName}"
CustomParamConfigUri = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/config/{paraName}"
)
func GetParamConfigFromNF(w http.ResponseWriter, r *http.Request) {
log.Debug("GetParamConfigFromNF processing... ")
neId := ctx.GetQuery(r, "ne_id")
vars := mux.Vars(r)
neType := vars["elementTypeValue"]
if neType == "" || neId == "" {
log.Error("elementTypeValue is empty")
services.ResponseNotFound404UriNotExist(w, r)
return
}
neInfo := neService.NewNeInfo.FindByNeTypeAndNeID(neType, neId)
var response services.DataResponse
if neInfo.NeId == neId && neInfo.NeId != "" {
requestURI2NF := fmt.Sprintf("http://%s:%v%s", neInfo.IP, neInfo.Port, r.RequestURI)
log.Debug("requestURI2NF:", requestURI2NF)
resp, err := client.R().
EnableTrace().
SetHeaders(map[string]string{"User-Agent": config.GetDefaultUserAgent()}).
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
Get(requestURI2NF)
if err != nil {
log.Error("Failed to Get from NF:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
} else {
_ = json.Unmarshal(resp.Body(), &response)
}
log.Debug("response:", response)
}
services.ResponseWithJson(w, http.StatusOK, response)
}
func PostParamConfigToNF(w http.ResponseWriter, r *http.Request) {
log.Debug("PostParamConfigToNF processing... ")
neId := ctx.GetQuery(r, "ne_id")
vars := mux.Vars(r)
neType := vars["elementTypeValue"]
if neType == "" || neId == "" {
log.Error("elementTypeValue is empty")
services.ResponseNotFound404UriNotExist(w, r)
return
}
neInfo := neService.NewNeInfo.FindByNeTypeAndNeID(neType, neId)
if neInfo.NeId != neId || neInfo.NeId == "" {
log.Error("neId is empty")
services.ResponseInternalServerError500DatabaseOperationFailed(w)
return
}
requestURI2NF := fmt.Sprintf("http://%s:%v%s", neInfo.IP, neInfo.Port, r.RequestURI)
log.Debug("requestURI2NF: POST ", requestURI2NF)
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen)) //io.LimitReader限制大小
if err != nil {
log.Error("io.ReadAll is failed:", err)
services.ResponseNotFound404UriNotExist(w, r)
return
}
client := resty.New()
response, err := client.R().
EnableTrace().
SetHeaders(map[string]string{"User-Agent": config.GetDefaultUserAgent()}).
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
SetBody(body).
Post(requestURI2NF)
if err != nil {
log.Error("Failed to POST to NF:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
}
services.ResponseWithJson(w, http.StatusNoContent, response)
}
func PutParamConfigToNF(w http.ResponseWriter, r *http.Request) {
log.Debug("PutParamConfigToNF processing... ")
vars := mux.Vars(r)
neType := vars["elementTypeValue"]
if neType == "" {
log.Error("elementTypeValue is empty")
services.ResponseNotFound404UriNotExist(w, r)
return
}
// OMC配置接口 /api/rest/systemManagement/v1/elementType/omc/objectType/config/omcNeConfig
if v, ok := vars["paraName"]; ok && v == "omcNeConfig" && strings.ToLower(neType) == "omc" {
PutOMCNeConfig(w, r)
return
}
neId := ctx.GetQuery(r, "ne_id")
neInfo := neService.NewNeInfo.FindByNeTypeAndNeID(neType, neId)
if neInfo.NeId != neId || neInfo.NeId == "" {
log.Error("neId is empty")
services.ResponseInternalServerError500DatabaseOperationFailed(w)
return
}
requestURI2NF := fmt.Sprintf("http://%s:%v%s", neInfo.IP, neInfo.Port, r.RequestURI)
log.Debug("requestURI2NF: PUT ", requestURI2NF)
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen)) //io.LimitReader限制大小
if err != nil {
log.Error("io.ReadAll is failed:", err)
services.ResponseNotFound404UriNotExist(w, r)
return
}
client := resty.New()
response, err := client.R().
EnableTrace().
SetHeaders(map[string]string{"User-Agent": config.GetDefaultUserAgent()}).
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
SetBody(body).
Put(requestURI2NF)
if err != nil {
log.Error("Failed to Put to NF:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
}
services.ResponseWithJson(w, http.StatusNoContent, response)
}
// PutOMCNeConfig 网元OMC配置
//
// 目前没配置返回204
func PutOMCNeConfig(w http.ResponseWriter, r *http.Request) {
services.ResponseStatusOK204NoContent(w)
}
func DeleteParamConfigToNF(w http.ResponseWriter, r *http.Request) {
log.Debug("DeleteParamConfigToNF processing... ")
vars := mux.Vars(r)
neType := vars["elementTypeValue"]
if neType == "" {
log.Error("elementTypeValue is empty")
services.ResponseNotFound404UriNotExist(w, r)
return
}
neId := ctx.GetQuery(r, "ne_id")
neInfo := neService.NewNeInfo.FindByNeTypeAndNeID(neType, neId)
if neInfo.NeId != neId || neInfo.NeId == "" {
log.Error("neId is empty")
services.ResponseInternalServerError500DatabaseOperationFailed(w)
return
}
requestURI2NF := fmt.Sprintf("http://%s:%v%s", neInfo.IP, neInfo.Port, r.RequestURI)
log.Debug("requestURI2NF: DELETE ", requestURI2NF)
client := resty.New()
response, err := client.R().
EnableTrace().
SetHeaders(map[string]string{"User-Agent": config.GetDefaultUserAgent()}).
SetHeaders(map[string]string{"Content-Type": "application/json;charset=UTF-8"}).
Delete(requestURI2NF)
if err != nil {
log.Error("Failed to delete parameter:", err)
services.ResponseInternalServerError500NFConnectRefused(w)
return
}
services.ResponseWithJson(w, http.StatusNoContent, response)
}

View File

@@ -80,8 +80,8 @@ func PostUEEventFromAMF(c *gin.Context) {
} }
// 是否存在网元 // 是否存在网元
neInfo := neService.NewNeInfo.FindByRmuid(data.RmUID) neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid("*", data.RmUID)
if neInfo.NeType != "AMF" || neInfo.RmUID != data.RmUID { if neInfo.NeType != "AMF" || neInfo.NeUID != data.RmUID {
services.ResponseInternalServerError500ProcessError(c.Writer, fmt.Errorf("network element does not exist")) services.ResponseInternalServerError500ProcessError(c.Writer, fmt.Errorf("network element does not exist"))
return return
} }
@@ -165,7 +165,7 @@ func PostUEEventFromAMF(c *gin.Context) {
// 推送到ws订阅组 // 推送到ws订阅组
if data.NeType == "AMF" { if data.NeType == "AMF" {
wsService.NewWSSend.ByGroupID(wsService.GROUP_AMF_UE, data) wsService.NewWSSend.ByGroupID(wsService.GROUP_AMF_UE, data)
wsService.NewWSSend.ByGroupID(wsService.GROUP_AMF_UE+"_"+neInfo.NeId, data) wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_AMF_UE, neInfo.CoreUID, neInfo.NeUID), data)
} }
services.ResponseStatusOK204NoContent(c.Writer) services.ResponseStatusOK204NoContent(c.Writer)
@@ -195,8 +195,8 @@ func PostUEEvent(w http.ResponseWriter, r *http.Request) {
} }
// 是否存在网元 // 是否存在网元
neInfo := neService.NewNeInfo.FindByRmuid(body.RmUID) neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid("*", body.RmUID)
if neInfo.NeType != body.NeType || neInfo.RmUID != body.RmUID { if neInfo.NeType != body.NeType || neInfo.NeUID != body.RmUID {
services.ResponseInternalServerError500ProcessError(w, fmt.Errorf("network element does not exist")) services.ResponseInternalServerError500ProcessError(w, fmt.Errorf("network element does not exist"))
return return
} }
@@ -237,11 +237,11 @@ func PostUEEvent(w http.ResponseWriter, r *http.Request) {
// 推送到ws订阅组 // 推送到ws订阅组
if body.NeType == "MME" { if body.NeType == "MME" {
wsService.NewWSSend.ByGroupID(wsService.GROUP_MME_UE, data) wsService.NewWSSend.ByGroupID(wsService.GROUP_MME_UE, data)
wsService.NewWSSend.ByGroupID(wsService.GROUP_MME_UE+"_"+neInfo.NeId, data) wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_MME_UE, neInfo.CoreUID, neInfo.NeUID), data)
} }
if body.NeType == "AMF" { if body.NeType == "AMF" {
wsService.NewWSSend.ByGroupID(wsService.GROUP_AMF_UE, data) wsService.NewWSSend.ByGroupID(wsService.GROUP_AMF_UE, data)
wsService.NewWSSend.ByGroupID(wsService.GROUP_AMF_UE+"_"+neInfo.NeId, data) wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_AMF_UE, neInfo.CoreUID, neInfo.NeUID), data)
} }
services.ResponseStatusOK204NoContent(w) services.ResponseStatusOK204NoContent(w)

View File

@@ -125,7 +125,7 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
log.Debug("alarmData:", v) log.Debug("alarmData:", v)
// 是否存在网元 neId实际是rmUID // 是否存在网元 neId实际是rmUID
neInfo := neService.FindByRmuid(v.NeId) neInfo := neService.FindByCoreUidAndNeUid("*", v.NeId)
if neInfo.NeType != v.NeType { if neInfo.NeType != v.NeType {
msg := fmt.Sprintf("network element does not exist %s", v.NeId) msg := fmt.Sprintf("network element does not exist %s", v.NeId)
services.ResponseWithJson(w, 400, resp.ErrMsg(msg)) services.ResponseWithJson(w, 400, resp.ErrMsg(msg))
@@ -143,7 +143,7 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
v.AddInfo = fmt.Sprintf("NeInfo:%s", v.NeType) v.AddInfo = fmt.Sprintf("NeInfo:%s", v.NeType)
} }
if v.ObjectUid == "" { if v.ObjectUid == "" {
v.ObjectUid = neInfo.RmUID v.ObjectUid = neInfo.NeUID
} }
if v.ObjectName == "" { if v.ObjectName == "" {
v.ObjectName = neInfo.NeName v.ObjectName = neInfo.NeName
@@ -161,7 +161,7 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
services.ResponseWithJson(w, 400, resp.ErrMsg(err.Error())) services.ResponseWithJson(w, 400, resp.ErrMsg(err.Error()))
return return
} }
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM_EVENT, neInfo.NeType, neInfo.NeId) groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM_EVENT, neInfo.CoreUID, neInfo.NeUID)
wsService.NewWSSend.ByGroupID(groupID, clearAlarmEvent) wsService.NewWSSend.ByGroupID(groupID, clearAlarmEvent)
} }
if v.AlarmStatus == AlarmStatusActive { if v.AlarmStatus == AlarmStatusActive {
@@ -171,7 +171,7 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
services.ResponseWithJson(w, 400, resp.ErrMsg(err.Error())) services.ResponseWithJson(w, 400, resp.ErrMsg(err.Error()))
return return
} }
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM_EVENT, neInfo.NeType, neInfo.NeId) groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM_EVENT, neInfo.CoreUID, neInfo.NeUID)
wsService.NewWSSend.ByGroupID(groupID, newAlarmEvent) wsService.NewWSSend.ByGroupID(groupID, newAlarmEvent)
} }
continue continue
@@ -184,7 +184,7 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
services.ResponseWithJson(w, 400, resp.ErrMsg(err.Error())) services.ResponseWithJson(w, 400, resp.ErrMsg(err.Error()))
return return
} }
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.NeType, neInfo.NeId) groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.CoreUID, neInfo.NeUID)
wsService.NewWSSend.ByGroupID(groupID, clearAlarm) wsService.NewWSSend.ByGroupID(groupID, clearAlarm)
} }
if v.AlarmStatus == AlarmStatusActive { if v.AlarmStatus == AlarmStatusActive {
@@ -194,7 +194,7 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) {
services.ResponseWithJson(w, 400, resp.ErrMsg(err.Error())) services.ResponseWithJson(w, 400, resp.ErrMsg(err.Error()))
return return
} }
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.NeType, neInfo.NeId) groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.CoreUID, neInfo.NeUID)
wsService.NewWSSend.ByGroupID(groupID, newAlarm) wsService.NewWSSend.ByGroupID(groupID, newAlarm)
} }
@@ -232,12 +232,13 @@ func alarmClear(neInfo neModel.NeInfo, v Alarm) (neDataModel.Alarm, error) {
alarmService := neDataService.NewAlarm alarmService := neDataService.NewAlarm
// 检查网元告警ID是否唯一 // 检查网元告警ID是否唯一
alarmIdArr := alarmService.Find(neDataModel.Alarm{ alarmIdArr := alarmService.Find(neDataModel.Alarm{
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
AlarmId: v.AlarmId, AlarmId: v.AlarmId,
}) })
if len(alarmIdArr) != 1 { if len(alarmIdArr) != 1 {
return neDataModel.Alarm{}, fmt.Errorf("[%s %s] clear alarm not exists alarmId:%s", neInfo.NeType, neInfo.NeId, v.AlarmId) return neDataModel.Alarm{}, fmt.Errorf("[%s %s] clear alarm not exists alarmId:%s", neInfo.CoreUID, neInfo.NeUID, v.AlarmId)
} }
// 产生时间 // 产生时间
@@ -245,11 +246,9 @@ func alarmClear(neInfo neModel.NeInfo, v Alarm) (neDataModel.Alarm, error) {
alarm := neDataModel.Alarm{ alarm := neDataModel.Alarm{
ID: alarmIdArr[0].ID, ID: alarmIdArr[0].ID,
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
NeName: neInfo.NeName,
Province: neInfo.Province,
PvFlag: neInfo.PvFlag,
AlarmSeq: alarmIdArr[0].AlarmSeq, // seq 告警序号 AlarmSeq: alarmIdArr[0].AlarmSeq, // seq 告警序号
AlarmId: v.AlarmId, AlarmId: v.AlarmId,
AlarmTitle: v.AlarmTitle, AlarmTitle: v.AlarmTitle,
@@ -276,7 +275,7 @@ func alarmClear(neInfo neModel.NeInfo, v Alarm) (neDataModel.Alarm, error) {
if rows > 0 { if rows > 0 {
return alarm, nil return alarm, nil
} }
return neDataModel.Alarm{}, fmt.Errorf("[%s %s] clear alarm fail", neInfo.NeType, neInfo.NeId) return neDataModel.Alarm{}, fmt.Errorf("[%s %s] clear alarm fail", neInfo.CoreUID, neInfo.NeUID)
} }
// alarmNew 新增告警 // alarmNew 新增告警
@@ -284,24 +283,23 @@ func alarmNew(neInfo neModel.NeInfo, v Alarm) (neDataModel.Alarm, error) {
alarmService := neDataService.NewAlarm alarmService := neDataService.NewAlarm
// 检查网元告警ID是否唯一 // 检查网元告警ID是否唯一
alarmIdArr := alarmService.Find(neDataModel.Alarm{ alarmIdArr := alarmService.Find(neDataModel.Alarm{
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
AlarmId: v.AlarmId, AlarmId: v.AlarmId,
}) })
if len(alarmIdArr) > 0 { if len(alarmIdArr) > 0 {
return neDataModel.Alarm{}, fmt.Errorf("[%s %s] new alarm already exists alarmId:%s", neInfo.NeType, neInfo.NeId, v.AlarmId) return neDataModel.Alarm{}, fmt.Errorf("[%s %s] new alarm already exists alarmId:%s", neInfo.CoreUID, neInfo.NeUID, v.AlarmId)
} }
// seq 告警序号 // seq 告警序号
lastSeq := alarmService.FindAlarmSeqLast(neInfo.NeType, neInfo.NeId) lastSeq := alarmService.FindAlarmSeqLast(neInfo.CoreUID, neInfo.NeUID)
// 产生时间 // 产生时间
eventTime := date.ParseStrToDate(v.EventTime, date.YYYY_MM_DDTHH_MM_SSZ) eventTime := date.ParseStrToDate(v.EventTime, date.YYYY_MM_DDTHH_MM_SSZ)
alarm := neDataModel.Alarm{ alarm := neDataModel.Alarm{
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
NeName: neInfo.NeName,
Province: neInfo.Province,
PvFlag: neInfo.PvFlag,
AlarmSeq: lastSeq + 1, AlarmSeq: lastSeq + 1,
AlarmId: v.AlarmId, AlarmId: v.AlarmId,
AlarmTitle: v.AlarmTitle, AlarmTitle: v.AlarmTitle,
@@ -324,7 +322,7 @@ func alarmNew(neInfo neModel.NeInfo, v Alarm) (neDataModel.Alarm, error) {
alarm.ID = insertId alarm.ID = insertId
return alarm, nil return alarm, nil
} }
return neDataModel.Alarm{}, fmt.Errorf("[%s %s] new alarm fail", neInfo.NeType, neInfo.NeId) return neDataModel.Alarm{}, fmt.Errorf("[%s %s] new alarm fail", neInfo.CoreUID, neInfo.NeUID)
} }
// alarmSaveLog 保存告警日志 // alarmSaveLog 保存告警日志
@@ -332,8 +330,9 @@ func alarmSaveLog(neInfo neModel.NeInfo, v Alarm) int64 {
alarmLogService := neDataService.NewAlarmLog alarmLogService := neDataService.NewAlarmLog
eventTime := date.ParseStrToDate(v.EventTime, date.YYYY_MM_DDTHH_MM_SSZ) eventTime := date.ParseStrToDate(v.EventTime, date.YYYY_MM_DDTHH_MM_SSZ)
alarmLog := neDataModel.AlarmLog{ alarmLog := neDataModel.AlarmLog{
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
AlarmSeq: int64(v.AlarmSeq), AlarmSeq: int64(v.AlarmSeq),
AlarmId: v.AlarmId, AlarmId: v.AlarmId,
AlarmTitle: v.AlarmTitle, AlarmTitle: v.AlarmTitle,
@@ -365,12 +364,13 @@ func alarmEventClear(neInfo neModel.NeInfo, v Alarm) (neDataModel.AlarmEvent, er
alarmEventService := neDataService.NewAlarmEvent alarmEventService := neDataService.NewAlarmEvent
// 检查网元告警ID是否唯一 // 检查网元告警ID是否唯一
alarmIdArr := alarmEventService.Find(neDataModel.AlarmEvent{ alarmIdArr := alarmEventService.Find(neDataModel.AlarmEvent{
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
AlarmId: v.AlarmId, AlarmId: v.AlarmId,
}) })
if len(alarmIdArr) != 1 { if len(alarmIdArr) != 1 {
return neDataModel.AlarmEvent{}, fmt.Errorf("[%s %s] clear alarm event not exists alarmId:%s", neInfo.NeType, neInfo.NeId, v.AlarmId) return neDataModel.AlarmEvent{}, fmt.Errorf("[%s %s] clear alarm event not exists alarmId:%s", neInfo.CoreUID, neInfo.NeUID, v.AlarmId)
} }
// 产生时间 // 产生时间
@@ -378,8 +378,9 @@ func alarmEventClear(neInfo neModel.NeInfo, v Alarm) (neDataModel.AlarmEvent, er
alarmEvent := neDataModel.AlarmEvent{ alarmEvent := neDataModel.AlarmEvent{
ID: alarmIdArr[0].ID, ID: alarmIdArr[0].ID,
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
AlarmSeq: alarmIdArr[0].AlarmSeq, // seq 告警序号 AlarmSeq: alarmIdArr[0].AlarmSeq, // seq 告警序号
AlarmId: v.AlarmId, AlarmId: v.AlarmId,
AlarmTitle: v.AlarmTitle, AlarmTitle: v.AlarmTitle,
@@ -403,7 +404,7 @@ func alarmEventClear(neInfo neModel.NeInfo, v Alarm) (neDataModel.AlarmEvent, er
if rows > 0 { if rows > 0 {
return alarmEvent, nil return alarmEvent, nil
} }
return neDataModel.AlarmEvent{}, fmt.Errorf("[%s %s] clear alarm event fail", neInfo.NeType, neInfo.NeId) return neDataModel.AlarmEvent{}, fmt.Errorf("[%s %s] clear alarm event fail", neInfo.CoreUID, neInfo.NeUID)
} }
// alarmEventNew 新增告警事件 // alarmEventNew 新增告警事件
@@ -411,21 +412,23 @@ func alarmEventNew(neInfo neModel.NeInfo, v Alarm) (neDataModel.AlarmEvent, erro
alarmEventService := neDataService.NewAlarmEvent alarmEventService := neDataService.NewAlarmEvent
// 检查网元告警ID是否唯一 // 检查网元告警ID是否唯一
alarmIdArr := alarmEventService.Find(neDataModel.AlarmEvent{ alarmIdArr := alarmEventService.Find(neDataModel.AlarmEvent{
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
AlarmId: v.AlarmId, AlarmId: v.AlarmId,
}) })
if len(alarmIdArr) > 0 { if len(alarmIdArr) > 0 {
return neDataModel.AlarmEvent{}, fmt.Errorf("[%s %s] new alarm event already exists alarmId:%s", neInfo.NeType, neInfo.NeId, v.AlarmId) return neDataModel.AlarmEvent{}, fmt.Errorf("[%s %s] new alarm event already exists alarmId:%s", neInfo.CoreUID, neInfo.NeUID, v.AlarmId)
} }
// seq 告警序号 // seq 告警序号
lastSeq := alarmEventService.FindAlarmEventSeqLast(neInfo.NeType, neInfo.NeId) lastSeq := alarmEventService.FindAlarmEventSeqLast(neInfo.CoreUID, neInfo.NeUID)
// 产生时间 // 产生时间
eventTime := date.ParseStrToDate(v.EventTime, date.YYYY_MM_DDTHH_MM_SSZ) eventTime := date.ParseStrToDate(v.EventTime, date.YYYY_MM_DDTHH_MM_SSZ)
alarmEvent := neDataModel.AlarmEvent{ alarmEvent := neDataModel.AlarmEvent{
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
AlarmSeq: lastSeq + 1, AlarmSeq: lastSeq + 1,
AlarmId: v.AlarmId, AlarmId: v.AlarmId,
AlarmTitle: v.AlarmTitle, AlarmTitle: v.AlarmTitle,
@@ -447,8 +450,9 @@ func alarmEventNew(neInfo neModel.NeInfo, v Alarm) (neDataModel.AlarmEvent, erro
if v.AlarmCode == constants.ALARM_EVENT_REBOOT { if v.AlarmCode == constants.ALARM_EVENT_REBOOT {
alarmService := neDataService.NewAlarm alarmService := neDataService.NewAlarm
rows := alarmService.Find(neDataModel.Alarm{ rows := alarmService.Find(neDataModel.Alarm{
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
AlarmStatus: "1", AlarmStatus: "1",
}) })
for _, v := range rows { for _, v := range rows {
@@ -457,11 +461,11 @@ func alarmEventNew(neInfo neModel.NeInfo, v Alarm) (neDataModel.AlarmEvent, erro
} }
// 网元重启后,有跟踪任务的需要重新补发启动任务 // 网元重启后,有跟踪任务的需要重新补发启动任务
if v.AlarmCode == constants.ALARM_EVENT_REBOOT { if v.AlarmCode == constants.ALARM_EVENT_REBOOT {
traceService.NewTraceTask.RunUnstopped(neInfo.NeType, neInfo.NeId) traceService.NewTraceTask.RunUnstopped(neInfo.CoreUID, neInfo.NeUID)
} }
return alarmEvent, nil return alarmEvent, nil
} }
return neDataModel.AlarmEvent{}, fmt.Errorf("[%s %s] new alarm event fail", neInfo.NeType, neInfo.NeId) return neDataModel.AlarmEvent{}, fmt.Errorf("[%s %s] new alarm event fail", neInfo.CoreUID, neInfo.NeUID)
} }
// mapToAlarm 将 []map[string]any 转换为 []Alarm // mapToAlarm 将 []map[string]any 转换为 []Alarm
@@ -505,7 +509,7 @@ func GetAlarmFromNF(w http.ResponseWriter, r *http.Request) {
continue continue
} }
if len(data) == 0 { if len(data) == 0 {
log.Infof("Not found sync alarms, neType=%s, neId=%s", neInfo.NeType, neInfo.NeId) log.Infof("Not found sync alarms, neType=%s, neId=%s", neInfo.CoreUID, neInfo.NeUID)
continue continue
} }
@@ -519,7 +523,7 @@ func GetAlarmFromNF(w http.ResponseWriter, r *http.Request) {
v.AddInfo = fmt.Sprintf("NeInfo:%s", v.NeType) v.AddInfo = fmt.Sprintf("NeInfo:%s", v.NeType)
} }
if v.ObjectUid == "" { if v.ObjectUid == "" {
v.ObjectUid = neInfo.RmUID v.ObjectUid = neInfo.NeUID
} }
if v.ObjectName == "" { if v.ObjectName == "" {
v.ObjectName = neInfo.NeName v.ObjectName = neInfo.NeName

View File

@@ -188,11 +188,12 @@ func writeLog(alarmData *Alarm, toUser, forwardBy string, err error) error {
if err != nil { if err != nil {
result = err.Error() result = err.Error()
} }
neInfo := neService.NewNeInfo.FindByRmuid(alarmData.NeId) neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid("*", alarmData.NeId)
eventTime := date.ParseStrToDate(alarmData.EventTime, date.YYYY_MM_DDTHH_MM_SSZ) eventTime := date.ParseStrToDate(alarmData.EventTime, date.YYYY_MM_DDTHH_MM_SSZ)
alarmForwardLog := neDataModel.AlarmForwardLog{ alarmForwardLog := neDataModel.AlarmForwardLog{
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
AlarmSeq: int64(alarmData.AlarmSeq), AlarmSeq: int64(alarmData.AlarmSeq),
AlarmId: alarmData.AlarmId, AlarmId: alarmData.AlarmId,
AlarmTitle: alarmData.AlarmTitle, AlarmTitle: alarmData.AlarmTitle,

View File

@@ -83,13 +83,13 @@ func PostMML2ToNF(w http.ResponseWriter, r *http.Request) {
} }
log.Debug("neType:", neType, "neId", neId) log.Debug("neType:", neType, "neId", neId)
neInfoArr := neService.NewNeInfo.Find(neModel.NeInfo{NeType: neType, NeId: neId}, false, true) neInfoArr := neService.NewNeInfo.Find(neModel.NeInfo{NeType: neType, NeUID: neId}, false, true)
if len(neInfoArr) < 1 { if len(neInfoArr) < 1 {
services.ResponseInternalServerError500DatabaseOperationFailed(w) services.ResponseInternalServerError500DatabaseOperationFailed(w)
return return
} }
neInfo := neInfoArr[0] neInfo := neInfoArr[0]
if neInfo.NeId != neId || neInfo.IP == "" || len(neInfo.Hosts) < 2 { if neInfo.NeUID != neId || neInfo.IPAddr == "" || len(neInfo.Hosts) < 2 {
services.ResponseWithJson(w, 200, map[string]any{ services.ResponseWithJson(w, 200, map[string]any{
"code": 0, "code": 0,
"msg": "neInfo not found", "msg": "neInfo not found",
@@ -235,13 +235,13 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
return return
} }
neInfoArr := neService.NewNeInfo.Find(neModel.NeInfo{NeType: neType, NeId: neId}, false, true) neInfoArr := neService.NewNeInfo.Find(neModel.NeInfo{NeType: neType, NeUID: neId}, false, true)
if len(neInfoArr) < 1 { if len(neInfoArr) < 1 {
services.ResponseInternalServerError500DatabaseOperationFailed(w) services.ResponseInternalServerError500DatabaseOperationFailed(w)
return return
} }
neInfo := neInfoArr[0] neInfo := neInfoArr[0]
if neInfo.NeId != neId || neInfo.IP == "" || len(neInfo.Hosts) < 2 { if neInfo.NeUID != neId || neInfo.IPAddr == "" || len(neInfo.Hosts) < 2 {
services.ResponseWithJson(w, 200, map[string]any{ services.ResponseWithJson(w, 200, map[string]any{
"code": 0, "code": 0,
"msg": "neInfo not found", "msg": "neInfo not found",
@@ -619,7 +619,7 @@ func PostMMLToNF(w http.ResponseWriter, r *http.Request) {
// UDM 特殊命令处理 // UDM 特殊命令处理
if neType == "UDM" && mml == "dec key" { if neType == "UDM" && mml == "dec key" {
output, err := neService.NewNeInfo.NeRunSSHCmd(neInfo.NeType, neInfo.NeId, "cat /usr/local/etc/udm/ueKeyProfile.tmp") output, err := neService.NewNeInfo.NeRunSSHCmd(neInfo.CoreUID, neInfo.NeUID, "cat /usr/local/etc/udm/ueKeyProfile.tmp")
if err != nil { if err != nil {
mmlResult = append(mmlResult, err.Error()) mmlResult = append(mmlResult, err.Error())
} else { } else {
@@ -645,13 +645,13 @@ func PostMMLToOMC(w http.ResponseWriter, r *http.Request) {
} }
log.Debug("neType:", neType, "neId", neId) log.Debug("neType:", neType, "neId", neId)
neInfoArr := neService.NewNeInfo.Find(neModel.NeInfo{NeType: neType, NeId: neId}, false, false) neInfoArr := neService.NewNeInfo.Find(neModel.NeInfo{NeType: neType, NeUID: neId}, false, false)
if len(neInfoArr) < 1 { if len(neInfoArr) < 1 {
services.ResponseInternalServerError500DatabaseOperationFailed(w) services.ResponseInternalServerError500DatabaseOperationFailed(w)
return return
} }
neInfo := neInfoArr[0] neInfo := neInfoArr[0]
if neInfo.NeId != neId || neInfo.IP == "" { if neInfo.NeUID != neId || neInfo.IPAddr == "" {
services.ResponseWithJson(w, 200, map[string]any{ services.ResponseWithJson(w, 200, map[string]any{
"code": 0, "code": 0,
"msg": "neInfo not found", "msg": "neInfo not found",
@@ -667,7 +667,7 @@ func PostMMLToOMC(w http.ResponseWriter, r *http.Request) {
} }
log.Trace("Body:", string(body)) log.Trace("Body:", string(body))
hostUri := fmt.Sprintf("http://%s:%d", neInfo.IP, neInfo.Port) hostUri := fmt.Sprintf("http://%s:%d", neInfo.IPAddr, neInfo.Port)
omcMmlVar := &mmlp.MmlVar{ omcMmlVar := &mmlp.MmlVar{
Version: global.Version, Version: global.Version,
Output: mmlp.DefaultFormatType, Output: mmlp.DefaultFormatType,

View File

@@ -168,8 +168,7 @@ func saveKPIData(kpiReport KpiReport, index int64) int64 {
KpiValuesByte, _ := json.Marshal(KpiValues) KpiValuesByte, _ := json.Marshal(KpiValues)
kpiData := neDataModel.KpiReport{ kpiData := neDataModel.KpiReport{
NeType: taskNe.NeType, NeType: taskNe.NeType,
NeName: taskNe.NEName, NeUID: taskNe.RmUID,
RmUid: taskNe.RmUID,
Date: date.ParseDateToStr(receiverTime, "2006-01-02"), Date: date.ParseDateToStr(receiverTime, "2006-01-02"),
StartTime: date.ParseDateToStr(startTime, "15:04:05"), StartTime: date.ParseDateToStr(startTime, "15:04:05"),
EndTime: date.ParseDateToStr(endTime, "15:04:05"), EndTime: date.ParseDateToStr(endTime, "15:04:05"),
@@ -183,8 +182,8 @@ func saveKPIData(kpiReport KpiReport, index int64) int64 {
// 指标事件对象 // 指标事件对象
kpiEvent := map[string]any{ kpiEvent := map[string]any{
"neType": kpiData.NeType, "neType": kpiData.NeType,
"neName": kpiData.NeName, "coreUid": kpiData.CoreUID,
"rmUID": kpiData.RmUid, "neUid": kpiData.NeUID,
"startIndex": kpiData.Index, "startIndex": kpiData.Index,
"timeGroup": kpiData.CreatedAt, "timeGroup": kpiData.CreatedAt,
// kip_id ... // kip_id ...
@@ -194,15 +193,15 @@ func saveKPIData(kpiReport KpiReport, index int64) int64 {
} }
// 发送到匹配的网元 // 发送到匹配的网元
neInfo := neService.NewNeInfo.FindByRmuid(kpiData.RmUid) neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid("*", kpiData.NeUID)
if neInfo.RmUID == kpiData.RmUid { if neInfo.NeUID == kpiData.NeUID {
// 推送到ws订阅组 // 推送到ws订阅组
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI, neInfo.NeType, neInfo.NeId), kpiEvent) wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI, neInfo.CoreUID, neInfo.NeUID), kpiEvent)
if neInfo.NeType == "UPF" { if neInfo.NeType == "UPF" {
// 更新UPF总流量 // 更新UPF总流量
upValue := parse.Number(kpiEvent["UPF.03"]) upValue := parse.Number(kpiEvent["UPF.03"])
downValue := parse.Number(kpiEvent["UPF.06"]) downValue := parse.Number(kpiEvent["UPF.06"])
neDataService.NewKpiReport.UPFTodayFlowUpdate(neInfo.RmUID, upValue, downValue) neDataService.NewKpiReport.UPFTodayFlowUpdate(neInfo.NeUID, upValue, downValue)
} }
} }
} }
@@ -248,8 +247,8 @@ func saveKPIDataC(kpiReport KpiReport, index int64) int64 {
KpiValuesByte, _ := json.Marshal(KpiValues) KpiValuesByte, _ := json.Marshal(KpiValues)
kpiData := neDataModel.KpiCReport{ kpiData := neDataModel.KpiCReport{
NeType: taskNe.NeType, NeType: taskNe.NeType,
NeName: taskNe.NEName, CoreUID: taskNe.NEName,
RmUid: taskNe.RmUID, NeUID: taskNe.RmUID,
Date: date.ParseDateToStr(receiverTime, "2006-01-02"), Date: date.ParseDateToStr(receiverTime, "2006-01-02"),
StartTime: date.ParseDateToStr(startTime, "15:04:05"), StartTime: date.ParseDateToStr(startTime, "15:04:05"),
EndTime: date.ParseDateToStr(endTime, "15:04:05"), EndTime: date.ParseDateToStr(endTime, "15:04:05"),
@@ -263,8 +262,8 @@ func saveKPIDataC(kpiReport KpiReport, index int64) int64 {
// 指标事件对象 // 指标事件对象
kpiEvent := map[string]any{ kpiEvent := map[string]any{
"neType": kpiData.NeType, "neType": kpiData.NeType,
"neName": kpiData.NeName, "neName": kpiData.NeUID,
"rmUID": kpiData.RmUid, "rmUID": kpiData.NeUID,
"startIndex": kpiData.Index, "startIndex": kpiData.Index,
"timeGroup": kpiData.CreatedAt, "timeGroup": kpiData.CreatedAt,
// kip_id ... // kip_id ...
@@ -274,10 +273,10 @@ func saveKPIDataC(kpiReport KpiReport, index int64) int64 {
} }
// 发送到匹配的网元 // 发送到匹配的网元
neInfo := neService.NewNeInfo.FindByRmuid(kpiData.RmUid) neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid("*", kpiData.NeUID)
if neInfo.RmUID == kpiData.RmUid { if neInfo.NeUID == kpiData.NeUID {
// 推送自定义KPI到ws订阅组 // 推送自定义KPI到ws订阅组
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI_C, neInfo.NeType, neInfo.NeId), kpiEvent) wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI_C, neInfo.CoreUID, neInfo.NeUID), kpiEvent)
} }
} }
return insertId return insertId
@@ -379,12 +378,12 @@ func PostKPIReportFromNFOld(w http.ResponseWriter, r *http.Request) {
} }
// 发送到匹配的网元 // 发送到匹配的网元
neInfo := neService.NewNeInfo.FindByRmuid(kpiData.RmUid) neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid("*", kpiData.RmUid)
// custom kpi report to FE // custom kpi report to FE
kpiCEvent := map[string]any{ kpiCEvent := map[string]any{
// kip_id ... // kip_id ...
"neType": kpiData.NEType, "neType": kpiData.NEType,
"neId": neInfo.NeId, "neId": neInfo.NeUID,
"neName": kpiData.NEName, "neName": kpiData.NEName,
"rmUID": kpiData.RmUid, "rmUID": kpiData.RmUid,
"startIndex": kpiData.Index, "startIndex": kpiData.Index,
@@ -413,11 +412,11 @@ func PostKPIReportFromNFOld(w http.ResponseWriter, r *http.Request) {
// KPI自定义指标入库 // KPI自定义指标入库
kpi_c_report.InsertKpiCReport(kpiData.NEType, report) kpi_c_report.InsertKpiCReport(kpiData.NEType, report)
if neInfo.RmUID == kpiData.RmUid { if neInfo.NeUID == kpiData.RmUid {
// 推送到ws订阅组 // 推送到ws订阅组
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI, neInfo.NeType, neInfo.NeId), kpiEvent) wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI, neInfo.CoreUID, neInfo.NeUID), kpiEvent)
// 推送自定义KPI到ws订阅组 // 推送自定义KPI到ws订阅组
wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI_C, neInfo.NeType, neInfo.NeId), kpiCEvent) wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_KPI_C, neInfo.CoreUID, neInfo.NeUID), kpiCEvent)
} }
services.ResponseStatusOK204NoContent(w) services.ResponseStatusOK204NoContent(w)

View File

@@ -258,11 +258,11 @@ func GetUEInfoFromNF(w http.ResponseWriter, r *http.Request) {
return return
} }
neInfo := neService.NewNeInfo.FindByNeTypeAndNeID(neType, neId) neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid(neType, neId)
var response services.MapResponse var response services.MapResponse
if neInfo.NeId == neId && neInfo.NeId != "" { if neInfo.NeUID == neId && neInfo.NeUID != "" {
requestURI2NF := fmt.Sprintf("http://%s:%v%s", neInfo.IP, neInfo.Port, r.RequestURI) requestURI2NF := fmt.Sprintf("http://%s:%v%s", neInfo.IPAddr, neInfo.Port, r.RequestURI)
log.Debug("requestURI2NF:", requestURI2NF) log.Debug("requestURI2NF:", requestURI2NF)
resp, err := client.R(). resp, err := client.R().
EnableTrace(). EnableTrace().
@@ -652,8 +652,8 @@ func PostNBInfoFromNF(w http.ResponseWriter, r *http.Request) {
return return
} }
neInfo := neService.NewNeInfo.FindByRmuid(body.RmUID) neInfo := neService.NewNeInfo.FindByCoreUidAndNeUid("*", body.RmUID)
if neInfo.RmUID != body.RmUID { if neInfo.NeUID != body.RmUID {
services.ResponseInternalServerError500ProcessError(w, fmt.Errorf("inconsistent network element rmUID")) services.ResponseInternalServerError500ProcessError(w, fmt.Errorf("inconsistent network element rmUID"))
return return
} }
@@ -674,8 +674,8 @@ func PostNBInfoFromNF(w http.ResponseWriter, r *http.Request) {
} }
nbStateService.Insert(neDataModel.NBState{ nbStateService.Insert(neDataModel.NBState{
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId, CoreUID: neInfo.CoreUID,
RmUid: neInfo.RmUID, NeUID: neInfo.NeUID,
Address: v.Address, Address: v.Address,
Name: v.Name, Name: v.Name,
Position: v.Position, Position: v.Position,

View File

@@ -208,17 +208,17 @@ type NeInfo struct {
func XormGetNeInfo(neType string, neId string) (*NeInfo, error) { func XormGetNeInfo(neType string, neId string) (*NeInfo, error) {
log.Debug("XormGetNeInfo processing... ") log.Debug("XormGetNeInfo processing... ")
neInfox := neService.NewNeInfo.FindByNeTypeAndNeID(neType, neId) neInfox := neService.NewNeInfo.FindByCoreUidAndNeUid(neType, neId)
neInfo := new(NeInfo) neInfo := new(NeInfo)
neInfo.NeType = neType neInfo.NeType = neType
neInfo.NeId = neId neInfo.NeId = neId
neInfo.RmUID = neInfox.RmUID neInfo.RmUID = neInfox.NeType
neInfo.NeName = neInfox.NeName neInfo.NeName = neInfox.NeName
neInfo.Ip = neInfox.IP neInfo.Ip = neInfox.IPAddr
neInfo.Port = fmt.Sprint(neInfox.Port) neInfo.Port = fmt.Sprint(neInfox.Port)
neInfo.PvFlag = neInfox.PvFlag neInfo.PvFlag = neInfox.PvFlag
neInfo.NeAddress = neInfox.NeAddress neInfo.NeAddress = neInfox.MacAddr
neInfo.Province = neInfox.Province neInfo.Province = neInfox.Province
neInfo.VendorName = neInfox.VendorName neInfo.VendorName = neInfox.VendorName
neInfo.Dn = neInfox.Dn neInfo.Dn = neInfox.Dn

View File

@@ -133,29 +133,6 @@ func init() {
Register("POST", pm.CustomMeasurementUri, pm.PostMeasurementFromNF, nil) Register("POST", pm.CustomMeasurementUri, pm.PostMeasurementFromNF, nil)
Register("GET", pm.CustomMeasurementUri, pm.GetMeasurementFromNF, nil) Register("GET", pm.CustomMeasurementUri, pm.GetMeasurementFromNF, nil)
// parameter config management
Register("GET", cm.ParamConfigUri, cm.GetParamConfigFromNF, nil)
Register("POST", cm.ParamConfigUri, cm.PostParamConfigToNF, midware.LogOperate(collectlogs.OptionNew("log.operate.title.neConfig", collectlogs.BUSINESS_TYPE_INSERT)))
Register("PUT", cm.ParamConfigUri, cm.PutParamConfigToNF, midware.LogOperate(collectlogs.OptionNew("log.operate.title.neConfig", collectlogs.BUSINESS_TYPE_UPDATE)))
Register("DELETE", cm.ParamConfigUri, cm.DeleteParamConfigToNF, midware.LogOperate(collectlogs.OptionNew("log.operate.title.neConfig", collectlogs.BUSINESS_TYPE_INSERT)))
Register("GET", cm.CustomParamConfigUri, cm.GetParamConfigFromNF, nil)
Register("POST", cm.CustomParamConfigUri, cm.PostParamConfigToNF, nil)
Register("PUT", cm.CustomParamConfigUri, cm.PutParamConfigToNF, nil)
Register("DELETE", cm.CustomParamConfigUri, cm.DeleteParamConfigToNF, nil)
// Get/Create/Modify/Delete NE info
Register("GET", cm.UriNeInfo, cm.GetNeInfo, nil)
Register("POST", cm.UriNeInfo, cm.PostNeInfo, midware.LogOperate(collectlogs.OptionNew("NE Info", collectlogs.BUSINESS_TYPE_INSERT)))
Register("PUT", cm.UriNeInfo, cm.PutNeInfo, midware.LogOperate(collectlogs.OptionNew("NE Info", collectlogs.BUSINESS_TYPE_UPDATE)))
Register("DELETE", cm.UriNeInfo, cm.DeleteNeInfo, midware.LogOperate(collectlogs.OptionNew("NE Info", collectlogs.BUSINESS_TYPE_DELETE)))
// Get/Create/Modify/Delete NE info
Register("GET", cm.CustomUriNeInfo, cm.GetNeInfo, nil)
Register("POST", cm.CustomUriNeInfo, cm.PostNeInfo, nil)
Register("PUT", cm.CustomUriNeInfo, cm.PutNeInfo, nil)
Register("DELETE", cm.CustomUriNeInfo, cm.DeleteNeInfo, nil)
//ne service action handle //ne service action handle
Register("POST", cm.UriNeService, cm.PostNeServiceAction, nil) Register("POST", cm.UriNeService, cm.PostNeServiceAction, nil)
//ne service action handle //ne service action handle

View File

@@ -29,7 +29,7 @@ func (c *ConnTelnet) NewClient() (*ConnTelnet, error) {
proto = "tcp6" proto = "tcp6"
c.Addr = fmt.Sprintf("[%s]", c.Addr) c.Addr = fmt.Sprintf("[%s]", c.Addr)
} }
addr := fmt.Sprintf("%s:%d", c.Addr, c.Port) addr := net.JoinHostPort(c.Addr, fmt.Sprint(c.Port))
// 默认等待5s // 默认等待5s
if c.DialTimeOut == 0 { if c.DialTimeOut == 0 {

View File

@@ -4,8 +4,10 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"hash/fnv" "hash/fnv"
"net"
"os" "os"
"runtime" "runtime"
"strings"
"time" "time"
"be.ems/src/framework/cmd" "be.ems/src/framework/cmd"
@@ -24,29 +26,32 @@ var LaunchInfo map[string]any
// codeGenerate 生成机器的唯一标识符 // codeGenerate 生成机器的唯一标识符
func codeGenerate() string { func codeGenerate() string {
var machineID string var machineID []string
// 获取主机名 // 获取所有网络接口信息
hostname, err := os.Hostname() interfaces, _ := net.Interfaces()
if err != nil { for _, iface := range interfaces {
panic(err) // 检查接口是否有 MAC 地址
if iface.HardwareAddr != nil {
machineID = append(machineID, iface.HardwareAddr.String())
break
}
} }
machineID += hostname
// 获取 CPU 信息 // 获取 CPU 信息
numCPU := runtime.NumCPU() numCPU := runtime.NumCPU()
machineID += fmt.Sprintf("%d", numCPU) machineID = append(machineID, fmt.Sprintf("%d", numCPU))
// 获取操作系统信息 // 获取操作系统信息
osInfo := runtime.GOOS osInfo := runtime.GOOS
machineID += osInfo machineID = append(machineID, osInfo)
// 使用哈希函数生成机器码 // 使用哈希函数生成机器码
h := fnv.New32a() h := fnv.New32a()
h.Write([]byte(machineID)) h.Write([]byte(strings.Join(machineID, "&")))
machineCode := h.Sum32() machineCode := h.Sum32()
return fmt.Sprintf("%x", machineCode) return strings.ToUpper(fmt.Sprintf("%x", machineCode))
} }
// 网管本地路径 // 网管本地路径
@@ -69,8 +74,8 @@ func codeFileRead() (map[string]any, error) {
} }
content := string(bytes) content := string(bytes)
// 解密 // 解密
hostKey := config.Get("aes.hostKey").(string) appKey := config.Get("aes.appKey").(string)
contentDe, err := crypto.AESDecryptBase64(content, hostKey) contentDe, err := crypto.AESDecryptBase64(content, appKey)
if err != nil { if err != nil {
logger.Errorf("CodeFileRead decrypt: %v", err.Error()) logger.Errorf("CodeFileRead decrypt: %v", err.Error())
return mapData, fmt.Errorf("decrypt fail") return mapData, fmt.Errorf("decrypt fail")
@@ -88,8 +93,8 @@ func codeFileRead() (map[string]any, error) {
func codeFileWrite(data map[string]any) error { func codeFileWrite(data map[string]any) error {
jsonByte, _ := json.Marshal(data) jsonByte, _ := json.Marshal(data)
// 加密 // 加密
hostKey := config.Get("aes.hostKey").(string) appKey := config.Get("aes.appKey").(string)
contentEn, err := crypto.AESEncryptBase64(string(jsonByte), hostKey) contentEn, err := crypto.AESEncryptBase64(string(jsonByte), appKey)
if err != nil { if err != nil {
logger.Errorf("insert encrypt: %v", err.Error()) logger.Errorf("insert encrypt: %v", err.Error())
return fmt.Errorf("encrypt fail") return fmt.Errorf("encrypt fail")

View File

@@ -72,22 +72,22 @@ func (s *BackupExportCDRProcessor) Execute(data any) (any, error) {
case "ims": case "ims":
neList := s.neInfoService.Find(neModel.NeInfo{NeType: "IMS"}, false, false) neList := s.neInfoService.Find(neModel.NeInfo{NeType: "IMS"}, false, false)
for _, ne := range neList { for _, ne := range neList {
result[ne.NeName] = s.exportIMS(params.Hour, ne.RmUID, params.FileType) result[ne.NeName] = s.exportIMS(ne.CoreUID, ne.NeUID, params.Hour, params.FileType)
} }
case "smsc": case "smsc":
neList := s.neInfoService.Find(neModel.NeInfo{NeType: "SMSC"}, false, false) neList := s.neInfoService.Find(neModel.NeInfo{NeType: "SMSC"}, false, false)
for _, ne := range neList { for _, ne := range neList {
result[ne.NeName] = s.exportSMSC(params.Hour, ne.RmUID, params.FileType) result[ne.NeName] = s.exportSMSC(ne.CoreUID, ne.NeUID, params.Hour, params.FileType)
} }
case "smf": case "smf":
neList := s.neInfoService.Find(neModel.NeInfo{NeType: "SMF"}, false, false) neList := s.neInfoService.Find(neModel.NeInfo{NeType: "SMF"}, false, false)
for _, ne := range neList { for _, ne := range neList {
result[ne.NeName] = s.exportSMF(params.Hour, ne.RmUID, params.FileType) result[ne.NeName] = s.exportSMF(ne.CoreUID, ne.NeUID, params.Hour, params.FileType)
} }
case "sgwc": case "sgwc":
neList := s.neInfoService.Find(neModel.NeInfo{NeType: "SGWC"}, false, false) neList := s.neInfoService.Find(neModel.NeInfo{NeType: "SGWC"}, false, false)
for _, ne := range neList { for _, ne := range neList {
result[ne.NeName] = s.exportSGWC(params.Hour, ne.RmUID, params.FileType) result[ne.NeName] = s.exportSGWC(ne.CoreUID, ne.NeUID, params.Hour, params.FileType)
} }
} }
} }
@@ -97,7 +97,7 @@ func (s *BackupExportCDRProcessor) Execute(data any) (any, error) {
} }
// exportIMS 导出IMS-CDR会话事件数据 // exportIMS 导出IMS-CDR会话事件数据
func (s BackupExportCDRProcessor) exportIMS(hour int, rmUID, fileType string) string { func (s BackupExportCDRProcessor) exportIMS(coreUid, neUid string, hour int, fileType string) string {
// 前 hour 小时 // 前 hour 小时
now := time.Now() now := time.Now()
end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location()) end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location())
@@ -107,7 +107,8 @@ func (s BackupExportCDRProcessor) exportIMS(hour int, rmUID, fileType string) st
query := neDataModel.CDREventIMSQuery{ query := neDataModel.CDREventIMSQuery{
SortField: "timestamp", SortField: "timestamp",
SortOrder: "asc", SortOrder: "asc",
RmUID: rmUID, CoreUID: coreUid,
NeUID: neUid,
BeginTime: start.UnixMilli(), BeginTime: start.UnixMilli(),
EndTime: end.UnixMilli(), EndTime: end.UnixMilli(),
PageNum: 1, PageNum: 1,
@@ -232,7 +233,7 @@ func (s BackupExportCDRProcessor) exportIMS(hour int, rmUID, fileType string) st
data = append(data, []string{ data = append(data, []string{
fmt.Sprint(row.ID), fmt.Sprint(row.ID),
row.NeName, row.NeUID,
recordType, recordType,
callTypeLable, callTypeLable,
caller, caller,
@@ -359,7 +360,7 @@ func (s BackupExportCDRProcessor) exportIMS(hour int, rmUID, fileType string) st
dataCells = append(dataCells, map[string]any{ dataCells = append(dataCells, map[string]any{
"A" + idx: row.ID, "A" + idx: row.ID,
"B" + idx: row.NeName, "B" + idx: row.NeUID,
"C" + idx: recordType, "C" + idx: recordType,
"D" + idx: callTypeLable, "D" + idx: callTypeLable,
"E" + idx: caller, "E" + idx: caller,
@@ -386,7 +387,7 @@ func (s BackupExportCDRProcessor) exportIMS(hour int, rmUID, fileType string) st
} }
// exportSMSC 导出SMSC-CDR会话事件数据 // exportSMSC 导出SMSC-CDR会话事件数据
func (s BackupExportCDRProcessor) exportSMSC(hour int, rmUID, fileType string) string { func (s BackupExportCDRProcessor) exportSMSC(coreUid, neUid string, hour int, fileType string) string {
// 前 hour 小时 // 前 hour 小时
now := time.Now() now := time.Now()
end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location()) end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location())
@@ -396,7 +397,8 @@ func (s BackupExportCDRProcessor) exportSMSC(hour int, rmUID, fileType string) s
query := neDataModel.CDREventSMSCQuery{ query := neDataModel.CDREventSMSCQuery{
SortField: "timestamp", SortField: "timestamp",
SortOrder: "asc", SortOrder: "asc",
RmUID: rmUID, CoreUID: coreUid,
NeUID: neUid,
BeginTime: start.UnixMilli(), BeginTime: start.UnixMilli(),
EndTime: end.UnixMilli(), EndTime: end.UnixMilli(),
PageNum: 1, PageNum: 1,
@@ -488,7 +490,7 @@ func (s BackupExportCDRProcessor) exportSMSC(hour int, rmUID, fileType string) s
data = append(data, []string{ data = append(data, []string{
fmt.Sprint(row.ID), fmt.Sprint(row.ID),
row.NeName, row.NeUID,
recordType, recordType,
serviceType, serviceType,
caller, caller,
@@ -579,7 +581,7 @@ func (s BackupExportCDRProcessor) exportSMSC(hour int, rmUID, fileType string) s
dataCells = append(dataCells, map[string]any{ dataCells = append(dataCells, map[string]any{
"A" + idx: row.ID, "A" + idx: row.ID,
"B" + idx: row.NeName, "B" + idx: row.NeUID,
"C" + idx: recordType, "C" + idx: recordType,
"D" + idx: serviceType, "D" + idx: serviceType,
"E" + idx: caller, "E" + idx: caller,
@@ -603,7 +605,7 @@ func (s BackupExportCDRProcessor) exportSMSC(hour int, rmUID, fileType string) s
} }
// exportSMF 导出SMF-CDR会话事件数据 // exportSMF 导出SMF-CDR会话事件数据
func (s BackupExportCDRProcessor) exportSMF(hour int, rmUID, fileType string) string { func (s BackupExportCDRProcessor) exportSMF(coreUid, neUid string, hour int, fileType string) string {
// 前 hour 小时 // 前 hour 小时
now := time.Now() now := time.Now()
end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location()) end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location())
@@ -612,7 +614,8 @@ func (s BackupExportCDRProcessor) exportSMF(hour int, rmUID, fileType string) st
query := neDataModel.CDREventSMFQuery{ query := neDataModel.CDREventSMFQuery{
SortField: "timestamp", SortField: "timestamp",
SortOrder: "asc", SortOrder: "asc",
RmUID: rmUID, CoreUID: coreUid,
NeUID: neUid,
BeginTime: start.UnixMilli(), BeginTime: start.UnixMilli(),
EndTime: end.UnixMilli(), EndTime: end.UnixMilli(),
PageNum: 1, PageNum: 1,
@@ -787,8 +790,8 @@ func (s BackupExportCDRProcessor) exportSMF(hour int, rmUID, fileType string) st
data = append(data, []string{ data = append(data, []string{
fmt.Sprint(row.ID), fmt.Sprint(row.ID),
chargingID, chargingID,
row.NeName, row.NeType,
row.RmUid, row.NeUID,
subscriptionIDData, subscriptionIDData,
subscriptionIDType, subscriptionIDType,
fmt.Sprint(dataVolumeUplink), fmt.Sprint(dataVolumeUplink),
@@ -974,8 +977,8 @@ func (s BackupExportCDRProcessor) exportSMF(hour int, rmUID, fileType string) st
dataCells = append(dataCells, map[string]any{ dataCells = append(dataCells, map[string]any{
"A" + idx: row.ID, "A" + idx: row.ID,
"B" + idx: chargingID, "B" + idx: chargingID,
"C" + idx: row.NeName, "C" + idx: row.NeType,
"D" + idx: row.RmUid, "D" + idx: row.NeUID,
"E" + idx: subscriptionIDData, "E" + idx: subscriptionIDData,
"F" + idx: subscriptionIDType, "F" + idx: subscriptionIDType,
"G" + idx: dataVolumeUplink, "G" + idx: dataVolumeUplink,
@@ -1011,7 +1014,7 @@ func (s BackupExportCDRProcessor) exportSMF(hour int, rmUID, fileType string) st
} }
// exportSGWC 导出SGWC-CDR会话事件数据 // exportSGWC 导出SGWC-CDR会话事件数据
func (s BackupExportCDRProcessor) exportSGWC(hour int, rmUID, fileType string) string { func (s BackupExportCDRProcessor) exportSGWC(coreUid, neUid string, hour int, fileType string) string {
// 前 hour 小时 // 前 hour 小时
now := time.Now() now := time.Now()
end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location()) end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location())
@@ -1020,7 +1023,8 @@ func (s BackupExportCDRProcessor) exportSGWC(hour int, rmUID, fileType string) s
query := neDataModel.CDREventSGWCQuery{ query := neDataModel.CDREventSGWCQuery{
SortField: "timestamp", SortField: "timestamp",
SortOrder: "asc", SortOrder: "asc",
RmUID: rmUID, CoreUID: coreUid,
NeUID: neUid,
BeginTime: start.UnixMilli(), BeginTime: start.UnixMilli(),
EndTime: end.UnixMilli(), EndTime: end.UnixMilli(),
PageNum: 1, PageNum: 1,
@@ -1197,8 +1201,8 @@ func (s BackupExportCDRProcessor) exportSGWC(hour int, rmUID, fileType string) s
data = append(data, []string{ data = append(data, []string{
fmt.Sprint(row.ID), fmt.Sprint(row.ID),
row.NeName, row.NeType,
row.RmUid, row.NeUID,
chargingID, chargingID,
servedIMSI, servedIMSI,
servedMSISDN, servedMSISDN,
@@ -1388,8 +1392,8 @@ func (s BackupExportCDRProcessor) exportSGWC(hour int, rmUID, fileType string) s
dataCells = append(dataCells, map[string]any{ dataCells = append(dataCells, map[string]any{
"A" + idx: row.ID, "A" + idx: row.ID,
"B" + idx: row.NeName, "B" + idx: row.NeType,
"C" + idx: row.RmUid, "C" + idx: row.NeUID,
"D" + idx: chargingID, "D" + idx: chargingID,
"E" + idx: servedIMSI, "E" + idx: servedIMSI,
"F" + idx: servedMSISDN, "F" + idx: servedMSISDN,

View File

@@ -342,8 +342,8 @@ func (s BackupExportTableProcessor) exportSMF(hour int, columns []string, filePa
if col == "id" { if col == "id" {
arr[i] = fmt.Sprintf("%d", row.ID) arr[i] = fmt.Sprintf("%d", row.ID)
} }
if col == "neName" || col == "ne_name" { if col == "neType" || col == "ne_type" {
arr[i] = fmt.Sprintf("%v", row.NeName) arr[i] = fmt.Sprintf("%v", row.NeType)
} }
// 单层json // 单层json
if strings.HasPrefix("json", col) { if strings.HasPrefix("json", col) {
@@ -461,8 +461,8 @@ func (s BackupExportTableProcessor) exportIMS(hour int, columns []string, filePa
if col == "id" { if col == "id" {
arr[i] = fmt.Sprintf("%d", row.ID) arr[i] = fmt.Sprintf("%d", row.ID)
} }
if col == "neName" || col == "ne_name" { if col == "neType" || col == "ne_type" {
arr[i] = fmt.Sprintf("%v", row.NeName) arr[i] = fmt.Sprintf("%v", row.NeType)
} }
// 单层json // 单层json
if strings.HasPrefix("json", col) { if strings.HasPrefix("json", col) {
@@ -651,8 +651,8 @@ func (s BackupExportTableProcessor) exportSMSC(hour int, columns []string, fileP
if v == "id" { if v == "id" {
arr[i] = fmt.Sprintf("%d", row.ID) arr[i] = fmt.Sprintf("%d", row.ID)
} }
if v == "neName" || v == "ne_name" { if v == "neType" || v == "ne_type" {
arr[i] = fmt.Sprintf("%v", row.NeName) arr[i] = fmt.Sprintf("%v", row.NeType)
} }
// 单层json // 单层json
if strings.HasPrefix("json", v) { if strings.HasPrefix("json", v) {
@@ -840,8 +840,8 @@ func (s BackupExportTableProcessor) exportSGWC(hour int, columns []string, fileP
if v == "id" { if v == "id" {
arr[i] = fmt.Sprintf("%d", row.ID) arr[i] = fmt.Sprintf("%d", row.ID)
} }
if v == "neName" || v == "ne_name" { if v == "neType" || v == "ne_type" {
arr[i] = fmt.Sprintf("%v", row.NeName) arr[i] = fmt.Sprintf("%v", row.NeType)
} }
// 单层json // 单层json
if strings.HasPrefix("json", v) { if strings.HasPrefix("json", v) {

View File

@@ -63,13 +63,13 @@ func (s *BackupExportUDMProcessor) Execute(data any) (any, error) {
for _, v := range params.DataType { for _, v := range params.DataType {
switch v { switch v {
case "auth": case "auth":
result[fmt.Sprintf("%s-%s", neInfo.NeId, v)] = s.exportAuth(neInfo.NeId, params.FileType) result[fmt.Sprintf("%s-%s", neInfo.NeUID, v)] = s.exportAuth(neInfo.CoreUID, neInfo.NeUID, params.FileType)
case "sub": case "sub":
result[fmt.Sprintf("%s-%s", neInfo.NeId, v)] = s.exportSub(neInfo.NeId, params.FileType) result[fmt.Sprintf("%s-%s", neInfo.NeUID, v)] = s.exportSub(neInfo.CoreUID, neInfo.NeUID, params.FileType)
case "voip": case "voip":
result[fmt.Sprintf("%s-%s", neInfo.NeId, v)] = s.exportVOIP(neInfo.NeId, params.FileType) result[fmt.Sprintf("%s-%s", neInfo.NeUID, v)] = s.exportVOIP(neInfo.CoreUID, neInfo.NeUID, params.FileType)
case "volte": case "volte":
result[fmt.Sprintf("%s-%s", neInfo.NeId, v)] = s.exportVolte(neInfo.NeId, params.FileType) result[fmt.Sprintf("%s-%s", neInfo.NeUID, v)] = s.exportVolte(neInfo.CoreUID, neInfo.NeUID, params.FileType)
} }
} }
} }
@@ -79,14 +79,14 @@ func (s *BackupExportUDMProcessor) Execute(data any) (any, error) {
} }
// exportAuth 导出鉴权用户数据 // exportAuth 导出鉴权用户数据
func (s BackupExportUDMProcessor) exportAuth(neId, fileType string) string { func (s BackupExportUDMProcessor) exportAuth(coreUid, neUid, fileType string) string {
rows := s.udmAuthService.Find(neDataModel.UDMAuthUser{NeId: neId}) rows := s.udmAuthService.Find(neDataModel.UDMAuthUser{CoreUID: coreUid, NeUID: neUid})
if len(rows) <= 0 { if len(rows) <= 0 {
return "no data" return "no data"
} }
// 文件名 // 文件名
fileName := fmt.Sprintf("auth_%s_export_%s.%s", neId, time.Now().Format("20060102150405"), fileType) fileName := fmt.Sprintf("auth_%s_export_%s.%s", neUid, time.Now().Format("20060102150405"), fileType)
filePath := filepath.Join("/usr/local/omc/backup/udm_data/auth", fileName) filePath := filepath.Join("/usr/local/omc/backup/udm_data/auth", fileName)
if runtime.GOOS == "windows" { if runtime.GOOS == "windows" {
filePath = fmt.Sprintf("C:%s", filePath) filePath = fmt.Sprintf("C:%s", filePath)
@@ -133,14 +133,14 @@ func (s BackupExportUDMProcessor) exportAuth(neId, fileType string) string {
} }
// exportSub 导出签约用户数据 // exportSub 导出签约用户数据
func (s BackupExportUDMProcessor) exportSub(neId, fileType string) string { func (s BackupExportUDMProcessor) exportSub(coreUid, neUid, fileType string) string {
rows := s.udmSubService.Find(neDataModel.UDMSubUser{NeId: neId}) rows := s.udmSubService.Find(neDataModel.UDMSubUser{CoreUID: coreUid, NeUID: neUid})
if len(rows) <= 0 { if len(rows) <= 0 {
return "no data" return "no data"
} }
// 文件名 // 文件名
fileName := fmt.Sprintf("sub_%s_export_%s.%s", neId, time.Now().Format("20060102150405"), fileType) fileName := fmt.Sprintf("sub_%s_export_%s.%s", neUid, time.Now().Format("20060102150405"), fileType)
filePath := filepath.Join("/usr/local/omc/backup/udm_data/sub", fileName) filePath := filepath.Join("/usr/local/omc/backup/udm_data/sub", fileName)
if runtime.GOOS == "windows" { if runtime.GOOS == "windows" {
filePath = fmt.Sprintf("C:%s", filePath) filePath = fmt.Sprintf("C:%s", filePath)
@@ -181,14 +181,14 @@ func (s BackupExportUDMProcessor) exportSub(neId, fileType string) string {
} }
// exportVOIP 导出VOIP用户数据 // exportVOIP 导出VOIP用户数据
func (s BackupExportUDMProcessor) exportVOIP(neId, fileType string) string { func (s BackupExportUDMProcessor) exportVOIP(coreUid, neUid, fileType string) string {
rows := s.udmVOIPService.Find(neDataModel.UDMVOIPUser{NeId: neId}) rows := s.udmVOIPService.Find(neDataModel.UDMVOIPUser{CoreUID: coreUid, NeUID: neUid})
if len(rows) <= 0 { if len(rows) <= 0 {
return "no data" return "no data"
} }
// 文件名 // 文件名
fileName := fmt.Sprintf("voip_%s_export_%s.%s", neId, time.Now().Format("20060102150405"), fileType) fileName := fmt.Sprintf("voip_%s_export_%s.%s", neUid, time.Now().Format("20060102150405"), fileType)
filePath := filepath.Join("/usr/local/omc/backup/udm_data/voip", fileName) filePath := filepath.Join("/usr/local/omc/backup/udm_data/voip", fileName)
if runtime.GOOS == "windows" { if runtime.GOOS == "windows" {
filePath = fmt.Sprintf("C:%s", filePath) filePath = fmt.Sprintf("C:%s", filePath)
@@ -227,14 +227,14 @@ func (s BackupExportUDMProcessor) exportVOIP(neId, fileType string) string {
} }
// exportVolte 导出Volte用户数据 // exportVolte 导出Volte用户数据
func (s BackupExportUDMProcessor) exportVolte(neId, fileType string) string { func (s BackupExportUDMProcessor) exportVolte(coreUid, neUid, fileType string) string {
rows := s.udmVolteIMSService.Find(neDataModel.UDMVolteIMSUser{NeId: neId}) rows := s.udmVolteIMSService.Find(neDataModel.UDMVolteIMSUser{CoreUID: coreUid, NeUID: neUid})
if len(rows) <= 0 { if len(rows) <= 0 {
return "no data" return "no data"
} }
// 文件名 // 文件名
fileName := fmt.Sprintf("volte_%s_export_%s.%s", neId, time.Now().Format("20060102150405"), fileType) fileName := fmt.Sprintf("volte_%s_export_%s.%s", neUid, time.Now().Format("20060102150405"), fileType)
filePath := filepath.Join("/usr/local/omc/backup/udm_data/volte", fileName) filePath := filepath.Join("/usr/local/omc/backup/udm_data/volte", fileName)
if runtime.GOOS == "windows" { if runtime.GOOS == "windows" {
filePath = fmt.Sprintf("C:%s", filePath) filePath = fmt.Sprintf("C:%s", filePath)

View File

@@ -55,18 +55,17 @@ func (s *DeleteNeConfigBackupProcessor) Execute(data any) (any, error) {
neList := s.neInfoService.Find(neModel.NeInfo{}, false, false) neList := s.neInfoService.Find(neModel.NeInfo{}, false, false)
for _, neInfo := range neList { for _, neInfo := range neList {
neTypeAndId := fmt.Sprintf("%s_%s", neInfo.NeType, neInfo.NeId)
tx := db.DB("").Model(&neModel.NeConfigBackup{}) tx := db.DB("").Model(&neModel.NeConfigBackup{})
tx = tx.Where("ne_type = ? and ne_id = ?", neInfo.NeType, neInfo.NeId) tx = tx.Where("core_uid = ? and ne_uid = ?", neInfo.CoreUID, neInfo.NeUID)
// 查询数量为0直接返回 // 查询数量为0直接返回
var total int64 = 0 var total int64 = 0
if err := tx.Count(&total).Error; err != nil { if err := tx.Count(&total).Error; err != nil {
result[neTypeAndId] = err.Error() result[neInfo.NeUID] = err.Error()
continue continue
} }
if total <= int64(params.StoreNum) { if total <= int64(params.StoreNum) {
result[neTypeAndId] = "less than storeNum" result[neInfo.NeUID] = "less than storeNum"
continue continue
} }
@@ -74,11 +73,11 @@ func (s *DeleteNeConfigBackupProcessor) Execute(data any) (any, error) {
var lastCreateTime int64 = 0 var lastCreateTime int64 = 0
lastTx := tx.Select("create_time").Order("create_time DESC").Limit(1) lastTx := tx.Select("create_time").Order("create_time DESC").Limit(1)
if err := lastTx.Find(&lastCreateTime).Error; err != nil { if err := lastTx.Find(&lastCreateTime).Error; err != nil {
result[neTypeAndId] = err.Error() result[neInfo.NeUID] = err.Error()
continue continue
} }
if lastCreateTime <= 1e12 { if lastCreateTime <= 1e12 {
result[neTypeAndId] = "no data" result[neInfo.NeUID] = "no data"
continue continue
} }
@@ -89,22 +88,22 @@ func (s *DeleteNeConfigBackupProcessor) Execute(data any) (any, error) {
// 删除小于最后时间的数据 // 删除小于最后时间的数据
delTx := tx.Delete("create_time < ?", ltTime.UnixMilli()) delTx := tx.Delete("create_time < ?", ltTime.UnixMilli())
if err := delTx.Error; err != nil { if err := delTx.Error; err != nil {
result[neTypeAndId] = err.Error() result[neInfo.NeUID] = err.Error()
continue continue
} }
result[neTypeAndId] = tx.RowsAffected result[neInfo.NeUID] = tx.RowsAffected
// 删除本地文件 // 删除本地文件
s.deleteFile(neInfo.NeType, neInfo.NeId, ltTime) s.deleteFile(neInfo.CoreUID, neInfo.NeUID, ltTime)
} }
return result, nil return result, nil
} }
// deleteFile 删除本地文件 // deleteFile 删除本地文件
func (s DeleteNeConfigBackupProcessor) deleteFile(neType, neId string, oldFileDate time.Time) { func (s DeleteNeConfigBackupProcessor) deleteFile(neType, neUid string, oldFileDate time.Time) {
neTypeLower := strings.ToLower(neType) neTypeLower := strings.ToLower(neType)
localPath := fmt.Sprintf("/usr/local/omc/backup/ne_config/%s/%s ", neTypeLower, neId) localPath := fmt.Sprintf("/usr/local/omc/backup/ne_config/%s/%s ", neTypeLower, neUid)
files, err := os.ReadDir(localPath) files, err := os.ReadDir(localPath)
if err != nil { if err != nil {
logger.Errorf("logger Remove ne_config File ReadDir err: %v", err.Error()) logger.Errorf("logger Remove ne_config File ReadDir err: %v", err.Error())
@@ -113,7 +112,7 @@ func (s DeleteNeConfigBackupProcessor) deleteFile(neType, neId string, oldFileDa
for _, file := range files { for _, file := range files {
// 跳过非指定文件名 // 跳过非指定文件名
// zipFileName := fmt.Sprintf("%s-%s-etc-%s.zip", neTypeLower, neInfo.NeId, date.ParseDateToStr(time.Now(), date.YYYYMMDDHHMMSS)) // zipFileName := fmt.Sprintf("%s-%s-etc-%s.zip", neTypeLower, neInfo.NeId, date.ParseDateToStr(time.Now(), date.YYYYMMDDHHMMSS))
fileName := fmt.Sprintf("%s-%s-etc-", neTypeLower, neId) fileName := fmt.Sprintf("%s-%s-etc-", neTypeLower, neUid)
if !strings.HasPrefix(file.Name(), fileName) { if !strings.HasPrefix(file.Name(), fileName) {
continue continue
} }

View File

@@ -69,15 +69,15 @@ func (s *NeAlarmStateCheckProcessor) Execute(data any) (any, error) {
if neInfo.CreateTime == 0 { if neInfo.CreateTime == 0 {
continue continue
} }
neTypeAndId := fmt.Sprintf("%s_%s", neInfo.NeType, neInfo.NeId)
// 网元在线状态 // 网元在线状态
isOnline := parse.Boolean(neInfo.ServerState["online"]) isOnline := parse.Boolean(neInfo.ServerState["online"])
// 告警ID // 告警ID
params.AlarmId = fmt.Sprintf("%d%d", constants.ALARM_STATE_CHECK, neInfo.CreateTime) params.AlarmId = fmt.Sprintf("%d%d", constants.ALARM_STATE_CHECK, neInfo.CreateTime)
// 检查网元告警ID是否唯一 // 检查网元告警ID是否唯一
alarmIdArr := s.alarmService.Find(neDataModel.Alarm{ alarmIdArr := s.alarmService.Find(neDataModel.Alarm{
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
AlarmId: params.AlarmId, AlarmId: params.AlarmId,
}) })
// 告警状态 // 告警状态
@@ -90,12 +90,12 @@ func (s *NeAlarmStateCheckProcessor) Execute(data any) (any, error) {
// 进行清除 // 进行清除
clearAlarm, err := s.alarmClear(neInfo, alarmIdArr[0]) clearAlarm, err := s.alarmClear(neInfo, alarmIdArr[0])
if err != nil { if err != nil {
result[neTypeAndId] = err.Error() result[neInfo.NeUID] = err.Error()
continue continue
} }
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.NeType, neInfo.NeId) groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.NeType, neInfo.NeUID)
s.wsSendService.ByGroupID(groupID, clearAlarm) s.wsSendService.ByGroupID(groupID, clearAlarm)
result[neTypeAndId] = "alarm clear" result[neInfo.NeUID] = "alarm clear"
} }
// 不在线 // 不在线
@@ -103,12 +103,12 @@ func (s *NeAlarmStateCheckProcessor) Execute(data any) (any, error) {
// 进行新增 // 进行新增
newAlarm, err := s.alarmNew(neInfo, params) newAlarm, err := s.alarmNew(neInfo, params)
if err != nil { if err != nil {
result[neTypeAndId] = err.Error() result[neInfo.NeUID] = err.Error()
continue continue
} }
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.NeType, neInfo.NeId) groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.CoreUID, neInfo.NeUID)
s.wsSendService.ByGroupID(groupID, newAlarm) s.wsSendService.ByGroupID(groupID, newAlarm)
result[neTypeAndId] = "alarm new" result[neInfo.NeUID] = "alarm new"
} }
} }
@@ -135,17 +135,15 @@ func (s NeAlarmStateCheckProcessor) alarmClear(neInfo neModel.NeInfo, v neDataMo
// alarmNew 新增告警 // alarmNew 新增告警
func (s NeAlarmStateCheckProcessor) alarmNew(neInfo neModel.NeInfo, v alarmParams) (neDataModel.Alarm, error) { func (s NeAlarmStateCheckProcessor) alarmNew(neInfo neModel.NeInfo, v alarmParams) (neDataModel.Alarm, error) {
// seq 告警序号 // seq 告警序号
lastSeq := s.alarmService.FindAlarmSeqLast(neInfo.NeType, neInfo.NeId) lastSeq := s.alarmService.FindAlarmSeqLast(neInfo.CoreUID, neInfo.NeUID)
lastTime := neInfo.UpdateTime // 网元最后更新时间 lastTime := neInfo.UpdateTime // 网元最后更新时间
if lastTime < neInfo.CreateTime { if lastTime < neInfo.CreateTime {
lastTime = time.Now().UnixMilli() lastTime = time.Now().UnixMilli()
} }
alarm := neDataModel.Alarm{ alarm := neDataModel.Alarm{
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
NeName: neInfo.NeName,
Province: neInfo.Province,
PvFlag: neInfo.PvFlag,
AlarmSeq: lastSeq + 1, AlarmSeq: lastSeq + 1,
AlarmId: v.AlarmId, AlarmId: v.AlarmId,
AlarmTitle: v.AlarmTitle, AlarmTitle: v.AlarmTitle,
@@ -154,7 +152,7 @@ func (s NeAlarmStateCheckProcessor) alarmNew(neInfo neModel.NeInfo, v alarmParam
AlarmType: v.AlarmType, AlarmType: v.AlarmType,
OrigSeverity: v.OrigSeverity, OrigSeverity: v.OrigSeverity,
PerceivedSeverity: v.OrigSeverity, PerceivedSeverity: v.OrigSeverity,
ObjectUid: neInfo.RmUID, ObjectUid: neInfo.NeUID,
ObjectName: "NE State", ObjectName: "NE State",
ObjectType: "state", ObjectType: "state",
LocationInfo: "NE State: Heartbeat", LocationInfo: "NE State: Heartbeat",

View File

@@ -103,18 +103,20 @@ func (s *NeAlarmStateCheckCMDProcessor) Execute(data any) (any, error) {
} }
// 检查状态 // 检查状态
neInfo.ServerState["coreUid"] = neInfo.CoreUID
neInfo.ServerState["neUid"] = neInfo.NeUID
err := s.serverState(neInfo.ServerState, params.CPUUseGt, params.MemUseGt, params.DiskUseGt) err := s.serverState(neInfo.ServerState, params.CPUUseGt, params.MemUseGt, params.DiskUseGt)
if err == nil { if err == nil {
continue continue
} }
neTypeAndId := fmt.Sprintf("%s_%s", neInfo.NeType, neInfo.NeId)
// 告警ID // 告警ID
params.AlarmId = fmt.Sprintf("%d%d", constants.ALARM_CMD_CHECK, neInfo.CreateTime) params.AlarmId = fmt.Sprintf("%d%d", constants.ALARM_CMD_CHECK, neInfo.CreateTime)
// 检查网元告警ID是否唯一 // 检查网元告警ID是否唯一
alarmIdArr := s.alarmService.Find(neDataModel.Alarm{ alarmIdArr := s.alarmService.Find(neDataModel.Alarm{
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
AlarmId: params.AlarmId, AlarmId: params.AlarmId,
}) })
// 告警状态, 存在的需要手动清除 // 告警状态, 存在的需要手动清除
@@ -126,12 +128,12 @@ func (s *NeAlarmStateCheckCMDProcessor) Execute(data any) (any, error) {
if alarmStatus == "1" { if alarmStatus == "1" {
clearAlarm, err := s.alarmClear(neInfo, alarmIdArr[0]) clearAlarm, err := s.alarmClear(neInfo, alarmIdArr[0])
if err != nil { if err != nil {
result[neTypeAndId] = err.Error() result[neInfo.NeUID] = err.Error()
continue continue
} }
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.NeType, neInfo.NeId) groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.CoreUID, neInfo.NeUID)
s.wsSendService.ByGroupID(groupID, clearAlarm) s.wsSendService.ByGroupID(groupID, clearAlarm)
result[neTypeAndId] = "alarm clear" result[neInfo.NeUID] = "alarm clear"
alarmStatus = "" // 标记为未记录再次发起新告警 alarmStatus = "" // 标记为未记录再次发起新告警
} }
// 未记录 // 未记录
@@ -147,12 +149,12 @@ func (s *NeAlarmStateCheckCMDProcessor) Execute(data any) (any, error) {
params.AddInfo = addInfo // 恢复附加信息 params.AddInfo = addInfo // 恢复附加信息
triggerCount.Clear() // 重置连续触发次数 triggerCount.Clear() // 重置连续触发次数
if err != nil { if err != nil {
result[neTypeAndId] = err.Error() result[neInfo.NeUID] = err.Error()
continue continue
} }
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.NeType, neInfo.NeId) groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.CoreUID, neInfo.NeUID)
s.wsSendService.ByGroupID(groupID, newAlarm) s.wsSendService.ByGroupID(groupID, newAlarm)
result[neTypeAndId] = "alarm new" result[neInfo.NeUID] = "alarm new"
} }
} }
@@ -204,8 +206,8 @@ func (s NeAlarmStateCheckCMDProcessor) serverState(state map[string]any, cpuUseG
// 插入网元状态记录 // 插入网元状态记录
neState := neDataModel.NEState{ neState := neDataModel.NEState{
NeType: fmt.Sprint(state["neType"]), CoreUID: fmt.Sprint(state["coreUid"]),
NeId: fmt.Sprint(state["neId"]), NeUID: fmt.Sprint(state["neUid"]),
Version: fmt.Sprint(state["version"]), Version: fmt.Sprint(state["version"]),
Capability: parse.Number(state["capability"]), Capability: parse.Number(state["capability"]),
SerialNum: fmt.Sprint(state["sn"]), SerialNum: fmt.Sprint(state["sn"]),
@@ -221,7 +223,7 @@ func (s NeAlarmStateCheckCMDProcessor) serverState(state map[string]any, cpuUseG
// 删除网元状态记录7天前 // 删除网元状态记录7天前
s.neStateService.DeleteByTime(time.Now().UnixMilli() - 7*24*60*60*1000) s.neStateService.DeleteByTime(time.Now().UnixMilli() - 7*24*60*60*1000)
// 推送ws消息 // 推送ws消息
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_NE_STATE, neState.NeType, neState.NeId) groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_NE_STATE, neState.CoreUID, neState.NeUID)
s.wsSendService.ByGroupID(groupID, neState) s.wsSendService.ByGroupID(groupID, neState)
// 检查CPU/Menory/Disk使用率 // 检查CPU/Menory/Disk使用率
@@ -237,9 +239,8 @@ func (s NeAlarmStateCheckCMDProcessor) serverState(state map[string]any, cpuUseG
} }
if len(warnMsg) > 0 { if len(warnMsg) > 0 {
currentTime := time.Now() currentTime := time.Now()
neTypeAndId := fmt.Sprintf("%s_%s", neState.NeType, neState.NeId)
validTimes := []time.Time{} validTimes := []time.Time{}
if v, ok := triggerCount.Load(neTypeAndId); ok { if v, ok := triggerCount.Load(neState.NeUID); ok {
times := v.([]time.Time) times := v.([]time.Time)
// 清理过期的记录10秒前的触发记录不再计入 // 清理过期的记录10秒前的触发记录不再计入
for _, t := range times { for _, t := range times {
@@ -248,11 +249,11 @@ func (s NeAlarmStateCheckCMDProcessor) serverState(state map[string]any, cpuUseG
} }
} }
validTimes = append(validTimes, currentTime) validTimes = append(validTimes, currentTime)
triggerCount.Store(neTypeAndId, validTimes) triggerCount.Store(neState.NeUID, validTimes)
} else { } else {
// 事件第一次触发,初始化记录 // 事件第一次触发,初始化记录
validTimes = append(validTimes, currentTime) validTimes = append(validTimes, currentTime)
triggerCount.Store(neTypeAndId, validTimes) triggerCount.Store(neState.NeUID, validTimes)
} }
if int64(len(validTimes)) >= triggerMax { if int64(len(validTimes)) >= triggerMax {
return fmt.Errorf("greater than %s", strings.Join(warnMsg, ", ")) return fmt.Errorf("greater than %s", strings.Join(warnMsg, ", "))
@@ -280,17 +281,15 @@ func (s NeAlarmStateCheckCMDProcessor) alarmClear(neInfo neModel.NeInfo, v neDat
// alarmNew 新增告警 // alarmNew 新增告警
func (s NeAlarmStateCheckCMDProcessor) alarmNew(neInfo neModel.NeInfo, v alarmParams) (neDataModel.Alarm, error) { func (s NeAlarmStateCheckCMDProcessor) alarmNew(neInfo neModel.NeInfo, v alarmParams) (neDataModel.Alarm, error) {
// seq 告警序号 // seq 告警序号
lastSeq := s.alarmService.FindAlarmSeqLast(neInfo.NeType, neInfo.NeId) lastSeq := s.alarmService.FindAlarmSeqLast(neInfo.CoreUID, neInfo.NeUID)
lastTime := neInfo.UpdateTime // 网元最后更新时间 lastTime := neInfo.UpdateTime // 网元最后更新时间
if lastTime < neInfo.CreateTime { if lastTime < neInfo.CreateTime {
lastTime = time.Now().UnixMilli() lastTime = time.Now().UnixMilli()
} }
alarm := neDataModel.Alarm{ alarm := neDataModel.Alarm{
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
NeName: neInfo.NeName,
Province: neInfo.Province,
PvFlag: neInfo.PvFlag,
AlarmSeq: lastSeq + 1, AlarmSeq: lastSeq + 1,
AlarmId: v.AlarmId, AlarmId: v.AlarmId,
AlarmTitle: v.AlarmTitle, AlarmTitle: v.AlarmTitle,
@@ -299,7 +298,7 @@ func (s NeAlarmStateCheckCMDProcessor) alarmNew(neInfo neModel.NeInfo, v alarmPa
AlarmType: v.AlarmType, AlarmType: v.AlarmType,
OrigSeverity: v.OrigSeverity, OrigSeverity: v.OrigSeverity,
PerceivedSeverity: v.OrigSeverity, PerceivedSeverity: v.OrigSeverity,
ObjectUid: neInfo.RmUID, ObjectUid: neInfo.NeUID,
ObjectName: "NE CPU/Menory/Disk", ObjectName: "NE CPU/Menory/Disk",
ObjectType: "cmd", ObjectType: "cmd",
LocationInfo: "NE CPU/Menory/Disk: Heartbeat", LocationInfo: "NE CPU/Menory/Disk: Heartbeat",

View File

@@ -92,13 +92,13 @@ func (s *NeAlarmStateCheckLicenseProcessor) Execute(data any) (any, error) {
params.AddInfo = err.Error() params.AddInfo = err.Error()
} }
neTypeAndId := fmt.Sprintf("%s_%s", neInfo.NeType, neInfo.NeId)
// 告警ID // 告警ID
params.AlarmId = fmt.Sprintf("%d%d", constants.ALARM_LICENSE_CHECK, neInfo.CreateTime) params.AlarmId = fmt.Sprintf("%d%d", constants.ALARM_LICENSE_CHECK, neInfo.CreateTime)
// 检查网元告警ID是否唯一 // 检查网元告警ID是否唯一
alarmIdArr := s.alarmService.Find(neDataModel.Alarm{ alarmIdArr := s.alarmService.Find(neDataModel.Alarm{
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
AlarmId: params.AlarmId, AlarmId: params.AlarmId,
}) })
// 告警状态, 存在的需要手动清除 // 告警状态, 存在的需要手动清除
@@ -110,12 +110,12 @@ func (s *NeAlarmStateCheckLicenseProcessor) Execute(data any) (any, error) {
if alarmStatus == "1" { if alarmStatus == "1" {
clearAlarm, err := s.alarmClear(neInfo, alarmIdArr[0]) clearAlarm, err := s.alarmClear(neInfo, alarmIdArr[0])
if err != nil { if err != nil {
result[neTypeAndId] = err.Error() result[neInfo.NeUID] = err.Error()
continue continue
} }
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.NeType, neInfo.NeId) groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.CoreUID, neInfo.NeUID)
s.wsSendService.ByGroupID(groupID, clearAlarm) s.wsSendService.ByGroupID(groupID, clearAlarm)
result[neTypeAndId] = "alarm clear" result[neInfo.NeUID] = "alarm clear"
alarmStatus = "" // 标记为未记录再次发起新告警 alarmStatus = "" // 标记为未记录再次发起新告警
} }
// 未记录 // 未记录
@@ -130,12 +130,12 @@ func (s *NeAlarmStateCheckLicenseProcessor) Execute(data any) (any, error) {
newAlarm, err := s.alarmNew(neInfo, params) newAlarm, err := s.alarmNew(neInfo, params)
params.AddInfo = addInfo // 恢复附加信息 params.AddInfo = addInfo // 恢复附加信息
if err != nil { if err != nil {
result[neTypeAndId] = err.Error() result[neInfo.NeUID] = err.Error()
continue continue
} }
groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.NeType, neInfo.NeId) groupID := fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.CoreUID, neInfo.NeUID)
s.wsSendService.ByGroupID(groupID, newAlarm) s.wsSendService.ByGroupID(groupID, newAlarm)
result[neTypeAndId] = "alarm new" result[neInfo.NeUID] = "alarm new"
} }
} }
@@ -183,17 +183,15 @@ func (s NeAlarmStateCheckLicenseProcessor) alarmClear(neInfo neModel.NeInfo, v n
// alarmNew 新增告警 // alarmNew 新增告警
func (s NeAlarmStateCheckLicenseProcessor) alarmNew(neInfo neModel.NeInfo, v alarmParams) (neDataModel.Alarm, error) { func (s NeAlarmStateCheckLicenseProcessor) alarmNew(neInfo neModel.NeInfo, v alarmParams) (neDataModel.Alarm, error) {
// seq 告警序号 // seq 告警序号
lastSeq := s.alarmService.FindAlarmSeqLast(neInfo.NeType, neInfo.NeId) lastSeq := s.alarmService.FindAlarmSeqLast(neInfo.CoreUID, neInfo.NeUID)
lastTime := neInfo.UpdateTime // 网元最后更新时间 lastTime := neInfo.UpdateTime // 网元最后更新时间
if lastTime < neInfo.CreateTime { if lastTime < neInfo.CreateTime {
lastTime = time.Now().UnixMilli() lastTime = time.Now().UnixMilli()
} }
alarm := neDataModel.Alarm{ alarm := neDataModel.Alarm{
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
NeName: neInfo.NeName,
Province: neInfo.Province,
PvFlag: neInfo.PvFlag,
AlarmSeq: lastSeq + 1, AlarmSeq: lastSeq + 1,
AlarmId: v.AlarmId, AlarmId: v.AlarmId,
AlarmTitle: v.AlarmTitle, AlarmTitle: v.AlarmTitle,
@@ -202,7 +200,7 @@ func (s NeAlarmStateCheckLicenseProcessor) alarmNew(neInfo neModel.NeInfo, v ala
AlarmType: v.AlarmType, AlarmType: v.AlarmType,
OrigSeverity: v.OrigSeverity, OrigSeverity: v.OrigSeverity,
PerceivedSeverity: v.OrigSeverity, PerceivedSeverity: v.OrigSeverity,
ObjectUid: neInfo.RmUID, ObjectUid: neInfo.NeUID,
ObjectName: "NE License", ObjectName: "NE License",
ObjectType: "license", ObjectType: "license",
LocationInfo: "NE License: Heartbeat", LocationInfo: "NE License: Heartbeat",

View File

@@ -38,7 +38,7 @@ func (s *NeConfigBackupProcessor) Execute(data any) (any, error) {
neList := s.neInfoService.Find(neModel.NeInfo{}, false, false) neList := s.neInfoService.Find(neModel.NeInfo{}, false, false)
for _, neInfo := range neList { for _, neInfo := range neList {
neTypeAndId := fmt.Sprintf("%s_%s", neInfo.NeType, neInfo.NeId) neTypeAndId := fmt.Sprintf("%s_%s", neInfo.NeType, neInfo.ID)
// 将网元文件备份到本地 // 将网元文件备份到本地
zipFilePath, err := s.neConfigBackupService.FileNeToLocal(neInfo) zipFilePath, err := s.neConfigBackupService.FileNeToLocal(neInfo)
if err != nil { if err != nil {
@@ -48,8 +48,9 @@ func (s *NeConfigBackupProcessor) Execute(data any) (any, error) {
// 新增备份记录 // 新增备份记录
item := neModel.NeConfigBackup{ item := neModel.NeConfigBackup{
CoreUID: neInfo.CoreUID,
NeUID: neInfo.NeUID,
NeType: neInfo.NeType, NeType: neInfo.NeType,
NeId: neInfo.NeId,
Name: filepath.Base(zipFilePath), Name: filepath.Base(zipFilePath),
Path: zipFilePath, Path: zipFilePath,
CreateBy: "system", CreateBy: "system",

View File

@@ -37,8 +37,8 @@ func (s *NeDataUDM) Execute(data any) (any, error) {
neList := s.neInfoService.Find(neModel.NeInfo{NeType: "UDM"}, false, false) neList := s.neInfoService.Find(neModel.NeInfo{NeType: "UDM"}, false, false)
for _, neInfo := range neList { for _, neInfo := range neList {
result[fmt.Sprintf("AuthNumber_%s", neInfo.NeId)] = s.udmAuthService.ResetData(neInfo.NeId) result[fmt.Sprintf("AuthNumber_%s", neInfo.NeUID)] = s.udmAuthService.ResetData(neInfo.CoreUID, neInfo.NeUID)
result[fmt.Sprintf("SubNumber_%s", neInfo.NeId)] = s.udmSubService.ResetData(neInfo.NeId) result[fmt.Sprintf("SubNumber_%s", neInfo.NeUID)] = s.udmSubService.ResetData(neInfo.CoreUID, neInfo.NeUID)
} }
return result, nil return result, nil

View File

@@ -3,8 +3,6 @@ package controller
import ( import (
"fmt" "fmt"
"be.ems/src/framework/i18n"
"be.ems/src/framework/reqctx"
"be.ems/src/framework/resp" "be.ems/src/framework/resp"
"be.ems/src/modules/network_data/model" "be.ems/src/modules/network_data/model"
neDataService "be.ems/src/modules/network_data/service" neDataService "be.ems/src/modules/network_data/service"
@@ -45,7 +43,6 @@ type KPIController struct {
// @Description Access to statistical data // @Description Access to statistical data
// @Router /neData/kpi/data [get] // @Router /neData/kpi/data [get]
func (s KPIController) KPIData(c *gin.Context) { func (s KPIController) KPIData(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
var querys model.KPIQuery var querys model.KPIQuery
if err := c.ShouldBindQuery(&querys); err != nil { if err := c.ShouldBindQuery(&querys); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
@@ -53,14 +50,6 @@ func (s KPIController) KPIData(c *gin.Context) {
return return
} }
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID(querys.NeType, querys.NeID)
if neInfo.NeId != querys.NeID || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
querys.RmUID = neInfo.RmUID
// 查询数据 // 查询数据
kpiData := s.kpiReportService.FindData(querys) kpiData := s.kpiReportService.FindData(querys)
c.JSON(200, resp.OkData(kpiData)) c.JSON(200, resp.OkData(kpiData))

View File

@@ -49,7 +49,6 @@ type NBStateController struct {
// @Description Base Station Status List // @Description Base Station Status List
// @Router /nb-state/list [get] // @Router /nb-state/list [get]
func (s NBStateController) List(c *gin.Context) { func (s NBStateController) List(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
var query model.NBStateQuery var query model.NBStateQuery
if err := c.ShouldBindQuery(&query); err != nil { if err := c.ShouldBindQuery(&query); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
@@ -57,14 +56,6 @@ func (s NBStateController) List(c *gin.Context) {
return return
} }
// 查询网元信息 rmUID
neInfo := s.neInfoService.FindByNeTypeAndNeID(query.NeType, query.NeID)
if neInfo.NeId != query.NeID || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
query.RmUID = neInfo.RmUID
// 查询数据 // 查询数据
rows, total := s.nbStateService.FindByPage(query) rows, total := s.nbStateService.FindByPage(query)
c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total})) c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total}))
@@ -96,13 +87,7 @@ func (s NBStateController) Export(c *gin.Context) {
if querys.PageSize > 10000 { if querys.PageSize > 10000 {
querys.PageSize = 10000 querys.PageSize = 10000
} }
// 查询网元信息 rmUID
neInfo := s.neInfoService.FindByNeTypeAndNeID(querys.NeType, querys.NeID)
if neInfo.NeId != querys.NeID || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
querys.RmUID = neInfo.RmUID
rows, total := s.nbStateService.FindByPage(querys) rows, total := s.nbStateService.FindByPage(querys)
if total == 0 { if total == 0 {
// 导出数据记录为空 // 导出数据记录为空

View File

@@ -48,7 +48,6 @@ type AMFController struct {
// @Description UE Session List // @Description UE Session List
// @Router /neData/amf/ue/list [get] // @Router /neData/amf/ue/list [get]
func (s *AMFController) UEList(c *gin.Context) { func (s *AMFController) UEList(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
var querys model.UEEventAMFQuery var querys model.UEEventAMFQuery
if err := c.ShouldBindQuery(&querys); err != nil { if err := c.ShouldBindQuery(&querys); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
@@ -56,14 +55,6 @@ func (s *AMFController) UEList(c *gin.Context) {
return return
} }
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("AMF", querys.NeID)
if neInfo.NeId != querys.NeID || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
querys.RmUID = neInfo.RmUID
// 查询数据 // 查询数据
rows, total := s.ueEventService.FindByPage(querys) rows, total := s.ueEventService.FindByPage(querys)
c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total})) c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total}))
@@ -133,13 +124,7 @@ func (s *AMFController) UEExport(c *gin.Context) {
if querys.PageSize > 10000 { if querys.PageSize > 10000 {
querys.PageSize = 10000 querys.PageSize = 10000
} }
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("AMF", querys.NeID)
if neInfo.NeId != querys.NeID || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
querys.RmUID = neInfo.RmUID
rows, total := s.ueEventService.FindByPage(querys) rows, total := s.ueEventService.FindByPage(querys)
if total == 0 { if total == 0 {
// 导出数据记录为空 // 导出数据记录为空
@@ -176,8 +161,9 @@ func (s *AMFController) UEExport(c *gin.Context) {
func (s *AMFController) NbInfoList(c *gin.Context) { func (s *AMFController) NbInfoList(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
var query struct { var query struct {
NeId string `form:"neId" binding:"required"` CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
NbId string `form:"id"` NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
NbId string `form:"id"`
} }
if err := c.ShouldBindQuery(&query); err != nil { if err := c.ShouldBindQuery(&query); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
@@ -186,8 +172,8 @@ func (s *AMFController) NbInfoList(c *gin.Context) {
} }
// 查询网元信息 // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("AMF", query.NeId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
if neInfo.NeId != query.NeId || neInfo.IP == "" { if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
@@ -219,15 +205,19 @@ func (s *AMFController) NbInfoList(c *gin.Context) {
// @Router /neData/amf/nb/list-cfg [get] // @Router /neData/amf/nb/list-cfg [get]
func (s *AMFController) NbStateList(c *gin.Context) { func (s *AMFController) NbStateList(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Query("neId") var query struct {
if neId == "" { CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty")) NeUID string `form:"neUid" 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 return
} }
// 查询网元信息 // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("AMF", neId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
if neInfo.NeId != neId || neInfo.IP == "" { if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }

View File

@@ -49,7 +49,6 @@ type IMSController struct {
// @Description CDR Session List // @Description CDR Session List
// @Router /neData/ims/cdr/list [get] // @Router /neData/ims/cdr/list [get]
func (s *IMSController) CDRList(c *gin.Context) { func (s *IMSController) CDRList(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
var querys model.CDREventIMSQuery var querys model.CDREventIMSQuery
if err := c.ShouldBindQuery(&querys); err != nil { if err := c.ShouldBindQuery(&querys); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
@@ -57,14 +56,6 @@ func (s *IMSController) CDRList(c *gin.Context) {
return return
} }
// 查询网元信息 rmUID
neInfo := s.neInfoService.FindByNeTypeAndNeID(querys.NeType, querys.NeID)
if neInfo.NeId != querys.NeID || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
querys.RmUID = neInfo.RmUID
// 查询数据 // 查询数据
rows, total := s.cdrEventService.FindByPage(querys) rows, total := s.cdrEventService.FindByPage(querys)
c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total})) c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total}))
@@ -134,13 +125,7 @@ func (s *IMSController) CDRExport(c *gin.Context) {
if querys.PageSize > 10000 { if querys.PageSize > 10000 {
querys.PageSize = 10000 querys.PageSize = 10000
} }
// 查询网元信息 rmUID
neInfo := s.neInfoService.FindByNeTypeAndNeID(querys.NeType, querys.NeID)
if neInfo.NeId != querys.NeID || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
querys.RmUID = neInfo.RmUID
rows, total := s.cdrEventService.FindByPage(querys) rows, total := s.cdrEventService.FindByPage(querys)
if total == 0 { if total == 0 {
// 导出数据记录为空 // 导出数据记录为空
@@ -175,15 +160,19 @@ func (s *IMSController) CDRExport(c *gin.Context) {
// @Router /neData/ims/session/num [get] // @Router /neData/ims/session/num [get]
func (s *IMSController) UeSessionNum(c *gin.Context) { func (s *IMSController) UeSessionNum(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Query("neId") var query struct {
if neId == "" { CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty")) NeUID string `form:"neUid" 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 return
} }
// 查询网元信息 // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("IMS", neId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
if neInfo.NeId != neId || neInfo.IP == "" { if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
@@ -216,9 +205,10 @@ func (s *IMSController) UeSessionNum(c *gin.Context) {
func (s *IMSController) UeSessionList(c *gin.Context) { func (s *IMSController) UeSessionList(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
var query struct { var query struct {
NeId string `form:"neId" binding:"required"` CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
IMSI string `form:"imsi"` NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
MSISDN string `form:"msisdn"` IMSI string `form:"imsi"`
MSISDN string `form:"msisdn"`
} }
if err := c.ShouldBindQuery(&query); err != nil { if err := c.ShouldBindQuery(&query); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
@@ -227,8 +217,8 @@ func (s *IMSController) UeSessionList(c *gin.Context) {
} }
// 查询网元信息 // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("IMS", query.NeId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
if neInfo.NeId != query.NeId || neInfo.IP == "" { if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }

View File

@@ -48,7 +48,6 @@ type MMEController struct {
// @Description UE Session List // @Description UE Session List
// @Router /neData/mme/ue/list [get] // @Router /neData/mme/ue/list [get]
func (s *MMEController) UEList(c *gin.Context) { func (s *MMEController) UEList(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
var querys model.UEEventMMEQuery var querys model.UEEventMMEQuery
if err := c.ShouldBindQuery(&querys); err != nil { if err := c.ShouldBindQuery(&querys); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
@@ -56,14 +55,6 @@ func (s *MMEController) UEList(c *gin.Context) {
return return
} }
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("MME", querys.NeID)
if neInfo.NeId != querys.NeID || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
querys.RmUID = neInfo.RmUID
// 查询数据 // 查询数据
rows, total := s.ueEventService.FindByPage(querys) rows, total := s.ueEventService.FindByPage(querys)
c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total})) c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total}))
@@ -133,13 +124,7 @@ func (s *MMEController) UEExport(c *gin.Context) {
if querys.PageSize > 10000 { if querys.PageSize > 10000 {
querys.PageSize = 10000 querys.PageSize = 10000
} }
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("MME", querys.NeID)
if neInfo.NeId != querys.NeID || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
querys.RmUID = neInfo.RmUID
rows, total := s.ueEventService.FindByPage(querys) rows, total := s.ueEventService.FindByPage(querys)
if total == 0 { if total == 0 {
// 导出数据记录为空 // 导出数据记录为空
@@ -176,8 +161,9 @@ func (s *MMEController) UEExport(c *gin.Context) {
func (s *MMEController) NbInfoList(c *gin.Context) { func (s *MMEController) NbInfoList(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
var query struct { var query struct {
NeId string `form:"neId" binding:"required"` CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
NbId string `form:"id"` NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
NbId string `form:"id"`
} }
if err := c.ShouldBindQuery(&query); err != nil { if err := c.ShouldBindQuery(&query); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
@@ -186,8 +172,8 @@ func (s *MMEController) NbInfoList(c *gin.Context) {
} }
// 查询网元信息 // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("MME", query.NeId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
if neInfo.NeId != query.NeId || neInfo.IP == "" { if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
@@ -219,15 +205,19 @@ func (s *MMEController) NbInfoList(c *gin.Context) {
// @Router /neData/mme/nb/list-cfg [get] // @Router /neData/mme/nb/list-cfg [get]
func (s *MMEController) NbStateList(c *gin.Context) { func (s *MMEController) NbStateList(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Query("neId") var query struct {
if neId == "" { CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty")) NeUID string `form:"neUid" 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 return
} }
// 查询网元信息 // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("MME", neId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
if neInfo.NeId != neId || neInfo.IP == "" { if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }

View File

@@ -42,9 +42,10 @@ type PCFController struct {
func (s PCFController) RuleInfoList(c *gin.Context) { func (s PCFController) RuleInfoList(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
var query struct { var query struct {
NeId string `form:"neId" binding:"required"` CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
IMSI string `form:"imsi"` NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
MSISDN string `form:"msisdn"` IMSI string `form:"imsi"`
MSISDN string `form:"msisdn"`
} }
if err := c.ShouldBindQuery(&query); err != nil { if err := c.ShouldBindQuery(&query); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
@@ -53,8 +54,8 @@ func (s PCFController) RuleInfoList(c *gin.Context) {
} }
// 查询网元信息 // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("PCF", query.NeId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
if neInfo.NeId != query.NeId || neInfo.IP == "" { if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
@@ -88,7 +89,8 @@ func (s PCFController) RuleInfoList(c *gin.Context) {
func (s PCFController) RuleInfoAdd(c *gin.Context) { func (s PCFController) RuleInfoAdd(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
var body struct { var body struct {
NeId string `json:"neId" binding:"required"` // 网元ID CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
Num int64 `json:"num"` // 批量添加默认0单条大于1时imsi/msisdn会累加数值 Num int64 `json:"num"` // 批量添加默认0单条大于1时imsi/msisdn会累加数值
ParamData map[string]any `json:"paramData" binding:"required"` // 参数数据 ParamData map[string]any `json:"paramData" binding:"required"` // 参数数据
// Imsi string `json:"imsi" binding:"required"` // Imsi string `json:"imsi" binding:"required"`
@@ -109,8 +111,8 @@ func (s PCFController) RuleInfoAdd(c *gin.Context) {
} }
// 查询网元信息 // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("PCF", body.NeId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(body.CoreUID, body.NeUID)
if neInfo.NeId != body.NeId || neInfo.IP == "" { if neInfo.CoreUID != body.CoreUID || neInfo.NeUID != body.NeUID {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
@@ -145,7 +147,8 @@ func (s PCFController) RuleInfoAdd(c *gin.Context) {
func (s PCFController) RuleInfoEdit(c *gin.Context) { func (s PCFController) RuleInfoEdit(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
var body struct { var body struct {
NeId string `json:"neId" binding:"required"` // 网元ID CoreUID string `json:"coreUid" binding:"required"` // 核心网唯一标识
NeUID string `json:"neUid" binding:"required"` // 网元唯一标识
Num int64 `json:"num"` // 更新数量 Num int64 `json:"num"` // 更新数量
ParamData map[string]any `json:"paramData" binding:"required"` // 参数数据 ParamData map[string]any `json:"paramData" binding:"required"` // 参数数据
// Imsi string `json:"imsi" binding:"required"` // Imsi string `json:"imsi" binding:"required"`
@@ -166,8 +169,8 @@ func (s PCFController) RuleInfoEdit(c *gin.Context) {
} }
// 查询网元信息 // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("PCF", body.NeId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(body.CoreUID, body.NeUID)
if neInfo.NeId != body.NeId || neInfo.IP == "" { if neInfo.CoreUID != body.CoreUID || neInfo.NeUID != body.NeUID {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
@@ -204,9 +207,10 @@ func (s PCFController) RuleInfoEdit(c *gin.Context) {
func (s PCFController) RuleInfoRemove(c *gin.Context) { func (s PCFController) RuleInfoRemove(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
var query struct { var query struct {
NeId string `form:"neId" binding:"required"` // 网元ID CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
IMSI string `form:"imsi" binding:"required"` // IMSi, 带数量时为批量删除 NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
Num int64 `form:"num"` // 删除数量 IMSI string `form:"imsi" binding:"required"` // IMSi, 带数量时为批量删除
Num int64 `form:"num"` // 删除数量
} }
if err := c.ShouldBindQuery(&query); err != nil { if err := c.ShouldBindQuery(&query); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
@@ -215,8 +219,8 @@ func (s PCFController) RuleInfoRemove(c *gin.Context) {
} }
// 查询网元信息 // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("PCF", query.NeId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
if neInfo.NeId != query.NeId || neInfo.IP == "" { if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
@@ -252,7 +256,8 @@ func (s PCFController) RuleInfoRemove(c *gin.Context) {
func (s PCFController) RuleInfoExport(c *gin.Context) { func (s PCFController) RuleInfoExport(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
var query struct { var query struct {
NeId string `form:"neId" binding:"required"` CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
FileType string `form:"fileType" binding:"required,oneof=txt"` // 文件类型 FileType string `form:"fileType" binding:"required,oneof=txt"` // 文件类型
} }
if err := c.ShouldBindQuery(&query); err != nil { if err := c.ShouldBindQuery(&query); err != nil {
@@ -262,8 +267,8 @@ func (s PCFController) RuleInfoExport(c *gin.Context) {
} }
// 查询网元信息 // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("PCF", query.NeId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
if neInfo.NeId != query.NeId || neInfo.IP == "" { if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
@@ -298,7 +303,8 @@ func (s PCFController) RuleInfoExport(c *gin.Context) {
func (s PCFController) RuleInfoImport(c *gin.Context) { func (s PCFController) RuleInfoImport(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
var body struct { var body struct {
NeId string `json:"neId" binding:"required"` CoreUID string `json:"coreUid" binding:"required"` // 核心网唯一标识
NeUID string `json:"neUid" binding:"required"` // 网元唯一标识
FileType string `json:"fileType" binding:"required,oneof=txt"` // 文件类型 FileType string `json:"fileType" binding:"required,oneof=txt"` // 文件类型
FilePath string `json:"filePath" binding:"required"` // 网元端文件所在绝对路径 FilePath string `json:"filePath" binding:"required"` // 网元端文件所在绝对路径
} }
@@ -309,8 +315,8 @@ func (s PCFController) RuleInfoImport(c *gin.Context) {
} }
// 查询网元信息 // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("PCF", body.NeId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(body.CoreUID, body.NeUID)
if neInfo.NeId != body.NeId || neInfo.IP == "" { if neInfo.CoreUID != body.CoreUID || neInfo.NeUID != body.NeUID {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }

View File

@@ -49,7 +49,6 @@ type SGWCController struct {
// @Description CDR Session List // @Description CDR Session List
// @Router /neData/sgwc/cdr/list [get] // @Router /neData/sgwc/cdr/list [get]
func (s *SGWCController) CDRList(c *gin.Context) { func (s *SGWCController) CDRList(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
var querys model.CDREventSGWCQuery var querys model.CDREventSGWCQuery
if err := c.ShouldBindQuery(&querys); err != nil { if err := c.ShouldBindQuery(&querys); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
@@ -57,14 +56,6 @@ func (s *SGWCController) CDRList(c *gin.Context) {
return return
} }
// 查询网元信息 rmUID
neInfo := s.neInfoService.FindByNeTypeAndNeID(querys.NeType, querys.NeID)
if neInfo.NeId != querys.NeID || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
querys.RmUID = neInfo.RmUID
// 查询数据 // 查询数据
rows, total := s.cdrEventService.FindByPage(querys) rows, total := s.cdrEventService.FindByPage(querys)
c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total})) c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total}))
@@ -134,13 +125,7 @@ func (s *SGWCController) CDRExport(c *gin.Context) {
if querys.PageSize > 10000 { if querys.PageSize > 10000 {
querys.PageSize = 10000 querys.PageSize = 10000
} }
// 查询网元信息 rmUID
neInfo := s.neInfoService.FindByNeTypeAndNeID(querys.NeType, querys.NeID)
if neInfo.NeId != querys.NeID || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
querys.RmUID = neInfo.RmUID
rows, total := s.cdrEventService.FindByPage(querys) rows, total := s.cdrEventService.FindByPage(querys)
if total == 0 { if total == 0 {
// 导出数据记录为空 // 导出数据记录为空

View File

@@ -51,7 +51,6 @@ type SMFController struct {
// @Description CDR Session List // @Description CDR Session List
// @Router /neData/smf/cdr/list [get] // @Router /neData/smf/cdr/list [get]
func (s *SMFController) CDRList(c *gin.Context) { func (s *SMFController) CDRList(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
var querys model.CDREventSMFQuery var querys model.CDREventSMFQuery
if err := c.ShouldBindQuery(&querys); err != nil { if err := c.ShouldBindQuery(&querys); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
@@ -59,14 +58,6 @@ func (s *SMFController) CDRList(c *gin.Context) {
return return
} }
// 查询网元信息 rmUID
neInfo := s.neInfoService.FindByNeTypeAndNeID(querys.NeType, querys.NeID)
if neInfo.NeId != querys.NeID || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
querys.RmUID = neInfo.RmUID
// 查询数据 // 查询数据
rows, total := s.cdrEventService.FindByPage(querys) rows, total := s.cdrEventService.FindByPage(querys)
c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total})) c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total}))
@@ -136,13 +127,7 @@ func (s *SMFController) CDRExport(c *gin.Context) {
if querys.PageSize > 10000 { if querys.PageSize > 10000 {
querys.PageSize = 10000 querys.PageSize = 10000
} }
// 查询网元信息 rmUID
neInfo := s.neInfoService.FindByNeTypeAndNeID(querys.NeType, querys.NeID)
if neInfo.NeId != querys.NeID || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
querys.RmUID = neInfo.RmUID
rows, total := s.cdrEventService.FindByPage(querys) rows, total := s.cdrEventService.FindByPage(querys)
if total == 0 { if total == 0 {
// 导出数据记录为空 // 导出数据记录为空
@@ -178,7 +163,8 @@ func (s *SMFController) CDRExport(c *gin.Context) {
func (s *SMFController) SubUserNum(c *gin.Context) { func (s *SMFController) SubUserNum(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
var query struct { var query struct {
NeId string `form:"neId" binding:"required"` CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
} }
if err := c.ShouldBindQuery(&query); err != nil { if err := c.ShouldBindQuery(&query); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
@@ -187,8 +173,8 @@ func (s *SMFController) SubUserNum(c *gin.Context) {
} }
// 查询网元信息 // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("SMF", query.NeId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
if neInfo.NeId != query.NeId || neInfo.IP == "" { if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
@@ -223,7 +209,8 @@ func (s *SMFController) SubUserNum(c *gin.Context) {
func (s *SMFController) SubUserList(c *gin.Context) { func (s *SMFController) SubUserList(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
var query struct { var query struct {
NeId string `form:"neId" binding:"required"` CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
IMSI string `form:"imsi"` IMSI string `form:"imsi"`
MSISDN string `form:"msisdn"` MSISDN string `form:"msisdn"`
Upstate string `form:"upstate"` Upstate string `form:"upstate"`
@@ -236,8 +223,8 @@ func (s *SMFController) SubUserList(c *gin.Context) {
} }
// 查询网元信息 // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("SMF", query.NeId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
if neInfo.NeId != query.NeId || neInfo.IP == "" { if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
@@ -265,7 +252,7 @@ func (s *SMFController) SubUserList(c *gin.Context) {
imsiStr = strings.TrimPrefix(imsiStr, "imsi-") imsiStr = strings.TrimPrefix(imsiStr, "imsi-")
item["imsi"] = imsiStr item["imsi"] = imsiStr
// 查UDM拓展信息 // 查UDM拓展信息
info := s.UDMExtendService.FindByIMSIAndNeID(imsiStr, "%") info := s.UDMExtendService.FindByIMSIAndNeID(query.CoreUID, query.NeUID, imsiStr)
item["remark"] = info.Remark item["remark"] = info.Remark
} }
if v, ok := item["msisdn"]; ok && v != nil { if v, ok := item["msisdn"]; ok && v != nil {

View File

@@ -48,7 +48,6 @@ type SMSCController struct {
// @Description CDR Session List // @Description CDR Session List
// @Router /neData/smsc/cdr/list [get] // @Router /neData/smsc/cdr/list [get]
func (s *SMSCController) CDRList(c *gin.Context) { func (s *SMSCController) CDRList(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
var querys model.CDREventSMSCQuery var querys model.CDREventSMSCQuery
if err := c.ShouldBindQuery(&querys); err != nil { if err := c.ShouldBindQuery(&querys); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
@@ -56,14 +55,6 @@ func (s *SMSCController) CDRList(c *gin.Context) {
return return
} }
// 查询网元信息 rmUID
neInfo := s.neInfoService.FindByNeTypeAndNeID(querys.NeType, querys.NeID)
if neInfo.NeId != querys.NeID || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
querys.RmUID = neInfo.RmUID
// 查询数据 // 查询数据
rows, total := s.cdrEventService.FindByPage(querys) rows, total := s.cdrEventService.FindByPage(querys)
c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total})) c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total}))
@@ -133,13 +124,7 @@ func (s *SMSCController) CDRExport(c *gin.Context) {
if querys.PageSize > 10000 { if querys.PageSize > 10000 {
querys.PageSize = 10000 querys.PageSize = 10000
} }
// 查询网元信息 rmUID
neInfo := s.neInfoService.FindByNeTypeAndNeID(querys.NeType, querys.NeID)
if neInfo.NeId != querys.NeID || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
querys.RmUID = neInfo.RmUID
rows, total := s.cdrEventService.FindByPage(querys) rows, total := s.cdrEventService.FindByPage(querys)
if total == 0 { if total == 0 {
// 导出数据记录为空 // 导出数据记录为空

View File

@@ -37,7 +37,7 @@ type UDMAuthController struct {
// UDM鉴权用户重载数据 // UDM鉴权用户重载数据
// //
// PUT /resetData/:neId // PUT /reset
// //
// @Tags network_data/udm/auth // @Tags network_data/udm/auth
// @Accept json // @Accept json
@@ -47,15 +47,19 @@ type UDMAuthController struct {
// @Security TokenAuth // @Security TokenAuth
// @Summary UDM Authentication User Data Refresh // @Summary UDM Authentication User Data Refresh
// @Description UDM Authenticated User Data List Refresh Synchronization Latest // @Description UDM Authenticated User Data List Refresh Synchronization Latest
// @Router /neData/udm/auth/resetData/{neId} [put] // @Router /neData/udm/auth/reset [put]
func (s *UDMAuthController) ResetData(c *gin.Context) { func (s *UDMAuthController) ResetData(c *gin.Context) {
neId := c.Param("neId") var query struct {
if neId == "" { CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty")) NeUID string `form:"neUid" 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 return
} }
data := s.udmAuthService.ResetData(neId) data := s.udmAuthService.ResetData(query.CoreUID, query.NeUID)
c.JSON(200, resp.OkData(data)) c.JSON(200, resp.OkData(data))
} }
@@ -88,30 +92,35 @@ func (s *UDMAuthController) List(c *gin.Context) {
// @Tags network_data/udm/auth // @Tags network_data/udm/auth
// @Accept json // @Accept json
// @Produce json // @Produce json
// @Param neId path string true "NE ID" default(001) // @Param coreUid query string true "NE ID" default(001)
// @Param value path string true "IMSI" // @Param neUid query string true "NE ID" default(001)
// @Param imsi query string true "IMSI"
// @Success 200 {object} object "Response Results" // @Success 200 {object} object "Response Results"
// @Security TokenAuth // @Security TokenAuth
// @Summary UDM Authentication User Information // @Summary UDM Authentication User Information
// @Description UDM Authentication User Information // @Description UDM Authentication User Information
// @Router /neData/udm/auth/{neId}/{value} [get] // @Router /neData/udm/auth [get]
func (s *UDMAuthController) Info(c *gin.Context) { func (s *UDMAuthController) Info(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Param("neId") var query struct {
imsi := c.Param("imsi") CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
if neId == "" || imsi == "" { NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId/imsi is empty")) IMSI string `form:"imsi" 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 return
} }
// 查询网元获取IP // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
if neInfo.NeId != neId || neInfo.IP == "" { if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID || neInfo.NeType != "UDM" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient("UDM", neId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
@@ -119,7 +128,7 @@ func (s *UDMAuthController) Info(c *gin.Context) {
defer telnetClient.Close() defer telnetClient.Close()
// 发送MML // 发送MML
cmd := fmt.Sprintf("dsp authdat:imsi=%s", imsi) cmd := fmt.Sprintf("dsp authdat:imsi=%s", query.IMSI)
data, err := telnet.ConvertToMap(telnetClient, cmd) data, err := telnet.ConvertToMap(telnetClient, cmd)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
@@ -132,14 +141,14 @@ func (s *UDMAuthController) Info(c *gin.Context) {
} }
// 解析返回的数据 // 解析返回的数据
u := s.udmAuthService.ParseInfo(imsi, neId, data) u := s.udmAuthService.ParseInfo(neInfo.CoreUID, neInfo.NeUID, query.IMSI, data)
s.udmAuthService.Insert(neId, u) s.udmAuthService.Insert(neInfo.CoreUID, neInfo.NeUID, u)
c.JSON(200, resp.OkData(u)) c.JSON(200, resp.OkData(u))
} }
// UDM鉴权用户新增 // UDM鉴权用户新增
// //
// POST /:neId // POST /
// //
// @Tags network_data/udm/auth // @Tags network_data/udm/auth
// @Accept json // @Accept json
@@ -150,12 +159,13 @@ func (s *UDMAuthController) Info(c *gin.Context) {
// @Security TokenAuth // @Security TokenAuth
// @Summary UDM Authentication User Added // @Summary UDM Authentication User Added
// @Description UDM Authentication User Added // @Description UDM Authentication User Added
// @Router /neData/udm/auth/{neId} [post] // @Router /neData/udm/auth [post]
func (s *UDMAuthController) Add(c *gin.Context) { func (s *UDMAuthController) Add(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Param("neId") // 传入数量大于0时为批量新增
if neId == "" { num := parse.Number(c.Query("num"))
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty")) if num < 0 {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: num is empty"))
return return
} }
@@ -171,19 +181,38 @@ func (s *UDMAuthController) Add(c *gin.Context) {
} }
// 查询网元获取IP // 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(body.CoreUID, body.NeUID)
if neInfo.NeId != neId || neInfo.IP == "" { if neInfo.CoreUID != body.CoreUID || neInfo.NeUID != body.NeUID || neInfo.NeType != "UDM" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient("UDM", neId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
} }
defer telnetClient.Close() defer telnetClient.Close()
// 批量新增
if num > 1 {
// 发送MML
cmd := fmt.Sprintf("baa authdat:start_imsi=%s,sub_num=%d,", body.IMSI, num)
cmd += s.udmAuthService.ParseCommandParams(body)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmAuthService.LoadData(neInfo.CoreUID, neInfo.NeUID, body.IMSI, num)
}
c.JSON(200, resp.OkData(data))
return
}
// 发送MML // 发送MML
cmd := fmt.Sprintf("add authdat:imsi=%s,", body.IMSI) cmd := fmt.Sprintf("add authdat:imsi=%s,", body.IMSI)
cmd += s.udmAuthService.ParseCommandParams(body) cmd += s.udmAuthService.ParseCommandParams(body)
@@ -195,79 +224,14 @@ func (s *UDMAuthController) Add(c *gin.Context) {
// 命令ok时 // 命令ok时
if strings.Contains(data, "ok") { if strings.Contains(data, "ok") {
s.udmAuthService.Insert(neId, body) s.udmAuthService.Insert(neInfo.CoreUID, neInfo.NeUID, body)
}
c.JSON(200, resp.OkData(data))
}
// UDM鉴权用户批量新增
//
// POST /:neId/:num
//
// @Tags network_data/udm/auth
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param value path number true "Number of releases, value includes start imsi"
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authentication User Batch Add
// @Description UDM Authentication User Batch Add
// @Router /neData/udm/auth/{neId}/{value} [post]
func (s *UDMAuthController) Adds(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
neId := c.Param("neId")
num := c.Param("num")
if neId == "" || num == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId/num is empty"))
return
}
var body model.UDMAuthUser
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
return
}
if body.IMSI == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: imsi is empty"))
return
}
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId)
if neInfo.NeId != neId || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
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
cmd := fmt.Sprintf("baa authdat:start_imsi=%s,sub_num=%s,", body.IMSI, num)
cmd += s.udmAuthService.ParseCommandParams(body)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmAuthService.LoadData(neId, body.IMSI, num)
} }
c.JSON(200, resp.OkData(data)) c.JSON(200, resp.OkData(data))
} }
// UDM鉴权用户修改 // UDM鉴权用户修改
// //
// PUT /:neId // PUT /
// //
// @Tags network_data/udm/auth // @Tags network_data/udm/auth
// @Accept json // @Accept json
@@ -278,15 +242,9 @@ func (s *UDMAuthController) Adds(c *gin.Context) {
// @Security TokenAuth // @Security TokenAuth
// @Summary UDM Authenticated User Modification // @Summary UDM Authenticated User Modification
// @Description UDM Authenticated User Modification // @Description UDM Authenticated User Modification
// @Router /neData/udm/auth/{neId} [put] // @Router /neData/udm/auth [put]
func (s *UDMAuthController) Edit(c *gin.Context) { func (s *UDMAuthController) Edit(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Param("neId")
if neId == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty"))
return
}
var body model.UDMAuthUser var body model.UDMAuthUser
if err := c.ShouldBindBodyWithJSON(&body); err != nil { if err := c.ShouldBindBodyWithJSON(&body); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
@@ -299,13 +257,13 @@ func (s *UDMAuthController) Edit(c *gin.Context) {
} }
// 查询网元获取IP // 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(body.CoreUID, body.NeUID)
if neInfo.NeId != neId || neInfo.IP == "" { if neInfo.CoreUID != body.CoreUID || neInfo.NeUID != body.NeUID || neInfo.NeType != "UDM" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient("UDM", neId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
@@ -323,7 +281,7 @@ func (s *UDMAuthController) Edit(c *gin.Context) {
// 命令ok时 // 命令ok时
if strings.Contains(data, "ok") { if strings.Contains(data, "ok") {
s.udmAuthService.Insert(neId, body) s.udmAuthService.Insert(neInfo.CoreUID, neInfo.NeUID, body)
} }
c.JSON(200, resp.OkData(data)) c.JSON(200, resp.OkData(data))
} }
@@ -344,35 +302,56 @@ func (s *UDMAuthController) Edit(c *gin.Context) {
// @Router /neData/udm/auth/{neId}/{value} [delete] // @Router /neData/udm/auth/{neId}/{value} [delete]
func (s *UDMAuthController) Remove(c *gin.Context) { func (s *UDMAuthController) Remove(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Param("neId") var query struct {
imsi := c.Param("imsi") CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
if neId == "" || imsi == "" { NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId/imsi is empty")) IMSI string `form:"imsi" binding:"required"` // IMSi
Num int64 `form:"num"` // 批量数量
}
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 return
} }
// 处理字符转id数组后去重 // 查询网元信息
imsiArr := strings.Split(imsi, ",") neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
uniqueIDs := parse.RemoveDuplicates(imsiArr) if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID || neInfo.NeType != "UDM" {
if len(uniqueIDs) <= 0 {
c.JSON(200, resp.Err(nil))
return
}
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId)
if neInfo.NeId != neId || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient("UDM", neId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
} }
defer telnetClient.Close() defer telnetClient.Close()
if query.Num > 0 {
// 发送MML
cmd := fmt.Sprintf("bde authdat:start_imsi=%s,sub_num=%d", query.IMSI, query.Num)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmAuthService.LoadData(neInfo.CoreUID, neInfo.NeUID, query.IMSI, query.Num)
}
c.JSON(200, resp.OkData(data))
return
}
// 处理字符转id数组后去重
imsiArr := strings.Split(query.IMSI, ",")
uniqueIDs := parse.RemoveDuplicates(imsiArr)
if len(uniqueIDs) <= 0 {
c.JSON(200, resp.Err(nil))
return
}
resultData := map[string]string{} resultData := map[string]string{}
for _, imsi := range uniqueIDs { for _, imsi := range uniqueIDs {
// 发送MML // 发送MML
@@ -384,7 +363,7 @@ func (s *UDMAuthController) Remove(c *gin.Context) {
} }
// 命令ok时 // 命令ok时
if strings.Contains(data, "ok") { if strings.Contains(data, "ok") {
s.udmAuthService.Delete(imsi, neId) s.udmAuthService.Delete(neInfo.CoreUID, neInfo.NeUID, imsi)
} }
resultData[imsi] = data resultData[imsi] = data
} }
@@ -392,60 +371,6 @@ func (s *UDMAuthController) Remove(c *gin.Context) {
c.JSON(200, resp.OkData(resultData)) c.JSON(200, resp.OkData(resultData))
} }
// UDM鉴权用户批量删除
//
// DELETE /:neId/:imsi/:num
//
// @Tags network_data/udm/auth
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param imsi path string true "IMSI"
// @Param num path number true "Number of releases, value includes start imsi"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Authentication User Batch Deletion
// @Description UDM Authentication User Batch Deletion
// @Router /neData/udm/auth/{neId}/{imsi}/{num} [delete]
func (s *UDMAuthController) Removes(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
neId := c.Param("neId")
imsi := c.Param("imsi")
num := c.Param("num")
if neId == "" || imsi == "" || num == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId/imsi/num is empty"))
return
}
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId)
if neInfo.NeId != neId || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
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
cmd := fmt.Sprintf("bde authdat:start_imsi=%s,sub_num=%s", imsi, num)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmAuthService.LoadData(neId, imsi, num)
}
c.JSON(200, resp.OkData(data))
}
// UDM鉴权用户导出 // UDM鉴权用户导出
// //
// GET /export // GET /export
@@ -465,13 +390,12 @@ func (s *UDMAuthController) Removes(c *gin.Context) {
// @Router /neData/udm/auth/export [get] // @Router /neData/udm/auth/export [get]
func (s *UDMAuthController) Export(c *gin.Context) { func (s *UDMAuthController) Export(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
// 查询结果,根据查询条件结果,单页最大值限制 neUid := c.Query("neUid")
neId := c.Query("neId") if c.Query("coreUid") == "" || neUid == "" {
fileType := c.Query("type") c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: coreUid or neUid is empty"))
if neId == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty"))
return return
} }
fileType := c.Query("type")
if !(fileType == "csv" || fileType == "txt") { if !(fileType == "csv" || fileType == "txt") {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "ne.udm.errImportUserSubFileFormat"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "ne.udm.errImportUserSubFileFormat")))
return return
@@ -484,8 +408,6 @@ func (s *UDMAuthController) Export(c *gin.Context) {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.exportEmpty"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
return return
} }
// rows := s.udmAuthService.SelectList(model.UDMAuthUser{NeId: neId})
if len(rows) <= 0 { if len(rows) <= 0 {
// 导出数据记录为空 // 导出数据记录为空
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.exportEmpty"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
@@ -493,7 +415,7 @@ func (s *UDMAuthController) Export(c *gin.Context) {
} }
// 文件名 // 文件名
fileName := fmt.Sprintf("udm_auth_user_export_%s_%d.%s", neId, time.Now().UnixMilli(), fileType) fileName := fmt.Sprintf("udm_auth_user_export_%s_%d.%s", neUid, time.Now().UnixMilli(), fileType)
filePath := filepath.Join(file.ParseUploadFileDir(constants.UPLOAD_EXPORT), fileName) filePath := filepath.Join(file.ParseUploadFileDir(constants.UPLOAD_EXPORT), fileName)
if fileType == "csv" { if fileType == "csv" {
@@ -550,7 +472,8 @@ func (s *UDMAuthController) Export(c *gin.Context) {
func (s *UDMAuthController) Import(c *gin.Context) { func (s *UDMAuthController) Import(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
var body struct { var body struct {
NeId string `json:"neId" binding:"required"` // 网元ID CoreUID string `json:"coreUid" binding:"required"` // 核心网唯一标识
NeUID string `json:"neUid" binding:"required"` // 网元唯一标识
UploadPath string `json:"uploadPath" binding:"required"` // 上传文件路径 UploadPath string `json:"uploadPath" binding:"required"` // 上传文件路径
TypeVal string `json:"typeVal" binding:"required,oneof=default k4"` // default: 默认导入方式, k4: k4类型导入方式 TypeVal string `json:"typeVal" binding:"required,oneof=default k4"` // default: 默认导入方式, k4: k4类型导入方式
TypeData any `json:"typeData"` // k4类型的数据密钥 TypeData any `json:"typeData"` // k4类型的数据密钥
@@ -567,15 +490,14 @@ func (s *UDMAuthController) Import(c *gin.Context) {
return return
} }
// 查询网元获取IP // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", body.NeId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(body.CoreUID, body.NeUID)
if neInfo.NeId != body.NeId || neInfo.IP == "" { if neInfo.CoreUID != body.CoreUID || neInfo.NeUID != body.NeUID || neInfo.NeType != "UDM" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的SSH客户端 // 网元主机的SSH客户端
sshClient, err := s.neInfoService.NeRunSSHClient(neInfo.NeType, neInfo.NeId) sshClient, err := s.neInfoService.NeRunSSHClient(neInfo.CoreUID, neInfo.NeUID)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
@@ -599,7 +521,7 @@ func (s *UDMAuthController) Import(c *gin.Context) {
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.NeType, neInfo.NeId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
@@ -618,7 +540,7 @@ func (s *UDMAuthController) Import(c *gin.Context) {
// K4类型发特定请求 // K4类型发特定请求
if body.TypeVal == "k4" { if body.TypeVal == "k4" {
resultMsg, resultErr = neFetchlink.UDMImportAuth(neInfo.IP, map[string]any{ resultMsg, resultErr = neFetchlink.UDMImportAuth(neInfo.IPAddr, map[string]any{
"path": neFilePath, "k4": body.TypeData, "path": neFilePath, "k4": body.TypeData,
}) })
} }
@@ -632,11 +554,11 @@ func (s *UDMAuthController) Import(c *gin.Context) {
if strings.Contains(resultMsg, "ok") { if strings.Contains(resultMsg, "ok") {
if strings.HasSuffix(body.UploadPath, ".csv") { if strings.HasSuffix(body.UploadPath, ".csv") {
data := file.ReadFileCSV(localFilePath) data := file.ReadFileCSV(localFilePath)
go s.udmAuthService.InsertData(neInfo.NeId, "csv", data) go s.udmAuthService.InsertData(neInfo.CoreUID, neInfo.NeUID, "csv", data)
} }
if strings.HasSuffix(body.UploadPath, ".txt") { if strings.HasSuffix(body.UploadPath, ".txt") {
data := file.ReadFileTXTLine(",", localFilePath) data := file.ReadFileTXTLine(",", localFilePath)
go s.udmAuthService.InsertData(neInfo.NeId, "txt", data) go s.udmAuthService.InsertData(neInfo.CoreUID, neInfo.NeUID, "txt", data)
} }
} }
c.JSON(200, resp.OkMsg(resultMsg)) c.JSON(200, resp.OkMsg(resultMsg))

View File

@@ -36,7 +36,7 @@ type UDMSubController struct {
// UDM签约用户重载数据 // UDM签约用户重载数据
// //
// PUT /resetData/:neId // PUT /reset
// //
// @Tags network_data/udm/sub // @Tags network_data/udm/sub
// @Accept json // @Accept json
@@ -46,15 +46,19 @@ type UDMSubController struct {
// @Security TokenAuth // @Security TokenAuth
// @Summary UDM Subscriber User Reload Data // @Summary UDM Subscriber User Reload Data
// @Description UDM Subscriber User Reload Data // @Description UDM Subscriber User Reload Data
// @Router /neData/udm/sub/resetData/{neId} [put] // @Router /neData/udm/sub/reset [put]
func (s *UDMSubController) ResetData(c *gin.Context) { func (s *UDMSubController) ResetData(c *gin.Context) {
neId := c.Param("neId") var query struct {
if neId == "" { CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty")) NeUID string `form:"neUid" 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 return
} }
data := s.udmSubService.ResetData(neId) data := s.udmSubService.ResetData(query.CoreUID, query.NeUID)
c.JSON(200, resp.OkData(data)) c.JSON(200, resp.OkData(data))
} }
@@ -83,7 +87,7 @@ func (s *UDMSubController) List(c *gin.Context) {
// UDM签约用户信息 // UDM签约用户信息
// //
// GET /:neId/:imsi // GET /
// //
// @Tags network_data/udm/sub // @Tags network_data/udm/sub
// @Accept json // @Accept json
@@ -94,24 +98,28 @@ func (s *UDMSubController) List(c *gin.Context) {
// @Security TokenAuth // @Security TokenAuth
// @Summary UDM Subscriber User Information // @Summary UDM Subscriber User Information
// @Description UDM Subscriber User Information // @Description UDM Subscriber User Information
// @Router /neData/udm/sub/{neId}/{value} [get] // @Router /neData/udm/sub [get]
func (s *UDMSubController) Info(c *gin.Context) { func (s *UDMSubController) Info(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Param("neId") var query struct {
imsi := c.Param("imsi") CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
if neId == "" || imsi == "" { NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId or imsi is empty")) IMSI string `form:"imsi" 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 return
} }
// 查询网元获取IP // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
if neInfo.NeId != neId || neInfo.IP == "" { if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID || neInfo.NeType != "UDM" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient("UDM", neId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
@@ -119,7 +127,7 @@ func (s *UDMSubController) Info(c *gin.Context) {
defer telnetClient.Close() defer telnetClient.Close()
// 发送MML // 发送MML
cmd := fmt.Sprintf("dsp udmuser:imsi=%s", imsi) cmd := fmt.Sprintf("dsp udmuser:imsi=%s", query.IMSI)
data, err := telnet.ConvertToMap(telnetClient, cmd) data, err := telnet.ConvertToMap(telnetClient, cmd)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
@@ -132,14 +140,14 @@ func (s *UDMSubController) Info(c *gin.Context) {
} }
// 解析返回的数据 // 解析返回的数据
u := s.udmSubService.ParseInfo(imsi, neId, data) u := s.udmSubService.ParseInfo(neInfo.CoreUID, neInfo.NeUID, query.IMSI, data)
s.udmSubService.Insert(neId, u) s.udmSubService.Insert(neInfo.CoreUID, neInfo.NeUID, u)
c.JSON(200, resp.OkData(u)) c.JSON(200, resp.OkData(u))
} }
// UDM签约用户新增 // UDM签约用户新增
// //
// POST /:neId // POST /
// //
// @Tags network_data/udm/sub // @Tags network_data/udm/sub
// @Accept json // @Accept json
@@ -150,12 +158,13 @@ func (s *UDMSubController) Info(c *gin.Context) {
// @Security TokenAuth // @Security TokenAuth
// @Summary UDM Subscriber User Added // @Summary UDM Subscriber User Added
// @Description UDM Subscriber User Added // @Description UDM Subscriber User Added
// @Router /neData/udm/sub/{neId} [post] // @Router /neData/udm/sub [post]
func (s *UDMSubController) Add(c *gin.Context) { func (s *UDMSubController) Add(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Param("neId") // 传入数量大于0时为批量新增
if neId == "" { num := parse.Number(c.Query("num"))
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty")) if num < 0 {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: num is empty"))
return return
} }
@@ -171,19 +180,41 @@ func (s *UDMSubController) Add(c *gin.Context) {
} }
// 查询网元获取IP // 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(body.CoreUID, body.NeUID)
if neInfo.NeId != neId || neInfo.IP == "" { if neInfo.CoreUID != body.CoreUID || neInfo.NeUID != body.NeUID || neInfo.NeType != "UDM" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient("UDM", neId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
} }
defer telnetClient.Close() defer telnetClient.Close()
// 批量新增
if num > 1 {
// 发送MML
cmd := fmt.Sprintf("baa udmuser:start_imsi=%s,start_msisdn=%s,sub_num=%d,", body.IMSI, body.MSISDN, num)
cmd += s.udmSubService.ParseCommandParams(body)
// 去除msisdn参数避免重复
omemsisdn := fmt.Sprintf(",msisdn=%s,", body.MSISDN)
cmd = strings.Replace(cmd, omemsisdn, ",", 1)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmSubService.LoadData(neInfo.CoreUID, neInfo.NeUID, body.IMSI, num, body.Remark)
}
c.JSON(200, resp.OkData(data))
return
}
// 发送MML // 发送MML
cmd := fmt.Sprintf("add udmuser:imsi=%s,", body.IMSI) cmd := fmt.Sprintf("add udmuser:imsi=%s,", body.IMSI)
cmd += s.udmSubService.ParseCommandParams(body) cmd += s.udmSubService.ParseCommandParams(body)
@@ -195,83 +226,14 @@ func (s *UDMSubController) Add(c *gin.Context) {
// 命令ok时 // 命令ok时
if strings.Contains(data, "ok") { if strings.Contains(data, "ok") {
body.NeId = neId s.udmSubService.Insert(neInfo.CoreUID, neInfo.NeUID, body)
s.udmSubService.Insert(neId, body)
}
c.JSON(200, resp.OkData(data))
}
// UDM签约用户批量新增
//
// POST /:neId/:num
//
// @Tags network_data/udm/sub
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param value path number true "Number of releases, value includes start imsi" default(1)
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Subscriber User Batch Add
// @Description UDM Subscriber User Batch Add
// @Router /neData/udm/sub/{neId}/{value} [post]
func (s *UDMSubController) Adds(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
neId := c.Param("neId")
num := c.Param("num")
if neId == "" || num == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId/num is empty"))
return
}
var body model.UDMSubUser
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
return
}
if len(body.IMSI) != 15 {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: IMSI length is not 15 bits"))
return
}
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId)
if neInfo.NeId != neId || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
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
cmd := fmt.Sprintf("baa udmuser:start_imsi=%s,start_msisdn=%s,sub_num=%s,", body.IMSI, body.MSISDN, num)
cmd += s.udmSubService.ParseCommandParams(body)
// 去除msisdn参数避免重复
omemsisdn := fmt.Sprintf(",msisdn=%s,", body.MSISDN)
cmd = strings.Replace(cmd, omemsisdn, ",", 1)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmSubService.LoadData(neId, body.IMSI, num, body.Remark)
} }
c.JSON(200, resp.OkData(data)) c.JSON(200, resp.OkData(data))
} }
// UDM签约用户修改 // UDM签约用户修改
// //
// PUT /:neId // PUT /
// //
// @Tags network_data/udm/sub // @Tags network_data/udm/sub
// @Accept json // @Accept json
@@ -282,7 +244,7 @@ func (s *UDMSubController) Adds(c *gin.Context) {
// @Security TokenAuth // @Security TokenAuth
// @Summary UDM Subscriber User Modification // @Summary UDM Subscriber User Modification
// @Description UDM Subscriber User Modification // @Description UDM Subscriber User Modification
// @Router /neData/udm/sub/{neId} [put] // @Router /neData/udm/sub [put]
func (s *UDMSubController) Edit(c *gin.Context) { func (s *UDMSubController) Edit(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Param("neId") neId := c.Param("neId")
@@ -303,13 +265,13 @@ func (s *UDMSubController) Edit(c *gin.Context) {
} }
// 查询网元获取IP // 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(body.CoreUID, body.NeUID)
if neInfo.NeId != neId || neInfo.IP == "" { if neInfo.CoreUID != body.CoreUID || neInfo.NeUID != body.NeUID || neInfo.NeType != "UDM" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient("UDM", neId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
@@ -327,15 +289,14 @@ func (s *UDMSubController) Edit(c *gin.Context) {
// 命令ok时 // 命令ok时
if strings.Contains(data, "ok") { if strings.Contains(data, "ok") {
body.NeId = neId s.udmSubService.Insert(neInfo.CoreUID, neInfo.NeUID, body)
s.udmSubService.Insert(neId, body)
} }
c.JSON(200, resp.OkData(data)) c.JSON(200, resp.OkData(data))
} }
// UDM签约用户删除 // UDM签约用户删除
// //
// DELETE /:neId/:imsi // DELETE /
// //
// @Tags network_data/udm/sub // @Tags network_data/udm/sub
// @Accept json // @Accept json
@@ -346,38 +307,58 @@ func (s *UDMSubController) Edit(c *gin.Context) {
// @Security TokenAuth // @Security TokenAuth
// @Summary UDM Subscriber User Deletion // @Summary UDM Subscriber User Deletion
// @Description UDM Subscriber User Deletion // @Description UDM Subscriber User Deletion
// @Router /neData/udm/sub/{neId}/{value} [delete] // @Router /neData/udm/sub [delete]
func (s *UDMSubController) Remove(c *gin.Context) { func (s *UDMSubController) Remove(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Param("neId") var query struct {
imsi := c.Param("imsi") CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
if neId == "" || len(imsi) < 15 { NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId/imsi is empty")) IMSI string `form:"imsi" binding:"required"` // IMSi
Num int64 `form:"num"` // 批量数量
}
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 return
} }
// 处理字符转id数组后去重 // 查询网元信息
imsiArr := strings.Split(imsi, ",") neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
uniqueIDs := parse.RemoveDuplicates(imsiArr) if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID || neInfo.NeType != "UDM" {
if len(uniqueIDs) <= 0 {
c.JSON(200, resp.Err(nil))
return
}
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId)
if neInfo.NeId != neId || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient("UDM", neId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
} }
defer telnetClient.Close() defer telnetClient.Close()
if query.Num > 0 {
// 发送MML
cmd := fmt.Sprintf("bde udmuser:start_imsi=%s,sub_num=%d", query.IMSI, query.Num)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmSubService.LoadData(neInfo.CoreUID, neInfo.NeUID, query.IMSI, query.Num, "-(Deleted)-")
}
c.JSON(200, resp.OkData(data))
}
// 处理字符转id数组后去重
imsiArr := strings.Split(query.IMSI, ",")
uniqueIDs := parse.RemoveDuplicates(imsiArr)
if len(uniqueIDs) <= 0 {
c.JSON(200, resp.Err(nil))
return
}
resultData := map[string]string{} resultData := map[string]string{}
for _, imsi := range uniqueIDs { for _, imsi := range uniqueIDs {
// 发送MML // 发送MML
@@ -389,7 +370,7 @@ func (s *UDMSubController) Remove(c *gin.Context) {
} }
// 命令ok时 // 命令ok时
if strings.Contains(data, "ok") { if strings.Contains(data, "ok") {
s.udmSubService.Delete(neId, imsi) s.udmSubService.Delete(neInfo.CoreUID, neInfo.NeUID, imsi)
} }
resultData[imsi] = data resultData[imsi] = data
} }
@@ -397,60 +378,6 @@ func (s *UDMSubController) Remove(c *gin.Context) {
c.JSON(200, resp.OkData(resultData)) c.JSON(200, resp.OkData(resultData))
} }
// UDM签约用户批量删除
//
// DELETE /:neId/:imsi/:num
//
// @Tags network_data/udm/sub
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param imsi path string true "IMSI"
// @Param num path number true "Number of releases, value includes start imsi"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM Subscriber User Batch Deletion
// @Description UDM Subscriber User Batch Deletion
// @Router /neData/udm/sub/{neId}/{imsi}/{num} [delete]
func (s *UDMSubController) Removes(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
neId := c.Param("neId")
imsi := c.Param("imsi")
num := c.Param("num")
if neId == "" || len(imsi) < 15 || num == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId/imsi/num is empty"))
return
}
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId)
if neInfo.NeId != neId || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
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
cmd := fmt.Sprintf("bde udmuser:start_imsi=%s,sub_num=%s", imsi, num)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmSubService.LoadData(neId, imsi, num, "-(Deleted)-")
}
c.JSON(200, resp.OkData(data))
}
// UDM签约用户导出 // UDM签约用户导出
// //
// GET /export // GET /export
@@ -471,13 +398,12 @@ func (s *UDMSubController) Removes(c *gin.Context) {
// @Router /neData/udm/sub/export [post] // @Router /neData/udm/sub/export [post]
func (s *UDMSubController) Export(c *gin.Context) { func (s *UDMSubController) Export(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
// 查询结果,根据查询条件结果,单页最大值限制 neUid := c.Query("neUid")
neId := c.Query("neId") if c.Query("coreUid") == "" || neUid == "" {
fileType := c.Query("type") c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: coreUid or neUid is empty"))
if neId == "" || fileType == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId or type is empty"))
return return
} }
fileType := c.Query("type")
if !(fileType == "csv" || fileType == "txt") { if !(fileType == "csv" || fileType == "txt") {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "ne.udm.errImportUserSubFileFormat"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "ne.udm.errImportUserSubFileFormat")))
return return
@@ -490,8 +416,6 @@ func (s *UDMSubController) Export(c *gin.Context) {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.exportEmpty"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
return return
} }
// rows := s.udmSubService.SelectList(model.UDMSubUser{NeId: neId})
if len(rows) <= 0 { if len(rows) <= 0 {
// 导出数据记录为空 // 导出数据记录为空
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.exportEmpty"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.exportEmpty")))
@@ -499,7 +423,7 @@ func (s *UDMSubController) Export(c *gin.Context) {
} }
// 文件名 // 文件名
fileName := fmt.Sprintf("udm_sub_user_export_%s_%d.%s", neId, time.Now().UnixMilli(), fileType) fileName := fmt.Sprintf("udm_sub_user_export_%s_%d.%s", neUid, time.Now().UnixMilli(), fileType)
filePath := filepath.Join(file.ParseUploadFileDir(constants.UPLOAD_EXPORT), fileName) filePath := filepath.Join(file.ParseUploadFileDir(constants.UPLOAD_EXPORT), fileName)
if fileType == "csv" { if fileType == "csv" {
@@ -550,7 +474,8 @@ func (s *UDMSubController) Export(c *gin.Context) {
func (s *UDMSubController) Import(c *gin.Context) { func (s *UDMSubController) Import(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
var body struct { var body struct {
NeId string `json:"neId" binding:"required"` CoreUID string `json:"coreUid" binding:"required"` // 核心网唯一标识
NeUID string `json:"neUid" binding:"required"` // 网元唯一标识
UploadPath string `json:"uploadPath" binding:"required"` UploadPath string `json:"uploadPath" binding:"required"`
} }
if err := c.ShouldBindBodyWithJSON(&body); err != nil { if err := c.ShouldBindBodyWithJSON(&body); err != nil {
@@ -565,15 +490,14 @@ func (s *UDMSubController) Import(c *gin.Context) {
return return
} }
// 查询网元获取IP // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", body.NeId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(body.CoreUID, body.NeUID)
if neInfo.NeId != body.NeId || neInfo.IP == "" { if neInfo.CoreUID != body.CoreUID || neInfo.NeUID != body.NeUID || neInfo.NeType != "UDM" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的SSH客户端 // 网元主机的SSH客户端
sshClient, err := s.neInfoService.NeRunSSHClient(neInfo.NeType, neInfo.NeId) sshClient, err := s.neInfoService.NeRunSSHClient(neInfo.CoreUID, neInfo.NeUID)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
@@ -597,7 +521,7 @@ func (s *UDMSubController) Import(c *gin.Context) {
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.NeType, neInfo.NeId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
@@ -616,11 +540,11 @@ func (s *UDMSubController) Import(c *gin.Context) {
if strings.Contains(data, "ok") { if strings.Contains(data, "ok") {
if strings.HasSuffix(body.UploadPath, ".csv") { if strings.HasSuffix(body.UploadPath, ".csv") {
data := file.ReadFileCSV(localFilePath) data := file.ReadFileCSV(localFilePath)
go s.udmSubService.InsertData(neInfo.NeId, "csv", data) go s.udmSubService.InsertData(neInfo.CoreUID, neInfo.NeUID, "csv", data)
} }
if strings.HasSuffix(body.UploadPath, ".txt") { if strings.HasSuffix(body.UploadPath, ".txt") {
data := file.ReadFileTXTLine(",", localFilePath) data := file.ReadFileTXTLine(",", localFilePath)
go s.udmSubService.InsertData(neInfo.NeId, "txt", data) go s.udmSubService.InsertData(neInfo.CoreUID, neInfo.NeUID, "txt", data)
} }
} }
c.JSON(200, resp.OkMsg(data)) c.JSON(200, resp.OkMsg(data))

View File

@@ -36,25 +36,30 @@ type UDMVOIPController struct {
// UDMVOIP用户重载数据 // UDMVOIP用户重载数据
// //
// PUT /resetData/:neId // PUT /reset
// //
// @Tags network_data/udm/voip // @Tags network_data/udm/voip
// @Accept json // @Accept json
// @Produce json // @Produce json
// @Param neId path string true "NE ID" default(001) // @Param coreUid query string true "CoreUID" default(001)
// @Param neUid query string true "NeUID" default(001)
// @Success 200 {object} object "Response Results" // @Success 200 {object} object "Response Results"
// @Security TokenAuth // @Security TokenAuth
// @Summary UDM VOIP User Data Refresh // @Summary UDM VOIP User Data Refresh
// @Description UDM VOIP User Data List Refresh Synchronization Latest // @Description UDM VOIP User Data List Refresh Synchronization Latest
// @Router /neData/udm/voip/resetData/{neId} [put] // @Router /neData/udm/voip/reset [put]
func (s *UDMVOIPController) ResetData(c *gin.Context) { func (s *UDMVOIPController) ResetData(c *gin.Context) {
neId := c.Param("neId") var query struct {
if neId == "" { CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty")) NeUID string `form:"neUid" 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 return
} }
data := s.udmVOIPService.ResetData(neId) data := s.udmVOIPService.ResetData(query.CoreUID, query.NeUID)
c.JSON(200, resp.OkData(data)) c.JSON(200, resp.OkData(data))
} }
@@ -65,7 +70,8 @@ func (s *UDMVOIPController) ResetData(c *gin.Context) {
// @Tags network_data/udm/voip // @Tags network_data/udm/voip
// @Accept json // @Accept json
// @Produce json // @Produce json
// @Param neId query string true "NE ID" default(001) // @Param coreUid query string true "CoreUID" default(001)
// @Param neUid query string true "NeUID" default(001)
// @Param username query string false "User Name" // @Param username query string false "User Name"
// @Param pageNum query number true "pageNum" default(1) // @Param pageNum query number true "pageNum" default(1)
// @Param pageSize query number true "pageSize" default(10) // @Param pageSize query number true "pageSize" default(10)
@@ -82,7 +88,7 @@ func (s *UDMVOIPController) List(c *gin.Context) {
// UDMVOIP用户信息 // UDMVOIP用户信息
// //
// GET /:neId/:username // GET /
// //
// @Tags network_data/udm/voip // @Tags network_data/udm/voip
// @Accept json // @Accept json
@@ -93,24 +99,28 @@ func (s *UDMVOIPController) List(c *gin.Context) {
// @Security TokenAuth // @Security TokenAuth
// @Summary UDM VOIP User Information // @Summary UDM VOIP User Information
// @Description UDM VOIP User Information // @Description UDM VOIP User Information
// @Router /neData/udm/voip/{neId}/{value} [get] // @Router /neData/udm/voip [get]
func (s *UDMVOIPController) Info(c *gin.Context) { func (s *UDMVOIPController) Info(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Param("neId") var query struct {
username := c.Param("username") CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
if neId == "" || username == "" { NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId or username is empty")) UserName string `form:"username" 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 return
} }
// 查询网元获取IP // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
if neInfo.NeId != neId || neInfo.IP == "" { if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID || neInfo.NeType != "UDM" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient("UDM", neId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
@@ -118,7 +128,7 @@ func (s *UDMVOIPController) Info(c *gin.Context) {
defer telnetClient.Close() defer telnetClient.Close()
// 发送MML // 发送MML
cmd := fmt.Sprintf("dsp voip:username=%s", username) cmd := fmt.Sprintf("dsp voip:username=%s", query.UserName)
data, err := telnet.ConvertToMap(telnetClient, cmd) data, err := telnet.ConvertToMap(telnetClient, cmd)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
@@ -131,9 +141,9 @@ func (s *UDMVOIPController) Info(c *gin.Context) {
} }
// 解析返回的数据 // 解析返回的数据
u := s.udmVOIPService.ParseInfo(neId, data) u := s.udmVOIPService.ParseInfo(neInfo.CoreUID, neInfo.NeUID, data)
if u.ID != "" { if u.ID != "" {
s.udmVOIPService.Insert(neId, u.UserName) s.udmVOIPService.Insert(neInfo.CoreUID, neInfo.NeUID, u.UserName)
c.JSON(200, resp.OkData(u)) c.JSON(200, resp.OkData(u))
return return
} }
@@ -142,7 +152,7 @@ func (s *UDMVOIPController) Info(c *gin.Context) {
// UDMVOIP用户新增 // UDMVOIP用户新增
// //
// POST /:neId // POST /
// //
// @Tags network_data/udm/voip // @Tags network_data/udm/voip
// @Accept json // @Accept json
@@ -153,12 +163,13 @@ func (s *UDMVOIPController) Info(c *gin.Context) {
// @Security TokenAuth // @Security TokenAuth
// @Summary UDM VOIP User Added // @Summary UDM VOIP User Added
// @Description UDM VOIP User Added // @Description UDM VOIP User Added
// @Router /neData/udm/voip/{neId} [post] // @Router /neData/udm/voip [post]
func (s *UDMVOIPController) Add(c *gin.Context) { func (s *UDMVOIPController) Add(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Param("neId") // 传入数量大于0时为批量新增
if neId == "" { num := parse.Number(c.Query("num"))
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty")) if num < 1 {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: num is empty"))
return return
} }
@@ -173,20 +184,38 @@ func (s *UDMVOIPController) Add(c *gin.Context) {
return return
} }
// 查询网元获取IP // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(body.CoreUID, body.NeUID)
if neInfo.NeId != neId || neInfo.IP == "" { if neInfo.CoreUID != body.CoreUID || neInfo.NeUID != body.NeUID || neInfo.NeType != "UDM" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient("UDM", neId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
} }
defer telnetClient.Close() defer telnetClient.Close()
// 批量新增
if num > 1 {
// 发送MML
cmd := fmt.Sprintf("baa voip:sub_num=%d,start_username=%s,password=%s", num, body.UserName, body.Password)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmVOIPService.LoadData(neInfo.CoreUID, neInfo.NeUID, body.UserName, num)
}
c.JSON(200, resp.OkData(data))
return
}
// 发送MML // 发送MML
cmd := fmt.Sprintf("add voip:username=%s,password=%s", body.UserName, body.Password) cmd := fmt.Sprintf("add voip:username=%s,password=%s", body.UserName, body.Password)
data, err := telnet.ConvertToStr(telnetClient, cmd) data, err := telnet.ConvertToStr(telnetClient, cmd)
@@ -197,78 +226,14 @@ func (s *UDMVOIPController) Add(c *gin.Context) {
// 命令ok时 // 命令ok时
if strings.Contains(data, "ok") { if strings.Contains(data, "ok") {
s.udmVOIPService.Insert(neId, body.UserName) s.udmVOIPService.Insert(neInfo.CoreUID, neInfo.NeUID, body.UserName)
}
c.JSON(200, resp.OkData(data))
}
// UDMVOIP用户批量新增
//
// POST /:neId/:num
//
// @Tags network_data/udm/voip
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param value path number true "Number of releases, value includes start username"
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM VOIP User Batch Add
// @Description UDM VOIP User Batch Add
// @Router /neData/udm/voip/{neId}/{value} [post]
func (s *UDMVOIPController) Adds(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
neId := c.Param("neId")
num := c.Param("num")
if neId == "" || num == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId or num is empty"))
return
}
var body model.UDMVOIPUser
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
return
}
if body.UserName == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: username is empty"))
return
}
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId)
if neInfo.NeId != neId || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
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
cmd := fmt.Sprintf("baa voip:sub_num=%s,start_username=%s,password=%s", num, body.UserName, body.Password)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmVOIPService.LoadData(neId, body.UserName, num)
} }
c.JSON(200, resp.OkData(data)) c.JSON(200, resp.OkData(data))
} }
// UDMVOIP用户删除 // UDMVOIP用户删除
// //
// DELETE /:neId/:username // DELETE /
// //
// @Tags network_data/udm/voip // @Tags network_data/udm/voip
// @Accept json // @Accept json
@@ -279,38 +244,59 @@ func (s *UDMVOIPController) Adds(c *gin.Context) {
// @Security TokenAuth // @Security TokenAuth
// @Summary UDM VOIP User Deletion // @Summary UDM VOIP User Deletion
// @Description UDM VOIP User Deletion // @Description UDM VOIP User Deletion
// @Router /neData/udm/voip/{neId}/{value} [delete] // @Router /neData/udm/voip [delete]
func (s *UDMVOIPController) Remove(c *gin.Context) { func (s *UDMVOIPController) Remove(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Param("neId") var query struct {
username := c.Param("username") CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
if neId == "" || username == "" { NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId or username is empty")) UserName string `form:"username" binding:"required"` // 用户名
Num int64 `form:"num"` // 批量数量
}
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 return
} }
// 处理字符转id数组后去重 // 查询网元信息
usernameArr := strings.Split(username, ",") neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
uniqueIDs := parse.RemoveDuplicates(usernameArr) if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID || neInfo.NeType != "UDM" {
if len(uniqueIDs) <= 0 {
c.JSON(200, resp.Err(nil))
return
}
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId)
if neInfo.NeId != neId || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient("UDM", neId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
} }
defer telnetClient.Close() defer telnetClient.Close()
if query.Num > 1 {
// 发送MML
cmd := fmt.Sprintf("bde voip:start_username=%s,sub_num=%d", query.UserName, query.Num)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmVOIPService.LoadData(neInfo.CoreUID, neInfo.NeUID, query.UserName, query.Num)
}
c.JSON(200, resp.OkData(data))
return
}
// 处理字符转id数组后去重
imsiArr := strings.Split(query.UserName, ",")
uniqueIDs := parse.RemoveDuplicates(imsiArr)
if len(uniqueIDs) <= 0 {
c.JSON(200, resp.Err(nil))
return
}
resultData := map[string]string{} resultData := map[string]string{}
for _, v := range uniqueIDs { for _, v := range uniqueIDs {
// 发送MML // 发送MML
@@ -322,7 +308,7 @@ func (s *UDMVOIPController) Remove(c *gin.Context) {
} }
// 命令ok时 // 命令ok时
if strings.Contains(data, "ok") { if strings.Contains(data, "ok") {
s.udmVOIPService.Delete(v, neId) s.udmVOIPService.Delete(neInfo.CoreUID, neInfo.NeUID, v)
} }
resultData[v] = data resultData[v] = data
} }
@@ -330,60 +316,6 @@ func (s *UDMVOIPController) Remove(c *gin.Context) {
c.JSON(200, resp.OkData(resultData)) c.JSON(200, resp.OkData(resultData))
} }
// UDMVOIP用户批量删除
//
// DELETE /:neId/:username/:num
//
// @Tags network_data/udm/voip
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param username path string true "User Name"
// @Param num path number true "Number of releases, value includes start username"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM VOIP User Batch Deletion
// @Description UDM VOIP User Batch Deletion
// @Router /neData/udm/voip/{neId}/{username}/{num} [delete]
func (s *UDMVOIPController) Removes(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
neId := c.Param("neId")
username := c.Param("username")
num := c.Param("num")
if neId == "" || username == "" || num == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId/username/num is empty"))
return
}
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId)
if neInfo.NeId != neId || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
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
cmd := fmt.Sprintf("bde voip:start_username=%s,sub_num=%s", username, num)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmVOIPService.LoadData(neId, username, num)
}
c.JSON(200, resp.OkData(data))
}
// UDMVOIP用户导出 // UDMVOIP用户导出
// //
// GET /export // GET /export
@@ -480,7 +412,8 @@ func (s *UDMVOIPController) Export(c *gin.Context) {
func (s *UDMVOIPController) Import(c *gin.Context) { func (s *UDMVOIPController) Import(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
var body struct { var body struct {
NeId string `json:"neId" binding:"required"` // 网元ID CoreUID string `json:"coreUid" binding:"required"` // 核心网唯一标识
NeUID string `json:"neUid" binding:"required"` // 网元唯一标识
UploadPath string `json:"uploadPath" binding:"required"` // 上传文件路径 UploadPath string `json:"uploadPath" binding:"required"` // 上传文件路径
} }
if err := c.ShouldBindBodyWithJSON(&body); err != nil { if err := c.ShouldBindBodyWithJSON(&body); err != nil {
@@ -495,15 +428,14 @@ func (s *UDMVOIPController) Import(c *gin.Context) {
return return
} }
// 查询网元获取IP // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", body.NeId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(body.CoreUID, body.NeUID)
if neInfo.NeId != body.NeId || neInfo.IP == "" { if neInfo.CoreUID != body.CoreUID || neInfo.NeUID != body.NeUID || neInfo.NeType != "UDM" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的SSH客户端 // 网元主机的SSH客户端
sshClient, err := s.neInfoService.NeRunSSHClient(neInfo.NeType, neInfo.NeId) sshClient, err := s.neInfoService.NeRunSSHClient(neInfo.CoreUID, neInfo.NeUID)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
@@ -527,7 +459,7 @@ func (s *UDMVOIPController) Import(c *gin.Context) {
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.NeType, neInfo.NeId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
@@ -550,11 +482,11 @@ func (s *UDMVOIPController) Import(c *gin.Context) {
if strings.Contains(resultMsg, "ok") { if strings.Contains(resultMsg, "ok") {
if strings.HasSuffix(body.UploadPath, ".csv") { if strings.HasSuffix(body.UploadPath, ".csv") {
data := file.ReadFileCSV(localFilePath) data := file.ReadFileCSV(localFilePath)
go s.udmVOIPService.InsertData(neInfo.NeId, "csv", data) go s.udmVOIPService.InsertData(neInfo.CoreUID, neInfo.NeUID, "csv", data)
} }
if strings.HasSuffix(body.UploadPath, ".txt") { if strings.HasSuffix(body.UploadPath, ".txt") {
data := file.ReadFileTXTLine(",", localFilePath) data := file.ReadFileTXTLine(",", localFilePath)
go s.udmVOIPService.InsertData(neInfo.NeId, "txt", data) go s.udmVOIPService.InsertData(neInfo.CoreUID, neInfo.NeUID, "txt", data)
} }
} }
c.JSON(200, resp.OkMsg(resultMsg)) c.JSON(200, resp.OkMsg(resultMsg))

View File

@@ -36,25 +36,30 @@ type UDMVolteIMSController struct {
// UDMVolteIMS用户重载数据 // UDMVolteIMS用户重载数据
// //
// PUT /resetData/:neId // PUT /reset
// //
// @Tags network_data/udm/volte-ims // @Tags network_data/udm/volte-ims
// @Accept json // @Accept json
// @Produce json // @Produce json
// @Param neId path string true "NE ID" default(001) // @Param coreUid query string true "CoreUID" default(001)
// @Param neUid query string true "NeUID" default(001)
// @Success 200 {object} object "Response Results" // @Success 200 {object} object "Response Results"
// @Security TokenAuth // @Security TokenAuth
// @Summary UDM VolteIMS User Data Refresh // @Summary UDM VolteIMS User Data Refresh
// @Description UDM Authenticated User Data List Refresh Synchronization Latest // @Description UDM Authenticated User Data List Refresh Synchronization Latest
// @Router /neData/udm/volte-ims/resetData/{neId} [put] // @Router /neData/udm/volte-ims/reset [put]
func (s *UDMVolteIMSController) ResetData(c *gin.Context) { func (s *UDMVolteIMSController) ResetData(c *gin.Context) {
neId := c.Param("neId") var query struct {
if neId == "" { CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty")) NeUID string `form:"neUid" 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 return
} }
data := s.udmVolteIMSService.ResetData(neId) data := s.udmVolteIMSService.ResetData(query.CoreUID, query.NeUID)
c.JSON(200, resp.OkData(data)) c.JSON(200, resp.OkData(data))
} }
@@ -82,7 +87,7 @@ func (s *UDMVolteIMSController) List(c *gin.Context) {
// UDMVolteIMS用户信息 // UDMVolteIMS用户信息
// //
// GET /:neId/:imsi // GET /
// //
// @Tags network_data/udm/volte-ims // @Tags network_data/udm/volte-ims
// @Accept json // @Accept json
@@ -94,29 +99,29 @@ func (s *UDMVolteIMSController) List(c *gin.Context) {
// @Security TokenAuth // @Security TokenAuth
// @Summary UDM VolteIMS User Information // @Summary UDM VolteIMS User Information
// @Description UDM VolteIMS User Information // @Description UDM VolteIMS User Information
// @Router /neData/udm/volte-ims/{neId}/{value} [get] // @Router /neData/udm/volte-ims [get]
func (s *UDMVolteIMSController) Info(c *gin.Context) { func (s *UDMVolteIMSController) Info(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Param("neId") var query struct {
imsi := c.Param("imsi") CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
msisdn := c.Query("msisdn") NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
if neId == "" || imsi == "" { IMSI string `form:"imsi" binding:"required"` // IMSi
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId or imsi is empty")) MSISDN string `form:"msisdn" binding:"required"` // MSISDN
return
} }
if msisdn == "" { if err := c.ShouldBindQuery(&query); err != nil {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: msisdn is required")) errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
return return
} }
// 查询网元获取IP // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
if neInfo.NeId != neId || neInfo.IP == "" { if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID || neInfo.NeType != "UDM" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient("UDM", neId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
@@ -124,7 +129,7 @@ func (s *UDMVolteIMSController) Info(c *gin.Context) {
defer telnetClient.Close() defer telnetClient.Close()
// 发送MML // 发送MML
cmd := fmt.Sprintf("dsp imsuser:imsi=%s,msisdn=%s", imsi, msisdn) cmd := fmt.Sprintf("dsp imsuser:imsi=%s,msisdn=%s", query.IMSI, query.MSISDN)
data, err := telnet.ConvertToMap(telnetClient, cmd) data, err := telnet.ConvertToMap(telnetClient, cmd)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
@@ -137,9 +142,9 @@ func (s *UDMVolteIMSController) Info(c *gin.Context) {
} }
// 解析返回的数据 // 解析返回的数据
u := s.udmVolteIMSService.ParseInfo(neId, data) u := s.udmVolteIMSService.ParseInfo(neInfo.CoreUID, neInfo.NeUID, data)
if u.ID != "" { if u.ID != "" {
s.udmVolteIMSService.InsertByIMSI(imsi, neId) s.udmVolteIMSService.InsertByIMSI(neInfo.CoreUID, neInfo.NeUID, query.IMSI)
c.JSON(200, resp.OkData(u)) c.JSON(200, resp.OkData(u))
return return
} }
@@ -148,7 +153,7 @@ func (s *UDMVolteIMSController) Info(c *gin.Context) {
// UDMVolteIMS用户新增 // UDMVolteIMS用户新增
// //
// POST /:neId // POST /
// //
// @Tags network_data/udm/volte-ims // @Tags network_data/udm/volte-ims
// @Accept json // @Accept json
@@ -159,12 +164,13 @@ func (s *UDMVolteIMSController) Info(c *gin.Context) {
// @Security TokenAuth // @Security TokenAuth
// @Summary UDM VolteIMS User Added // @Summary UDM VolteIMS User Added
// @Description UDM VolteIMS User Added If VoIP tag=0, then MSISDN and IMSI need to be the same. // @Description UDM VolteIMS User Added If VoIP tag=0, then MSISDN and IMSI need to be the same.
// @Router /neData/udm/volte-ims/{neId} [post] // @Router /neData/udm/volte-ims [post]
func (s *UDMVolteIMSController) Add(c *gin.Context) { func (s *UDMVolteIMSController) Add(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Param("neId") // 传入数量大于0时为批量新增
if neId == "" { num := parse.Number(c.Query("num"))
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty")) if num < 0 {
c.JSON(400, resp.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return return
} }
@@ -179,22 +185,40 @@ func (s *UDMVolteIMSController) Add(c *gin.Context) {
return return
} }
// 查询网元获取IP // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(body.CoreUID, body.NeUID)
if neInfo.NeId != neId || neInfo.IP == "" { if neInfo.CoreUID != body.CoreUID || neInfo.NeUID != body.NeUID || neInfo.NeType != "UDM" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient("UDM", neId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
} }
defer telnetClient.Close() defer telnetClient.Close()
// 批量新增
if num > 1 {
// 发送MML
cmd := fmt.Sprintf("baa imsuser:sub_num=%d,start_imsi=%s,start_msisdn=%s,volte=%s,vni=%s", num, body.IMSI, body.MSISDN, body.Tag, body.VNI)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmVolteIMSService.LoadData(neInfo.CoreUID, neInfo.NeUID, body.IMSI, num)
}
c.JSON(200, resp.OkData(data))
return
}
// 检查同IMSI下msisdn是否存在 // 检查同IMSI下msisdn是否存在
hasMsisdns := s.udmVolteIMSService.Find(model.UDMVolteIMSUser{IMSI: body.IMSI, MSISDN: body.MSISDN, NeId: neId}) hasMsisdns := s.udmVolteIMSService.Find(model.UDMVolteIMSUser{IMSI: body.IMSI, MSISDN: body.MSISDN, NeUID: neInfo.NeUID})
if len(hasMsisdns) > 0 { if len(hasMsisdns) > 0 {
c.JSON(200, resp.ErrMsg("IMSI and MSISDN already exist")) c.JSON(200, resp.ErrMsg("IMSI and MSISDN already exist"))
return return
@@ -210,109 +234,51 @@ func (s *UDMVolteIMSController) Add(c *gin.Context) {
// 命令ok时 // 命令ok时
if strings.Contains(data, "ok") { if strings.Contains(data, "ok") {
s.udmVolteIMSService.InsertByIMSI(body.IMSI, neId) s.udmVolteIMSService.InsertByIMSI(neInfo.CoreUID, neInfo.NeUID, body.IMSI)
}
c.JSON(200, resp.OkData(data))
}
// UDMVolteIMS用户批量新增
//
// POST /:neId/:num
//
// @Tags network_data/udm/volte-ims
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param value path number true "Number of releases, value includes start imsi"
// @Param data body object true "Request Param"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM VolteIMS User Batch Add
// @Description UDM VolteIMS User Batch Add
// @Router /neData/udm/volte-ims/{neId}/{value} [post]
func (s *UDMVolteIMSController) Adds(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
neId := c.Param("neId")
num := c.Param("num")
if neId == "" || num == "" {
c.JSON(400, resp.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return
}
var body model.UDMVolteIMSUser
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
return
}
if body.IMSI == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: imsi is empty"))
return
}
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId)
if neInfo.NeId != neId || neInfo.IP == "" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
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
cmd := fmt.Sprintf("baa imsuser:sub_num=%s,start_imsi=%s,start_msisdn=%s,volte=%s,vni=%s", num, body.IMSI, body.MSISDN, body.Tag, body.VNI)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmVolteIMSService.LoadData(neId, body.IMSI, num)
} }
c.JSON(200, resp.OkData(data)) c.JSON(200, resp.OkData(data))
} }
// UDMVolteIMS用户删除 // UDMVolteIMS用户删除
// //
// DELETE /:neId/:imsi // DELETE /
// //
// @Tags network_data/udm/volte-ims // @Tags network_data/udm/volte-ims
// @Accept json // @Accept json
// @Produce json // @Produce json
// @Param neId path string true "NE ID" default(001) // @Param coreUid query string true "CoreUID" default(001)
// @Param value path string true "IMSI, multiple separated by a , sign" // @Param neUid query string true "NeUID" default(001)
// @Param imsi query string true "IMSI"
// @Param num query number true "Number of releases, value includes start imsi"
// @Param msisdn query string false "MSISDN" // @Param msisdn query string false "MSISDN"
// @Success 200 {object} object "Response Results" // @Success 200 {object} object "Response Results"
// @Security TokenAuth // @Security TokenAuth
// @Summary UDM Authenticated User Deletion // @Summary UDM VolteIMS User Batch Deletion
// @Description UDM Authenticated User Deletion // @Description UDM VolteIMS User Batch Deletion
// @Router /neData/udm/volte-ims/{neId}/{value} [delete] // @Router /neData/udm/volte-ims [delete]
func (s *UDMVolteIMSController) Remove(c *gin.Context) { func (s *UDMVolteIMSController) Remove(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
neId := c.Param("neId") var query struct {
imsi := c.Param("imsi") CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
msisdn := c.Query("msisdn") NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
if neId == "" || imsi == "" { IMSI string `form:"imsi" binding:"required"` // IMSi, 带数量时为批量
c.JSON(400, resp.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) MSISDN string `form:"msisdn"` // MSISDN, 精确msisdn删除
Num int64 `form:"num"` // 批量数量
}
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 return
} }
imsiArr := strings.Split(imsi, ",")
// 查询网元获取IP // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(query.CoreUID, query.NeUID)
if neInfo.NeId != neId || neInfo.IP == "" { if neInfo.CoreUID != query.CoreUID || neInfo.NeUID != query.NeUID || neInfo.NeType != "UDM" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient("UDM", neId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
@@ -320,9 +286,9 @@ func (s *UDMVolteIMSController) Remove(c *gin.Context) {
defer telnetClient.Close() defer telnetClient.Close()
// 精确msisdn删除 // 精确msisdn删除
if msisdn != "" { if query.MSISDN != "" {
// 发送MML // 发送MML
cmd := fmt.Sprintf("del imsuser:imsi=%s,msisdn=%s", imsiArr[0], msisdn) cmd := fmt.Sprintf("del imsuser:imsi=%s,msisdn=%s", query.IMSI, query.MSISDN)
data, err := telnet.ConvertToStr(telnetClient, cmd) data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
@@ -330,89 +296,53 @@ func (s *UDMVolteIMSController) Remove(c *gin.Context) {
} }
// 命令ok时 // 命令ok时
if strings.Contains(data, "ok") { if strings.Contains(data, "ok") {
s.udmVolteIMSService.Delete(imsi, neId) s.udmVolteIMSService.Delete(neInfo.CoreUID, neInfo.NeUID, query.IMSI)
} }
c.JSON(200, resp.OkData(data)) c.JSON(200, resp.OkData(data))
return return
} else { }
// 处理字符转id数组后去重
uniqueIDs := parse.RemoveDuplicates(imsiArr) // 批量更新
if len(uniqueIDs) <= 0 { if query.Num > 0 {
c.JSON(200, resp.Err(nil)) // 发送MML
cmd := fmt.Sprintf("bde imsuser:start_imsi=%s,sub_num=%d", query.IMSI, query.Num)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return return
} }
resultData := map[string]string{}
for _, imsi := range uniqueIDs { // 命令ok时
// 发送MML if strings.Contains(data, "ok") {
cmd := fmt.Sprintf("del imsuser:imsi=%s", imsi) s.udmVolteIMSService.LoadData(neInfo.CoreUID, neInfo.NeUID, query.IMSI, query.Num)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
resultData[imsi] = err.Error()
continue
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmVolteIMSService.Delete(imsi, neId)
}
resultData[imsi] = data
} }
c.JSON(200, resp.OkData(resultData)) c.JSON(200, resp.OkData(data))
return
}
}
// UDMVolteIMS用户批量删除
//
// DELETE /:neId/:imsi/:num
//
// @Tags network_data/udm/volte-ims
// @Accept json
// @Produce json
// @Param neId path string true "NE ID" default(001)
// @Param imsi path string true "IMSI"
// @Param num path number true "Number of releases, value includes start imsi"
// @Success 200 {object} object "Response Results"
// @Security TokenAuth
// @Summary UDM VolteIMS User Batch Deletion
// @Description UDM VolteIMS User Batch Deletion
// @Router /neData/udm/volte-ims/{neId}/{imsi}/{num} [delete]
func (s *UDMVolteIMSController) Removes(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
neId := c.Param("neId")
imsi := c.Param("imsi")
num := c.Param("num")
if neId == "" || imsi == "" || num == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId/imsi/num is empty"))
return return
} }
// 查询网元获取IP // 处理字符转id数组后去重
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId) imsiArr := strings.Split(query.IMSI, ",")
if neInfo.NeId != neId || neInfo.IP == "" { uniqueIDs := parse.RemoveDuplicates(imsiArr)
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) if len(uniqueIDs) <= 0 {
c.JSON(200, resp.Err(nil))
return return
} }
// 网元主机的Telnet客户端 resultData := map[string]string{}
telnetClient, err := s.neInfoService.NeRunTelnetClient("UDM", neId, 1) for _, imsi := range uniqueIDs {
if err != nil { // 发送MML
c.JSON(200, resp.ErrMsg(err.Error())) cmd := fmt.Sprintf("del imsuser:imsi=%s", imsi)
return data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
resultData[imsi] = err.Error()
continue
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmVolteIMSService.Delete(neInfo.CoreUID, neInfo.NeUID, imsi)
}
resultData[imsi] = data
} }
defer telnetClient.Close() c.JSON(200, resp.OkData(resultData))
// 发送MML
cmd := fmt.Sprintf("bde imsuser:start_imsi=%s,sub_num=%s", imsi, num)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmVolteIMSService.LoadData(neId, imsi, num)
}
c.JSON(200, resp.OkData(data))
} }
// UDMVolteIMS用户导出 // UDMVolteIMS用户导出
@@ -422,7 +352,8 @@ func (s *UDMVolteIMSController) Removes(c *gin.Context) {
// @Tags network_data/udm/volte-ims // @Tags network_data/udm/volte-ims
// @Accept json // @Accept json
// @Produce json // @Produce json
// @Param neId query string true "NE ID" default(001) // @Param coreUid query string true "CoreUID" default(001)
// @Param neUid query string true "NeUID" default(001)
// @Param type query string true "File Type" Enums(csv,txt) default(txt) // @Param type query string true "File Type" Enums(csv,txt) default(txt)
// @Param imsi query string false "IMSI" // @Param imsi query string false "IMSI"
// @Param pageNum query number true "pageNum" default(1) // @Param pageNum query number true "pageNum" default(1)
@@ -434,13 +365,12 @@ func (s *UDMVolteIMSController) Removes(c *gin.Context) {
// @Router /neData/udm/volte-ims/export [get] // @Router /neData/udm/volte-ims/export [get]
func (s *UDMVolteIMSController) Export(c *gin.Context) { func (s *UDMVolteIMSController) Export(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
// 查询结果,根据查询条件结果,单页最大值限制 neUid := c.Query("neUid")
neId := c.Query("neId") if c.Query("coreUid") == "" || neUid == "" {
fileType := c.Query("type") c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: coreUid or neUid is empty"))
if neId == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty"))
return return
} }
fileType := c.Query("type")
if !(fileType == "csv" || fileType == "txt") { if !(fileType == "csv" || fileType == "txt") {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "ne.udm.errImportUserSubFileFormat"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "ne.udm.errImportUserSubFileFormat")))
return return
@@ -460,7 +390,7 @@ func (s *UDMVolteIMSController) Export(c *gin.Context) {
} }
// 文件名 // 文件名
fileName := fmt.Sprintf("udm_volte_user_export_%s_%d.%s", neId, time.Now().UnixMilli(), fileType) fileName := fmt.Sprintf("udm_volte_user_export_%s_%d.%s", neUid, time.Now().UnixMilli(), fileType)
filePath := filepath.Join(file.ParseUploadFileDir(constants.UPLOAD_EXPORT), fileName) filePath := filepath.Join(file.ParseUploadFileDir(constants.UPLOAD_EXPORT), fileName)
if fileType == "csv" { if fileType == "csv" {
@@ -509,7 +439,8 @@ func (s *UDMVolteIMSController) Export(c *gin.Context) {
func (s *UDMVolteIMSController) Import(c *gin.Context) { func (s *UDMVolteIMSController) Import(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
var body struct { var body struct {
NeId string `json:"neId" binding:"required"` // 网元ID CoreUID string `json:"coreUid" binding:"required"` // 核心网唯一标识
NeUID string `json:"neUid" binding:"required"` // 网元唯一标识
UploadPath string `json:"uploadPath" binding:"required"` // 上传文件路径 UploadPath string `json:"uploadPath" binding:"required"` // 上传文件路径
} }
if err := c.ShouldBindBodyWithJSON(&body); err != nil { if err := c.ShouldBindBodyWithJSON(&body); err != nil {
@@ -524,15 +455,14 @@ func (s *UDMVolteIMSController) Import(c *gin.Context) {
return return
} }
// 查询网元获取IP // 查询网元信息
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", body.NeId) neInfo := s.neInfoService.FindByCoreUidAndNeUid(body.CoreUID, body.NeUID)
if neInfo.NeId != body.NeId || neInfo.IP == "" { if neInfo.CoreUID != body.CoreUID || neInfo.NeUID != body.NeUID || neInfo.NeType != "UDM" {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
// 网元主机的SSH客户端 // 网元主机的SSH客户端
sshClient, err := s.neInfoService.NeRunSSHClient(neInfo.NeType, neInfo.NeId) sshClient, err := s.neInfoService.NeRunSSHClient(neInfo.CoreUID, neInfo.NeUID)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
@@ -556,7 +486,7 @@ func (s *UDMVolteIMSController) Import(c *gin.Context) {
} }
// 网元主机的Telnet客户端 // 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.NeType, neInfo.NeId, 1) telnetClient, err := s.neInfoService.NeRunTelnetClient(neInfo.CoreUID, neInfo.NeUID, 1)
if err != nil { if err != nil {
c.JSON(200, resp.ErrMsg(err.Error())) c.JSON(200, resp.ErrMsg(err.Error()))
return return
@@ -579,11 +509,11 @@ func (s *UDMVolteIMSController) Import(c *gin.Context) {
if strings.Contains(resultMsg, "ok") { if strings.Contains(resultMsg, "ok") {
if strings.HasSuffix(body.UploadPath, ".csv") { if strings.HasSuffix(body.UploadPath, ".csv") {
data := file.ReadFileCSV(localFilePath) data := file.ReadFileCSV(localFilePath)
go s.udmVolteIMSService.InsertData(neInfo.NeId, "csv", data) go s.udmVolteIMSService.InsertData(neInfo.CoreUID, neInfo.NeUID, "csv", data)
} }
if strings.HasSuffix(body.UploadPath, ".txt") { if strings.HasSuffix(body.UploadPath, ".txt") {
data := file.ReadFileTXTLine(",", localFilePath) data := file.ReadFileTXTLine(",", localFilePath)
go s.udmVolteIMSService.InsertData(neInfo.NeId, "txt", data) go s.udmVolteIMSService.InsertData(neInfo.CoreUID, neInfo.NeUID, "txt", data)
} }
} }
c.JSON(200, resp.OkMsg(resultMsg)) c.JSON(200, resp.OkMsg(resultMsg))

View File

@@ -44,22 +44,28 @@ type UPFController struct {
func (s UPFController) FlowTotal(c *gin.Context) { func (s UPFController) FlowTotal(c *gin.Context) {
language := reqctx.AcceptLanguage(c) language := reqctx.AcceptLanguage(c)
var querys struct { var querys struct {
NeID string `form:"neId" binding:"required"` CoreUID string `form:"coreUid" binding:"required"` // 核心网唯一标识
Day int `form:"day"` NeUID string `form:"neUid" binding:"required"` // 网元唯一标识
Day int `form:"day"`
} }
if err := c.ShouldBindQuery(&querys); querys.Day < 0 || err != nil { if err := c.ShouldBindQuery(&querys); err != nil {
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err)) errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs)) c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
return return
} }
if querys.Day < 0 || querys.Day > 30 {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "day must be between 0 and 30"))
return
}
// 查询网元获取IP // 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UPF", querys.NeID) neInfo := s.neInfoService.FindByCoreUidAndNeUid(querys.CoreUID, querys.NeUID)
if neInfo.NeId != querys.NeID || neInfo.IP == "" { if neInfo.CoreUID != querys.CoreUID || neInfo.NeUID != querys.NeUID {
c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) c.JSON(200, resp.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return return
} }
up, down := s.kpiReportService.UPFTodayFlowFind(neInfo.RmUID, querys.Day) up, down := s.kpiReportService.UPFTodayFlowFind(neInfo.NeUID, querys.Day)
c.JSON(200, resp.OkData(map[string]int64{"up": up, "down": down})) c.JSON(200, resp.OkData(map[string]int64{"up": up, "down": down}))
} }

View File

@@ -3,11 +3,9 @@ package model
// Alarm 告警记录 // Alarm 告警记录
type Alarm struct { type Alarm struct {
ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"` ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"`
CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识
NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识
NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型 NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型
NeId string `json:"neId" gorm:"column:ne_id"` // 网元ID
NeName string `json:"neName" gorm:"column:ne_name"` // 网元名称
Province string `json:"province" gorm:"column:province"` // 网元省份地域
PvFlag string `json:"pvFlag" gorm:"column:pv_flag"` // 网元标识虚拟化标识
AlarmSeq int64 `json:"alarmSeq" gorm:"column:alarm_seq"` // 告警序号 同网元类型连续递增 AlarmSeq int64 `json:"alarmSeq" gorm:"column:alarm_seq"` // 告警序号 同网元类型连续递增
AlarmId string `json:"alarmId" gorm:"column:alarm_id"` // 告警ID AlarmId string `json:"alarmId" gorm:"column:alarm_id"` // 告警ID
AlarmTitle string `json:"alarmTitle" gorm:"column:alarm_title"` // 告警标题 AlarmTitle string `json:"alarmTitle" gorm:"column:alarm_title"` // 告警标题
@@ -40,10 +38,9 @@ func (*Alarm) TableName() string {
// AlarmQuery 告警数据查询参数结构体 // AlarmQuery 告警数据查询参数结构体
type AlarmQuery struct { type AlarmQuery struct {
NeType string `json:"neType" form:"neType"` // 网元类型 CoreUID string `json:"coreUid" form:"coreUid"` // 核心网唯一标识
NeID string `json:"neId" form:"neId"` // 网元ID NeUID string `json:"neUid" form:"neUid"` // 网元唯一标识
NeName string `json:"neName" form:"neName"` NeType string `json:"neType" form:"neType"` // 网元类型
PvFlag string `json:"pvFlag" form:"pvFlag"`
AlarmCode string `json:"alarmCode" form:"alarmCode"` AlarmCode string `json:"alarmCode" form:"alarmCode"`
AlarmType string `json:"alarmType" form:"alarmType"` AlarmType string `json:"alarmType" form:"alarmType"`
AlarmStatus string `json:"alarmStatus" form:"alarmStatus" binding:"omitempty,oneof=0 1"` // 告警状态 0:clear, 1:active AlarmStatus string `json:"alarmStatus" form:"alarmStatus" binding:"omitempty,oneof=0 1"` // 告警状态 0:clear, 1:active

View File

@@ -3,8 +3,9 @@ package model
// AlarmEvent 告警_事件记录表 // AlarmEvent 告警_事件记录表
type AlarmEvent struct { type AlarmEvent struct {
ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"` ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"`
CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识
NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识
NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型 NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型
NeId string `json:"neId" gorm:"column:ne_id"` // 网元ID
AlarmSeq int64 `json:"alarmSeq" gorm:"column:alarm_seq"` // 告警序号 同网元类型连续递增 AlarmSeq int64 `json:"alarmSeq" gorm:"column:alarm_seq"` // 告警序号 同网元类型连续递增
AlarmId string `json:"alarmId" gorm:"column:alarm_id"` // 告警ID AlarmId string `json:"alarmId" gorm:"column:alarm_id"` // 告警ID
AlarmTitle string `json:"alarmTitle" gorm:"column:alarm_title"` // 告警标题 AlarmTitle string `json:"alarmTitle" gorm:"column:alarm_title"` // 告警标题
@@ -31,8 +32,9 @@ func (*AlarmEvent) TableName() string {
// AlarmEventQuery 告警事件数据查询参数结构体 // AlarmEventQuery 告警事件数据查询参数结构体
type AlarmEventQuery struct { type AlarmEventQuery struct {
CoreUID string `json:"coreId" form:"coreId"` // 核心网唯一标识
NeUID string `json:"neUid" form:"neUid"` // 网元唯一标识
NeType string `json:"neType" form:"neType"` // 网元类型 NeType string `json:"neType" form:"neType"` // 网元类型
NeID string `json:"neId" form:"neId"` // 网元ID
AlarmCode string `json:"alarmCode" form:"alarmCode"` AlarmCode string `json:"alarmCode" form:"alarmCode"`
AlarmStatus string `json:"alarmStatus" form:"alarmStatus" binding:"omitempty,oneof=0 1"` // 告警状态 0:clear, 1:active AlarmStatus string `json:"alarmStatus" form:"alarmStatus" binding:"omitempty,oneof=0 1"` // 告警状态 0:clear, 1:active
BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查event_time BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查event_time

View File

@@ -3,8 +3,9 @@ package model
// AlarmForwardLog 告警_转发日志记录 // AlarmForwardLog 告警_转发日志记录
type AlarmForwardLog struct { type AlarmForwardLog struct {
ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"` ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"`
NeType string `json:"neType" gorm:"column:ne_type"` CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识
NeId string `json:"neId" gorm:"column:ne_id"` NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识
NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型
AlarmSeq int64 `json:"alarmSeq" gorm:"column:alarm_seq"` // 告警序号 同网元类型连续递增 AlarmSeq int64 `json:"alarmSeq" gorm:"column:alarm_seq"` // 告警序号 同网元类型连续递增
AlarmId string `json:"alarmId" gorm:"column:alarm_id"` // 告警ID AlarmId string `json:"alarmId" gorm:"column:alarm_id"` // 告警ID
AlarmCode int64 `json:"alarmCode" gorm:"column:alarm_code"` // 告警状态码 AlarmCode int64 `json:"alarmCode" gorm:"column:alarm_code"` // 告警状态码
@@ -26,8 +27,9 @@ func (*AlarmForwardLog) TableName() string {
// AlarmForwardLogQuery 告警转发日志数据查询参数结构体 // AlarmForwardLogQuery 告警转发日志数据查询参数结构体
type AlarmForwardLogQuery struct { type AlarmForwardLogQuery struct {
CoreUID string `json:"coreUid" form:"coreUid"` // 核心网唯一标识
NeUID string `json:"neUid" form:"neUid"` // 网元唯一标识
NeType string `json:"neType" form:"neType"` // 网元类型 NeType string `json:"neType" form:"neType"` // 网元类型
NeID string `json:"neId" form:"neId"` // 网元ID
BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查event_time BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查event_time
EndTime int64 `json:"endTime" form:"endTime"` EndTime int64 `json:"endTime" form:"endTime"`
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=event_time id"` // 排序字段,填写结果字段 SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=event_time id"` // 排序字段,填写结果字段

View File

@@ -3,8 +3,9 @@ package model
// AlarmLog 告警_日志记录 // AlarmLog 告警_日志记录
type AlarmLog struct { type AlarmLog struct {
ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"` ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"`
NeType string `json:"neType" gorm:"column:ne_type"` CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识
NeId string `json:"neId" gorm:"column:ne_id"` NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识
NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型
AlarmSeq int64 `json:"alarmSeq" gorm:"column:alarm_seq"` // 告警序号 同网元类型连续递增 AlarmSeq int64 `json:"alarmSeq" gorm:"column:alarm_seq"` // 告警序号 同网元类型连续递增
AlarmId string `json:"alarmId" gorm:"column:alarm_id"` // 告警ID AlarmId string `json:"alarmId" gorm:"column:alarm_id"` // 告警ID
AlarmCode int64 `json:"alarmCode" gorm:"column:alarm_code"` // 告警状态码 AlarmCode int64 `json:"alarmCode" gorm:"column:alarm_code"` // 告警状态码
@@ -23,8 +24,9 @@ func (*AlarmLog) TableName() string {
// AlarmLogQuery 告警日志数据查询参数结构体 // AlarmLogQuery 告警日志数据查询参数结构体
type AlarmLogQuery struct { type AlarmLogQuery struct {
CoreUID string `json:"coreUid" form:"coreUid"` // 核心网唯一标识
NeUID string `json:"neUid" form:"neUid"` // 网元唯一标识
NeType string `json:"neType" form:"neType"` // 网元类型 NeType string `json:"neType" form:"neType"` // 网元类型
NeID string `json:"neId" form:"neId"` // 网元ID
AlarmStatus string `json:"alarmStatus" form:"alarmStatus" binding:"omitempty,oneof=0 1"` // 告警状态 0:clear, 1:active AlarmStatus string `json:"alarmStatus" form:"alarmStatus" binding:"omitempty,oneof=0 1"` // 告警状态 0:clear, 1:active
OrigSeverity string `json:"origSeverity" form:"origSeverity"` // 告警类型 1: Critical, 2: Major, 3: Minor, 4: Warning, 5: Event(Only VNF) OrigSeverity string `json:"origSeverity" form:"origSeverity"` // 告警类型 1: Critical, 2: Major, 3: Minor, 4: Warning, 5: Event(Only VNF)
BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查event_time BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查event_time

View File

@@ -3,9 +3,9 @@ package model
// CDREventIMS CDR会话对象IMS cdr_event_ims // CDREventIMS CDR会话对象IMS cdr_event_ims
type CDREventIMS struct { type CDREventIMS struct {
ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"` ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"`
NeType string `json:"neType" gorm:"column:ne_type"` CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识
NeName string `json:"neName" gorm:"column:ne_name"` NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识
RmUid string `json:"rmUid" gorm:"column:rm_uid"` NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型
Timestamp int64 `json:"timestamp" gorm:"column:timestamp"` // 接收到的timestamp秒级存储毫秒时间戳 Timestamp int64 `json:"timestamp" gorm:"column:timestamp"` // 接收到的timestamp秒级存储毫秒时间戳
CdrJson string `json:"cdrJSON" gorm:"column:cdr_json"` // data JSON String CdrJson string `json:"cdrJSON" gorm:"column:cdr_json"` // data JSON String
CreatedAt int64 `json:"createdAt" gorm:"column:created_at"` // 记录创建存储毫秒 CreatedAt int64 `json:"createdAt" gorm:"column:created_at"` // 记录创建存储毫秒
@@ -18,13 +18,13 @@ func (*CDREventIMS) TableName() string {
// CDREventIMSQuery CDR会话对象IMS查询参数结构体 // CDREventIMSQuery CDR会话对象IMS查询参数结构体
type CDREventIMSQuery struct { type CDREventIMSQuery struct {
CoreUID string `json:"coreUid" form:"coreUid" binding:"required"` // 核心网唯一标识
NeUID string `json:"neUid" form:"neUid" binding:"required"` // 网元唯一标识
NeType string `json:"neType" form:"neType" binding:"required,oneof=IMS"` // 网元类型IMS NeType string `json:"neType" form:"neType" binding:"required,oneof=IMS"` // 网元类型IMS
NeID string `json:"neId" form:"neId" binding:"required"` RecordType string `json:"recordType" form:"recordType"` // 记录行为 MOC MTC
RmUID string `json:"rmUID" form:"rmUID"` CallerParty string `json:"callerParty" form:"callerParty"` // 主叫号码
RecordType string `json:"recordType" form:"recordType"` // 记录行为 MOC MTC CalledParty string `json:"calledParty" form:"calledParty"` // 被叫号码
CallerParty string `json:"callerParty" form:"callerParty"` // 主叫号码 BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查timestamp
CalledParty string `json:"calledParty" form:"calledParty"` // 被叫号码
BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查timestamp
EndTime int64 `json:"endTime" form:"endTime"` EndTime int64 `json:"endTime" form:"endTime"`
SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=timestamp"` // 排序字段,填写结果字段 SortField string `json:"sortField" form:"sortField" binding:"omitempty,oneof=timestamp"` // 排序字段,填写结果字段
SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序asc desc SortOrder string `json:"sortOrder" form:"sortOrder" binding:"omitempty,oneof=asc desc"` // 排序升降序asc desc

View File

@@ -3,9 +3,9 @@ package model
// CDREventSGWC CDR会话对象SGWC cdr_event_sgwc // CDREventSGWC CDR会话对象SGWC cdr_event_sgwc
type CDREventSGWC struct { type CDREventSGWC struct {
ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"` ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"`
NeType string `json:"neType" gorm:"column:ne_type"` CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识
NeName string `json:"neName" gorm:"column:ne_name"` NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识
RmUid string `json:"rmUid" gorm:"column:rm_uid"` NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型
Timestamp int64 `json:"timestamp" gorm:"column:timestamp"` // 接收到的timestamp秒级存储毫秒时间戳 Timestamp int64 `json:"timestamp" gorm:"column:timestamp"` // 接收到的timestamp秒级存储毫秒时间戳
CdrJson string `json:"cdrJSON" gorm:"column:cdr_json"` // data JSON String CdrJson string `json:"cdrJSON" gorm:"column:cdr_json"` // data JSON String
CreatedAt int64 `json:"createdAt" gorm:"column:created_at"` // 记录创建存储毫秒 CreatedAt int64 `json:"createdAt" gorm:"column:created_at"` // 记录创建存储毫秒
@@ -18,9 +18,9 @@ func (*CDREventSGWC) TableName() string {
// CDREventSGWCQuery CDR会话对象SGWC查询参数结构体 // CDREventSGWCQuery CDR会话对象SGWC查询参数结构体
type CDREventSGWCQuery struct { type CDREventSGWCQuery struct {
CoreUID string `json:"coreUid" form:"coreUid" binding:"required"` // 核心网唯一标识
NeUID string `json:"neUid" form:"neUid" binding:"required"` // 网元唯一标识
NeType string `json:"neType" form:"neType" binding:"required,oneof=SGWC"` // SGWC NeType string `json:"neType" form:"neType" binding:"required,oneof=SGWC"` // SGWC
NeID string `json:"neId" form:"neId" binding:"required"`
RmUID string `json:"rmUID" form:"rmUID"`
IMSI string `json:"imsi" form:"imsi"` IMSI string `json:"imsi" form:"imsi"`
MSISDN string `json:"msisdn" form:"msisdn"` MSISDN string `json:"msisdn" form:"msisdn"`
BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查timestamp BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查timestamp

View File

@@ -3,9 +3,9 @@ package model
// CDREventSMF CDR会话对象SMF cdr_event_smf // CDREventSMF CDR会话对象SMF cdr_event_smf
type CDREventSMF struct { type CDREventSMF struct {
ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"` ID int64 `json:"id" gorm:"column:id;primaryKey;autoIncrement"`
NeType string `json:"neType" gorm:"column:ne_type"` CoreUID string `json:"coreUid" gorm:"column:core_uid"` // 核心网唯一标识
NeName string `json:"neName" gorm:"column:ne_name"` NeUID string `json:"neUid" gorm:"column:ne_uid"` // 网元唯一标识
RmUid string `json:"rmUid" gorm:"column:rm_uid"` NeType string `json:"neType" gorm:"column:ne_type"` // 网元类型
Timestamp int64 `json:"timestamp" gorm:"column:timestamp"` // 接收到的timestamp秒级存储毫秒时间戳 Timestamp int64 `json:"timestamp" gorm:"column:timestamp"` // 接收到的timestamp秒级存储毫秒时间戳
CdrJson string `json:"cdrJSON" gorm:"column:cdr_json"` // data JSON String CdrJson string `json:"cdrJSON" gorm:"column:cdr_json"` // data JSON String
CreatedAt int64 `json:"createdAt" gorm:"column:created_at"` // 记录创建存储毫秒 CreatedAt int64 `json:"createdAt" gorm:"column:created_at"` // 记录创建存储毫秒
@@ -18,10 +18,10 @@ func (*CDREventSMF) TableName() string {
// CDREventSMFQuery CDR会话对象SMF查询参数结构体 // CDREventSMFQuery CDR会话对象SMF查询参数结构体
type CDREventSMFQuery struct { type CDREventSMFQuery struct {
CoreUID string `json:"coreUid" form:"coreUid" binding:"required"` // 核心网唯一标识
NeUID string `json:"neUid" form:"neUid" binding:"required"` // 网元唯一标识
NeType string `json:"neType" form:"neType" binding:"required,oneof=SMF"` // 网元类型, 暂时支持SMF NeType string `json:"neType" form:"neType" binding:"required,oneof=SMF"` // 网元类型, 暂时支持SMF
NeID string `json:"neId" form:"neId" binding:"required"` RecordType string `json:"recordType" form:"recordType"` // 暂时没用到
RmUID string `json:"rmUID" form:"rmUID"`
RecordType string `json:"recordType" form:"recordType"` // 暂时没用到
SubscriberID string `json:"subscriberID" form:"subscriberID"` SubscriberID string `json:"subscriberID" form:"subscriberID"`
DNN string `json:"dnn" form:"dnn"` DNN string `json:"dnn" form:"dnn"`
BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查timestamp BeginTime int64 `json:"beginTime" form:"beginTime"` // 开始时间 查timestamp

Some files were not shown because too many files have changed in this diff Show More