diff --git a/CHANGELOG.md b/CHANGELOG.md index cd1f6fca..3306569d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,7 @@ - 新增 ws 支持网元状态查询 - 修复 ws 处理接收发送 CDR 呼叫类型 MTC 推送 - 新增 字典用户事件类型多语言翻译补充 -- 新增 H支持TTP 2.0服务请求 +- 新增 支持HTTP 2.0服务请求 - 修复 OMC数据脚本,更新字典数据、拓扑数据 - 优化 更新gold_kpi索引 - 新增 系统菜单开启缓存信息和管理列表 diff --git a/src/modules/network_element/controller/perf_kpi.go b/src/modules/network_element/controller/perf_kpi.go deleted file mode 100644 index aadc7aaf..00000000 --- a/src/modules/network_element/controller/perf_kpi.go +++ /dev/null @@ -1,77 +0,0 @@ -package controller - -import ( - "ems.agt/lib/core/utils/date" - "ems.agt/src/framework/i18n" - "ems.agt/src/framework/utils/ctx" - "ems.agt/src/framework/vo/result" - "ems.agt/src/modules/network_element/model" - neService "ems.agt/src/modules/network_element/service" - "github.com/gin-gonic/gin" -) - -// 实例化控制层 PerfKPIController 结构体 -var NewPerfKPI = &PerfKPIController{ - neInfoService: neService.NewNeInfoImpl, - perfKPIService: neService.NewPerfKPIImpl, -} - -// 性能统计 -// -// PATH /kpi -type PerfKPIController struct { - // 网元信息服务 - neInfoService neService.INeInfo - // 统计信息服务 - perfKPIService neService.IPerfKPI -} - -// 获取统计数据 -// -// GET /data -func (s *PerfKPIController) GoldKPI(c *gin.Context) { - language := ctx.AcceptLanguage(c) - var querys model.GoldKPIQuery - if err := c.ShouldBindQuery(&querys); err != nil { - c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) - return - } - - // 时间格式校验 - startTime := date.ParseStrToDate(querys.StartTime, date.YYYY_MM_DD_HH_MM_SS) - if startTime.IsZero() { - c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) - } - endTime := date.ParseStrToDate(querys.EndTime, date.YYYY_MM_DD_HH_MM_SS) - if endTime.IsZero() { - c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) - } - - // 查询网元获取IP - neInfo := s.neInfoService.SelectNeInfoByNeTypeAndNeID(querys.NeType, querys.NeID) - if neInfo.NeId != querys.NeID || neInfo.IP == "" { - c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) - return - } - querys.RmUID = neInfo.RmUID - - // 查询数据 - kpiData := s.perfKPIService.SelectGoldKPI(querys) - c.JSON(200, result.OkData(kpiData)) -} - -// 获取统计标题 -// -// GET /title -func (s *PerfKPIController) Title(c *gin.Context) { - language := ctx.AcceptLanguage(c) - neType := c.Query("neType") - if neType == "" { - c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) - return - } - - kpiTitles := s.perfKPIService.SelectGoldKPITitle(neType) - - c.JSON(200, result.OkData(kpiTitles)) -} diff --git a/src/modules/network_element/model/perf_kpi.go b/src/modules/network_element/model/perf_kpi.go deleted file mode 100644 index 108d81f2..00000000 --- a/src/modules/network_element/model/perf_kpi.go +++ /dev/null @@ -1,23 +0,0 @@ -package model - -// GoldKPITitle 黄金指标标题信息对象 kpi_title -type GoldKPITitle struct { - ID string `json:"id" gorm:"column:id;primaryKey;autoIncrement"` - NeType string `json:"neType" gorm:"column:ne_type"` - KPIID string `json:"kpiId" gorm:"column:kpi_id"` - TitleJson string `json:"titleJson" gorm:"column:title_json"` - CnTitle string `json:"cnTitle" gorm:"column:cn_title"` - EnTitle string `json:"enTitle" gorm:"column:en_title"` -} - -// GoldKPIQuery 黄金指标查询参数结构体 -type GoldKPIQuery struct { - NeType string `form:"neType" binding:"required"` - NeID string `form:"neId" binding:"required"` - StartTime string `form:"startTime" binding:"required"` - EndTime string `form:"endTime" binding:"required"` - Interval int64 `form:"interval" binding:"required"` - RmUID string `form:"rmUID"` - SortField string `form:"sortField" binding:"omitempty,oneof=timeGroup"` - SortOrder string `form:"sortOrder" binding:"omitempty,oneof=asc desc"` -} diff --git a/src/modules/network_element/repository/perf_kpi.go b/src/modules/network_element/repository/perf_kpi.go deleted file mode 100644 index 2c21acdf..00000000 --- a/src/modules/network_element/repository/perf_kpi.go +++ /dev/null @@ -1,12 +0,0 @@ -package repository - -import "ems.agt/src/modules/network_element/model" - -// 性能统计 数据层接口 -type IPerfKPI interface { - // SelectGoldKPI 通过网元指标数据信息 - SelectGoldKPI(query model.GoldKPIQuery, kpiIds []string) []map[string]any - - // SelectGoldKPITitle - SelectGoldKPITitle(neType string) []model.GoldKPITitle -} diff --git a/src/modules/network_element/repository/perf_kpi.impl.go b/src/modules/network_element/repository/perf_kpi.impl.go deleted file mode 100644 index 0b13abab..00000000 --- a/src/modules/network_element/repository/perf_kpi.impl.go +++ /dev/null @@ -1,90 +0,0 @@ -package repository - -import ( - "fmt" - "strings" - - "ems.agt/src/framework/datasource" - "ems.agt/src/framework/logger" - "ems.agt/src/modules/network_element/model" -) - -// 实例化数据层 PerfKPIImpl 结构体 -var NewPerfKPIImpl = &PerfKPIImpl{} - -// PerfKPIImpl 性能统计 数据层处理 -type PerfKPIImpl struct{} - -// SelectGoldKPI 通过网元指标数据信息 -func (r *PerfKPIImpl) SelectGoldKPI(query model.GoldKPIQuery, kpiIds []string) []map[string]any { - // 查询条件拼接 - var conditions []string - var params []any - if query.RmUID != "" { - conditions = append(conditions, "gk.rm_uid = ?") - params = append(params, query.RmUID) - } - if query.NeType != "" { - conditions = append(conditions, "gk.ne_type = ?") - params = append(params, query.NeType) - } - if query.StartTime != "" { - conditions = append(conditions, "gk.start_time >= ?") - params = append(params, query.StartTime) - } - if query.EndTime != "" { - conditions = append(conditions, "gk.start_time <= ?") - params = append(params, query.EndTime) - } - // 构建查询条件语句 - whereSql := "" - if len(conditions) > 0 { - whereSql += " where " + strings.Join(conditions, " and ") - } - - // 查询字段列 - timeFormat := "DATE_FORMAT(gk.start_time, '%Y-%m-%d %H:')" - minuteGroup := fmt.Sprintf("LPAD(FLOOR(MINUTE(gk.start_time) / %d) * %d, 2, '0')", query.Interval, query.Interval) - groupByField := fmt.Sprintf("CONCAT( %s, %s ) AS timeGroup", timeFormat, minuteGroup) - var fields = []string{ - groupByField, - "min(CASE WHEN gk.index != '' THEN gk.index ELSE 0 END) AS startIndex", - "min(CASE WHEN gk.ne_name != '' THEN gk.ne_name ELSE 0 END) AS neName", - } - for _, kid := range kpiIds { - // 特殊字段,只取最后一次收到的非0值 - if kid == "AMF.01" || kid == "UDM.01" || kid == "UDM.02" || kid == "UDM.03" { - str := fmt.Sprintf("IFNULL(SUBSTRING_INDEX(GROUP_CONCAT( CASE WHEN gk.kpi_id = '%s' and gk.VALUE != 0 THEN gk.VALUE END ), ',', 1), 0) AS '%s'", kid, kid) - fields = append(fields, str) - } else { - str := fmt.Sprintf("sum(CASE WHEN gk.kpi_id = '%s' THEN gk.value ELSE 0 END) AS '%s'", kid, kid) - fields = append(fields, str) - } - } - fieldsSql := strings.Join(fields, ",") - - // 查询数据 - if query.SortField == "" { - query.SortField = "timeGroup" - } - if query.SortOrder == "" { - query.SortOrder = "desc" - } - orderSql := fmt.Sprintf(" order by %s %s", query.SortField, query.SortOrder) - querySql := fmt.Sprintf("SELECT %s FROM gold_kpi gk %s GROUP BY timeGroup %s", fieldsSql, whereSql, orderSql) - results, err := datasource.RawDB("", querySql, params) - if err != nil { - logger.Errorf("query err => %v", err) - } - return results -} - -// SelectGoldKPITitle 通过网元指标数据信息 -func (r *PerfKPIImpl) SelectGoldKPITitle(neType string) []model.GoldKPITitle { - result := []model.GoldKPITitle{} - tx := datasource.DefaultDB().Table("kpi_title").Where("ne_type = ?", neType).Find(&result) - if err := tx.Error; err != nil { - logger.Errorf("Delete err => %v", err) - } - return result -} diff --git a/src/modules/network_element/service/perf_kpi.go b/src/modules/network_element/service/perf_kpi.go deleted file mode 100644 index decd5dc0..00000000 --- a/src/modules/network_element/service/perf_kpi.go +++ /dev/null @@ -1,12 +0,0 @@ -package service - -import "ems.agt/src/modules/network_element/model" - -// 性能统计 数据层接口 -type IPerfKPI interface { - // SelectGoldKPI 通过网元指标数据信息 - SelectGoldKPI(query model.GoldKPIQuery) []map[string]any - - // SelectGoldKPITitle - SelectGoldKPITitle(neType string) []model.GoldKPITitle -} diff --git a/src/modules/network_element/service/perf_kpi.impl.go b/src/modules/network_element/service/perf_kpi.impl.go deleted file mode 100644 index da2f7d05..00000000 --- a/src/modules/network_element/service/perf_kpi.impl.go +++ /dev/null @@ -1,38 +0,0 @@ -package service - -import ( - "ems.agt/src/modules/network_element/model" - "ems.agt/src/modules/network_element/repository" -) - -// 实例化数据层 PerfKPIImpl 结构体 -var NewPerfKPIImpl = &PerfKPIImpl{ - perfKPIRepository: repository.NewPerfKPIImpl, -} - -// PerfKPIImpl 性能统计 数据层处理 -type PerfKPIImpl struct { - // 性能统计数据信息 - perfKPIRepository repository.IPerfKPI -} - -// SelectGoldKPI 通过网元指标数据信息 -func (r *PerfKPIImpl) SelectGoldKPI(query model.GoldKPIQuery) []map[string]any { - // 获取数据指标id - var kpiIds []string - kpiTitles := r.perfKPIRepository.SelectGoldKPITitle(query.NeType) - for _, kpiId := range kpiTitles { - kpiIds = append(kpiIds, kpiId.KPIID) - } - - data := r.perfKPIRepository.SelectGoldKPI(query, kpiIds) - if data == nil { - return []map[string]any{} - } - return data -} - -// SelectGoldKPITitle 通过网元指标数据信息 -func (r *PerfKPIImpl) SelectGoldKPITitle(neType string) []model.GoldKPITitle { - return r.perfKPIRepository.SelectGoldKPITitle(neType) -}