diff --git a/database/upgrade/zupgrade.sql b/database/upgrade/zupgrade.sql index dd45fba1..76628d04 100644 --- a/database/upgrade/zupgrade.sql +++ b/database/upgrade/zupgrade.sql @@ -98,3 +98,7 @@ DELETE FROM ne_license WHERE file_name IS NULL; ALTER TABLE `omc_db`.`trace_data` ADD COLUMN IF NOT EXISTS `length` int NULL AFTER `msg_direct`; +-- UDM签约存储长度不足 +ALTER TABLE `omc_db`.`u_sub_user` +MODIFY COLUMN `sm_data` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'smData' AFTER `cn`, +MODIFY COLUMN `eps_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'Eps' AFTER `smf_sel`; diff --git a/database/upgvue3/zupgrade.sql b/database/upgvue3/zupgrade.sql index dd45fba1..76628d04 100644 --- a/database/upgvue3/zupgrade.sql +++ b/database/upgvue3/zupgrade.sql @@ -98,3 +98,7 @@ DELETE FROM ne_license WHERE file_name IS NULL; ALTER TABLE `omc_db`.`trace_data` ADD COLUMN IF NOT EXISTS `length` int NULL AFTER `msg_direct`; +-- UDM签约存储长度不足 +ALTER TABLE `omc_db`.`u_sub_user` +MODIFY COLUMN `sm_data` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'smData' AFTER `cn`, +MODIFY COLUMN `eps_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'Eps' AFTER `smf_sel`; diff --git a/features/udm_user/api_udm_user.go b/features/udm_user/api_udm_user.go index 5216e297..2a61b010 100644 --- a/features/udm_user/api_udm_user.go +++ b/features/udm_user/api_udm_user.go @@ -254,18 +254,26 @@ func (s *UdmUserApi) UdmAuthUserInfo(w http.ResponseWriter, r *http.Request) { ctx.JSON(w, 200, result.ErrMsg(err.Error())) return } - // 返回查询的用户信息 - userInfo := model.UdmAuthUser{ - Imsi: imsi, - Amf: data["amf"], - AlgoIndex: data["algo"], - Opc: data["opc"], - Ki: data["ki"], - } + // 查询数据库是否存在并存入 neId = "" + var userInfo model.UdmAuthUser list := s.authUser.List(model.UdmAuthUser{NeID: neId, Imsi: imsi}) - if len(list) == 0 { + if len(list) > 0 { + userInfo = list[0] + // 返回查询的用户信息 + userInfo.Amf = data["amf"] + userInfo.AlgoIndex = data["algo"] + userInfo.Opc = data["opc"] + userInfo.Ki = data["ki"] + } else { + userInfo := model.UdmAuthUser{ + Imsi: imsi, + Amf: data["amf"], + AlgoIndex: data["algo"], + Opc: data["opc"], + Ki: data["ki"], + } s.authUser.Insert(neId, userInfo) } ctx.JSON(w, 200, result.OkData(userInfo)) @@ -653,39 +661,40 @@ func (s *UdmUserApi) UdmSubUserInfo(w http.ResponseWriter, r *http.Request) { return } - // 返回查询的用户信息 - cnType, _ := strconv.ParseInt(data["CNType"][:4], 0, 64) - rat, _ := strconv.ParseInt(data["RAT"][:4], 0, 64) - userInfo := model.UdmSubUser{ - Imsi: imsi, - Msisdn: data["MSISDN"], - Ambr: data["AMBR"], - Arfb: data["AreaForbidden"], - Cn: fmt.Sprint(cnType), - SmData: data["SM-Data(snssai+dnn[1..n])"], - Sar: data["ServiceAreaRestriction"], - Nssai: data["NSSAI"], - SmfSel: data["Smf-Selection"], - Rat: fmt.Sprint(rat), - } - // 1,64,24,65,def_eps,1,2,010200000000,- - if v, ok := data["EPS-Data"]; ok { - userInfo.EpsDat = v - arr := strings.Split(v, ",") - userInfo.EpsFlag = arr[0] - userInfo.EpsOdb = arr[1] - userInfo.HplmnOdb = arr[2] - userInfo.Ard = arr[3] - userInfo.Epstpl = arr[4] - userInfo.ContextId = arr[5] - userInfo.ApnContext = arr[7] - userInfo.StaticIp = arr[8] - } - // 查询数据库是否存在并存入 neId = "" + var userInfo model.UdmSubUser list := s.subUser.List(model.UdmSubUser{NeID: neId, Imsi: imsi}) - if len(list) == 0 { + if len(list) > 0 { + userInfo = list[0] + } else { + cnType, _ := strconv.ParseInt(data["CNType"][:4], 0, 64) + rat, _ := strconv.ParseInt(data["RAT"][:4], 0, 64) + userInfo := model.UdmSubUser{ + Imsi: imsi, + Msisdn: data["MSISDN"], + Ambr: data["AMBR"], + Arfb: data["AreaForbidden"], + Cn: fmt.Sprint(cnType), + SmData: data["SM-Data(snssai+dnn[1..n])"], + Sar: data["ServiceAreaRestriction"], + Nssai: data["NSSAI"], + SmfSel: data["Smf-Selection"], + Rat: fmt.Sprint(rat), + } + // 1,64,24,65,def_eps,1,2,010200000000,- + if v, ok := data["EPS-Data"]; ok { + userInfo.EpsDat = v + arr := strings.Split(v, ",") + userInfo.EpsFlag = arr[0] + userInfo.EpsOdb = arr[1] + userInfo.HplmnOdb = arr[2] + userInfo.Ard = arr[3] + userInfo.Epstpl = arr[4] + userInfo.ContextId = arr[5] + userInfo.ApnContext = arr[7] + userInfo.StaticIp = arr[8] + } s.subUser.Insert(neId, userInfo) } ctx.JSON(w, 200, result.OkData(userInfo)) diff --git a/features/udm_user/repo/repo_udm_auth_user.go b/features/udm_user/repo/repo_udm_auth_user.go index 1f3bf672..1f0c63fa 100644 --- a/features/udm_user/repo/repo_udm_auth_user.go +++ b/features/udm_user/repo/repo_udm_auth_user.go @@ -177,6 +177,7 @@ func (r *RepoUdmAuthUser) ClearAndInsert(neID string, authArr []model.UdmAuthUse // 调用 InsertMulti 函数将批量数据插入数据库 results, err := datasource.DefaultDB().Table("u_auth_user").InsertMulti(batch) if err != nil { + log.Errorf("InsertMulti err => %v", err) continue } num += results diff --git a/features/udm_user/repo/repo_udm_sub_user.go b/features/udm_user/repo/repo_udm_sub_user.go index 202a53a9..d7f5ead9 100644 --- a/features/udm_user/repo/repo_udm_sub_user.go +++ b/features/udm_user/repo/repo_udm_sub_user.go @@ -196,6 +196,7 @@ func (r *RepoUdmSubUser) ClearAndInsert(neID string, subArr []model.UdmSubUser) // 调用 InsertMulti 函数将批量数据插入数据库 results, err := datasource.DefaultDB().Table("u_sub_user").InsertMulti(batch) if err != nil { + log.Errorf("InsertMulti err => %v", err) continue } num += results diff --git a/lib/midware/operate_log.go b/lib/midware/operate_log.go index 440faa62..c1f5cf30 100644 --- a/lib/midware/operate_log.go +++ b/lib/midware/operate_log.go @@ -34,6 +34,13 @@ func LogOperate(options collectlogs.Options) func(http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { startTime := time.Now() + // 只对前端发送的数据进行记录 + appCodeStr := r.Header.Get("X-App-Code") + if appCodeStr == "" { + next.ServeHTTP(w, r) + return + } + // 函数名 funcName := runtime.FuncForPC(reflect.ValueOf(next).Pointer()).Name() lastDotIndex := strings.LastIndex(funcName, "/") diff --git a/lib/routes/routes.go b/lib/routes/routes.go index 469d8f00..edda7df8 100644 --- a/lib/routes/routes.go +++ b/lib/routes/routes.go @@ -110,14 +110,14 @@ func init() { Register("DELETE", dbrest.CustomXormExtDataUri, dbrest.ExtDatabaseDeleteData, nil) // alarm restful Register - Register("POST", fm.UriAlarms, fm.PostAlarmFromNF, midware.LogOperate(collectlogs.OptionNew("Alarm", collectlogs.BUSINESS_TYPE_UPDATE))) + Register("POST", fm.UriAlarms, fm.PostAlarmFromNF, nil) Register("Get", fm.UriAlarms, fm.GetAlarmFromNF, nil) Register("POST", fm.CustomUriAlarms, fm.PostAlarmFromNF, nil) Register("Get", fm.CustomUriAlarms, fm.GetAlarmFromNF, nil) // performance restful Register - Register("POST", pm.PerformanceUri, pm.PostKPIReportFromNF, midware.LogOperate(collectlogs.OptionNew("KPIReport", collectlogs.BUSINESS_TYPE_INSERT))) + Register("POST", pm.PerformanceUri, pm.PostKPIReportFromNF, nil) Register("POST", pm.MeasureTaskUri, pm.PostMeasureTaskToNF, midware.LogOperate(collectlogs.OptionNew("MeasureTask", collectlogs.BUSINESS_TYPE_INSERT))) Register("PUT", pm.MeasureTaskUri, pm.PutMeasureTaskToNF, midware.LogOperate(collectlogs.OptionNew("MeasureTask", collectlogs.BUSINESS_TYPE_UPDATE))) Register("DELETE", pm.MeasureTaskUri, pm.DeleteMeasureTaskToNF, midware.LogOperate(collectlogs.OptionNew("MeasureTask", collectlogs.BUSINESS_TYPE_DELETE))) diff --git a/src/modules/monitor/repository/monitor.impl.go b/src/modules/monitor/repository/monitor.impl.go index c113be63..5c94abd9 100644 --- a/src/modules/monitor/repository/monitor.impl.go +++ b/src/modules/monitor/repository/monitor.impl.go @@ -36,7 +36,7 @@ func (r *MonitorImpl) SelectMonitorBase(query map[string]any) []model.MonitorBas dbConn = dbConn.Where("ne_type = ? and ne_id = ?", query["neType"], query["neId"]) } dbConn = dbConn.Where("create_time >= ? and create_time <= ?", query["startTime"], query["endTime"]) - err := dbConn.Order("create_time desc").Find(&bases).Error + err := dbConn.Order("create_time asc").Find(&bases).Error if err != nil { logger.Errorf("SelectMonitorBase %v", err) return bases @@ -65,7 +65,7 @@ func (r *MonitorImpl) SelectMonitorIO(query map[string]any) []model.MonitorIO { dbConn = dbConn.Where("ne_type = ? and ne_id = ?", query["neType"], query["neId"]) } dbConn = dbConn.Where("create_time >= ? and create_time <= ?", query["startTime"], query["endTime"]) - err := dbConn.Order("create_time desc").Find(&ios).Error + err := dbConn.Order("create_time asc").Find(&ios).Error if err != nil { logger.Errorf("SelectMonitorIO %v", err) return ios @@ -94,7 +94,7 @@ func (r *MonitorImpl) SelectMonitorNetwork(query map[string]any) []model.Monitor dbConn = dbConn.Where("ne_type = ? and ne_id = ?", query["neType"], query["neId"]) } dbConn = dbConn.Where("create_time >= ? and create_time <= ?", query["startTime"], query["endTime"]) - err := dbConn.Order("create_time desc").Find(&networks).Error + err := dbConn.Order("create_time asc").Find(&networks).Error if err != nil { logger.Errorf("SelectMonitorNetwork %v", err) return networks