diff --git a/features/ue/ims_user/service.go b/features/ue/ims_user/service.go index 311037bb..49051bc6 100644 --- a/features/ue/ims_user/service.go +++ b/features/ue/ims_user/service.go @@ -26,7 +26,7 @@ func (r *Service) dataByRedis(imsi, neId string) []VoLTEUser { source := fmt.Sprintf("UDM_%s", neId) // 网元主机的Redis客户端 - redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId) + redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId, 2) if err != nil { return arr } diff --git a/features/ue/service/ims_user.go b/features/ue/service/ims_user.go index d8bf8035..54ea45f5 100644 --- a/features/ue/service/ims_user.go +++ b/features/ue/service/ims_user.go @@ -28,7 +28,7 @@ func (r *IMSUserService) dataByRedis(imsi, neId string) []model.IMSUser { source := fmt.Sprintf("UDM_%s", neId) // 网元主机的Redis客户端 - redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId) + redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId, 2) if err != nil { return arr } diff --git a/features/ue/service/voip_auth.go b/features/ue/service/voip_auth.go index 2ffb2a76..0a68e8e3 100644 --- a/features/ue/service/voip_auth.go +++ b/features/ue/service/voip_auth.go @@ -28,7 +28,7 @@ func (r *VoIPAuthService) dataByRedis(userName, neId string) []model.VoIPAuth { source := fmt.Sprintf("UDM_%s", neId) // 网元主机的Redis客户端 - redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId) + redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId, 2) if err != nil { return arr } diff --git a/src/modules/crontask/processor/ne_alarm_state_check_udmdb_sync/ne_alarm_state_check_udmdb_sync.go b/src/modules/crontask/processor/ne_alarm_state_check_udmdb_sync/ne_alarm_state_check_udmdb_sync.go index 8fabd9a4..fcda5b52 100644 --- a/src/modules/crontask/processor/ne_alarm_state_check_udmdb_sync/ne_alarm_state_check_udmdb_sync.go +++ b/src/modules/crontask/processor/ne_alarm_state_check_udmdb_sync/ne_alarm_state_check_udmdb_sync.go @@ -66,19 +66,25 @@ func (s *NeAlarmStateCheckUDMDBProcessor) Execute(data any) (any, error) { return nil, fmt.Errorf("json params err: %v", err) } - neList := s.neInfoService.SelectList(neModel.NeInfo{NeType: "UDM"}, true, false) + neList := s.neInfoService.SelectList(neModel.NeInfo{NeType: "UDM"}, false, false) for _, neInfo := range neList { + warnMsg := []string{} // 检查状态 - err := s.serverState(neInfo) - if err == nil { + if err := s.serverState(neInfo.NeId, 2); err != nil { + warnMsg = append(warnMsg, err.Error()) + } + if err := s.serverState(neInfo.NeId, 3); err != nil { + warnMsg = append(warnMsg, err.Error()) + } + if len(warnMsg) == 0 { continue } // 附加信息 addInfo := params.AddInfo if addInfo != "" { - addInfo = addInfo + ", " + err.Error() + addInfo = addInfo + ", " + strings.Join(warnMsg, ", ") } else { - addInfo = err.Error() + addInfo = strings.Join(warnMsg, ", ") } neTypeAndId := fmt.Sprintf("%s_%s", neInfo.NeType, neInfo.NeId) @@ -128,12 +134,12 @@ func (s *NeAlarmStateCheckUDMDBProcessor) Execute(data any) (any, error) { } // serverState 网元状态 -func (s NeAlarmStateCheckUDMDBProcessor) serverState(neInfo neModel.NeInfo) error { +func (s NeAlarmStateCheckUDMDBProcessor) serverState(neId string, num int) error { // 网元主机的Redis客户端 - source := fmt.Sprintf("UDM_%s", neInfo.NeId) - redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neInfo.NeId) + source := fmt.Sprintf("UDM_%s", neId) + redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId, num) if err != nil { - return err + return nil } defer func() { redisClient.Close() diff --git a/src/modules/network_data/service/cdr_event_ims.go b/src/modules/network_data/service/cdr_event_ims.go index aa3e924b..3fc7bcee 100644 --- a/src/modules/network_data/service/cdr_event_ims.go +++ b/src/modules/network_data/service/cdr_event_ims.go @@ -256,7 +256,7 @@ func (r CDREventIMS) CDRMOSHour(rmUID string, timestamp int64) []map[string]any "timeGroup": fmt.Sprintf("%d", hour), "total": sums["total"], "mosSum": sums["mosSum"], - "mosAvg": sums["mosAvg"] / sums["total"], + "mosAvg": float64(int(sums["mosSum"]/sums["total"]*100)) / 100, }) } return data @@ -328,7 +328,7 @@ func (r CDREventIMS) CDRCCTHour(rmUID string, timestamp int64) []map[string]any "timeGroup": fmt.Sprintf("%d", hour), "total": sums["total"], "cctSum": sums["cctSum"], - "cctAvg": sums["cctSum"] / sums["total"], + "cctAvg": float64(int(sums["cctSum"]/sums["total"]*100)) / 100, }) } return data diff --git a/src/modules/network_data/service/udm_auth.go b/src/modules/network_data/service/udm_auth.go index eff6fc12..68a956bf 100644 --- a/src/modules/network_data/service/udm_auth.go +++ b/src/modules/network_data/service/udm_auth.go @@ -31,7 +31,7 @@ func (r *UDMAuthUser) dataByRedis(imsi, neId string) []model.UDMAuthUser { source := fmt.Sprintf("UDM_%s", neId) // 网元主机的Redis客户端 - redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId) + redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId, 2) if err != nil { return arr } diff --git a/src/modules/network_data/service/udm_sub.go b/src/modules/network_data/service/udm_sub.go index 6dbb395c..972b07ea 100644 --- a/src/modules/network_data/service/udm_sub.go +++ b/src/modules/network_data/service/udm_sub.go @@ -30,7 +30,7 @@ func (r *UDMSubUser) dataByRedis(imsi, neId string) []model.UDMSubUser { source := fmt.Sprintf("UDM_%s", neId) // 网元主机的Redis客户端 - redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId) + redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId, 2) if err != nil { return arr } diff --git a/src/modules/network_data/service/udm_voip.go b/src/modules/network_data/service/udm_voip.go index 10c95d92..e042a6c6 100644 --- a/src/modules/network_data/service/udm_voip.go +++ b/src/modules/network_data/service/udm_voip.go @@ -29,7 +29,7 @@ func (r UDMVOIPUser) dataByRedis(username, neId string) []model.UDMVOIPUser { source := fmt.Sprintf("UDM_%s", neId) // 网元主机的Redis客户端 - redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId) + redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId, 2) if err != nil { return arr } diff --git a/src/modules/network_data/service/udm_volte_ims.go b/src/modules/network_data/service/udm_volte_ims.go index a489933e..679f278d 100644 --- a/src/modules/network_data/service/udm_volte_ims.go +++ b/src/modules/network_data/service/udm_volte_ims.go @@ -29,7 +29,7 @@ func (r UDMVolteIMSUser) dataByRedis(imsi, neId string) []model.UDMVolteIMSUser source := fmt.Sprintf("UDM_%s", neId) // 网元主机的Redis客户端 - redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId) + redisClient, err := neService.NewNeInfo.NeRunRedisClient("UDM", neId, 2) if err != nil { return arr } diff --git a/src/modules/network_element/controller/ne_info.go b/src/modules/network_element/controller/ne_info.go index a951798b..882be124 100644 --- a/src/modules/network_element/controller/ne_info.go +++ b/src/modules/network_element/controller/ne_info.go @@ -411,7 +411,7 @@ func (s *NeInfoController) Add(c *gin.Context) { c.JSON(200, result.OkData(insertId)) return } - c.JSON(200, result.Err(nil)) + c.JSON(200, result.ErrMsg("please check the neType and neId")) } // 网元信息修改 diff --git a/src/modules/network_element/service/ne_info.go b/src/modules/network_element/service/ne_info.go index e1429250..9042eecd 100644 --- a/src/modules/network_element/service/ne_info.go +++ b/src/modules/network_element/service/ne_info.go @@ -271,9 +271,9 @@ func (r *NeInfo) SelectById(infoId string, bandHost bool) model.NeInfo { func (r *NeInfo) Insert(neInfo model.NeInfo) string { // 主机信息新增 if neInfo.Hosts != nil { - uuid := generate.Code(4) var hostIDs []string for _, host := range neInfo.Hosts { + uuid := generate.Code(4) host.Title = fmt.Sprintf("%s_%d_%s", neInfo.NeName, host.Port, uuid) host.GroupID = "1" host.CreateBy = neInfo.CreateBy @@ -297,9 +297,9 @@ func (r *NeInfo) Insert(neInfo model.NeInfo) string { func (r *NeInfo) Update(neInfo model.NeInfo) int64 { // 主机信息更新 if neInfo.Hosts != nil { - uuid := generate.Code(4) for _, host := range neInfo.Hosts { if host.HostID != "" { + uuid := generate.Code(4) host.Title = fmt.Sprintf("%s_%d_%s", neInfo.NeName, host.Port, uuid) host.GroupID = "1" host.UpdateBy = neInfo.UpdateBy @@ -461,7 +461,8 @@ func (r *NeInfo) NeRunTelnetClient(neType, neId string, num int) (*telnet.ConnTe // NeRunRedisClient 网元主机的Redis客户端-为创建相关连接,注意结束后 Close() // 暂时只有UDM有Redis配置项 -func (r *NeInfo) NeRunRedisClient(neType, neId string) (*redis.ConnRedis, error) { +// num 是redis 2:master 3:slave +func (r *NeInfo) NeRunRedisClient(neType, neId string, num int) (*redis.ConnRedis, error) { neInfo := r.SelectNeInfoByNeTypeAndNeID(neType, neId) if neInfo.NeId != neId { logger.Errorf("NeRunRedisClient NeType:%s NeID:%s not found", neType, neId) @@ -474,10 +475,14 @@ func (r *NeInfo) NeRunRedisClient(neType, neId string) (*redis.ConnRedis, error) } hostIds := strings.Split(neInfo.HostIDs, ",") if len(hostIds) <= 2 { - logger.Errorf("NeRunRedisClient hosts id %s not found", neInfo.HostIDs) + logger.Errorf("NeRunRedisClient hosts id %s not found %d", neInfo.HostIDs, num) return nil, fmt.Errorf("neinfo host id not found") } - hostId := hostIds[2] + if len(hostIds) == 3 && num == 3 { + logger.Errorf("NeRunRedisClient hosts id %s not found %d", neInfo.HostIDs, num) + return nil, fmt.Errorf("neinfo host id not found") + } + hostId := hostIds[num] neHost := NewNeHost.SelectById(hostId) if neHost.HostID == "" || neHost.HostID != hostId { logger.Errorf("NeRunRedisClient Hosts %s not found", neInfo.HostIDs)