From 970167c76cd3a3ef1b6038c3ec564c733be5a41e Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Wed, 1 Nov 2023 19:20:18 +0800 Subject: [PATCH] =?UTF-8?q?marge:=20=E5=90=88=E5=B9=B6=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- features/cm/ne.go | 23 ++++---- features/dbrest/dbrest.go | 3 +- features/udm_user/api_udm_user.go | 14 +++-- features/udm_user/repo/repo_udm_auth_user.go | 1 + features/udm_user/repo/repo_udm_sub_user.go | 1 + lib/midware/operate_log.go | 7 +++ lib/routes/routes.go | 4 +- .../template/excel/user_import_template.xlsx | Bin 9441 -> 9463 bytes .../backupEtcFromNE/backupEtcFromNE.go | 50 ++++++++++++------ src/modules/monitor/controller/monitor.go | 4 +- src/modules/monitor/model/monitor_network.go | 4 +- .../monitor/repository/monitor.impl.go | 8 +-- src/modules/monitor/service/monitor.impl.go | 28 ++++++---- src/modules/system/controller/sys_user.go | 2 +- src/modules/system/service/sys_user.impl.go | 16 +++--- 15 files changed, 105 insertions(+), 60 deletions(-) diff --git a/features/cm/ne.go b/features/cm/ne.go index fd480da..363875e 100644 --- a/features/cm/ne.go +++ b/features/cm/ne.go @@ -431,14 +431,13 @@ func ExportCmFromNF(w http.ResponseWriter, r *http.Request) { switch neTypeLower { case omcNetypeLower: if ipType == global.IsIPv4 { - scpCmd = fmt.Sprintf("scp -r %s@%s:%s/%s/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User, - neInfo.Ip, config.GetYamlConfig().NE.EtcDir, - neTypeLower, config.GetYamlConfig().OMC.Backup, neTypeLower) + scpCmd = fmt.Sprintf("scp -r %s@%s:%s/etc/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User, + neInfo.Ip, config.GetYamlConfig().NE.OmcDir, config.GetYamlConfig().OMC.Backup, neTypeLower) } else { - scpCmd = fmt.Sprintf("scp -r %s@[%s]:%s/%s/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User, - neInfo.Ip, config.GetYamlConfig().NE.EtcDir, - neTypeLower, config.GetYamlConfig().OMC.Backup, neTypeLower) + scpCmd = fmt.Sprintf("scp -r %s@[%s]:%s/etc/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User, + neInfo.Ip, config.GetYamlConfig().NE.OmcDir, config.GetYamlConfig().OMC.Backup, neTypeLower) } + case "ims": if ipType == global.IsIPv4 { scpCmd = fmt.Sprintf("scp -r %s@%s:%s/%s/%s %s/etc/%s", config.GetYamlConfig().NE.User, @@ -449,14 +448,18 @@ func ExportCmFromNF(w http.ResponseWriter, r *http.Request) { neInfo.Ip, config.GetYamlConfig().NE.EtcDir, neTypeLower, etcListIMS, config.GetYamlConfig().OMC.Backup, neTypeLower) } + default: if ipType == global.IsIPv4 { - scpCmd = fmt.Sprintf("scp -r %s@%s:%s/etc/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User, - neInfo.Ip, config.GetYamlConfig().NE.OmcDir, config.GetYamlConfig().OMC.Backup, neTypeLower) + scpCmd = fmt.Sprintf("scp -r %s@%s:%s/%s/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User, + neInfo.Ip, config.GetYamlConfig().NE.EtcDir, + neTypeLower, config.GetYamlConfig().OMC.Backup, neTypeLower) } else { - scpCmd = fmt.Sprintf("scp -r %s@[%s]:%s/etc/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User, - neInfo.Ip, config.GetYamlConfig().NE.OmcDir, config.GetYamlConfig().OMC.Backup, neTypeLower) + scpCmd = fmt.Sprintf("scp -r %s@[%s]:%s/%s/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User, + neInfo.Ip, config.GetYamlConfig().NE.EtcDir, + neTypeLower, config.GetYamlConfig().OMC.Backup, neTypeLower) } + } zipFile := fmt.Sprintf("%s-%s-etc-%s.zip", neTypeLower, strings.ToLower(neInfo.NeId), time.Now().Format(global.DateData)) diff --git a/features/dbrest/dbrest.go b/features/dbrest/dbrest.go index a529794..fd16c79 100644 --- a/features/dbrest/dbrest.go +++ b/features/dbrest/dbrest.go @@ -61,8 +61,6 @@ var ( ) -var xormResponse XormResponse - var XEngine *xorm.Engine type DatabaseClient struct { @@ -101,6 +99,7 @@ func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) err DbClient.XEngine.SetMaxIdleConns(DbClient.dbMaxIdleConns) DbClient.XEngine.SetMaxOpenConns(DbClient.dbMaxOpenConns) if DbClient.IsShowSQL { + //DbClient.XEngine.SetLogger(&log.Elogger) DbClient.XEngine.ShowSQL(true) } XEngine = DbClient.XEngine diff --git a/features/udm_user/api_udm_user.go b/features/udm_user/api_udm_user.go index 0d8f16e..2a61b01 100644 --- a/features/udm_user/api_udm_user.go +++ b/features/udm_user/api_udm_user.go @@ -254,20 +254,26 @@ func (s *UdmUserApi) UdmAuthUserInfo(w http.ResponseWriter, r *http.Request) { ctx.JSON(w, 200, result.ErrMsg(err.Error())) return } + + // 查询数据库是否存在并存入 neId = "" var userInfo model.UdmAuthUser list := s.authUser.List(model.UdmAuthUser{NeID: neId, Imsi: imsi}) 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{ + 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)) @@ -655,6 +661,7 @@ func (s *UdmUserApi) UdmSubUserInfo(w http.ResponseWriter, r *http.Request) { return } + // 查询数据库是否存在并存入 neId = "" var userInfo model.UdmSubUser list := s.subUser.List(model.UdmSubUser{NeID: neId, Imsi: imsi}) @@ -663,7 +670,7 @@ func (s *UdmUserApi) UdmSubUserInfo(w http.ResponseWriter, r *http.Request) { } else { cnType, _ := strconv.ParseInt(data["CNType"][:4], 0, 64) rat, _ := strconv.ParseInt(data["RAT"][:4], 0, 64) - userInfo = model.UdmSubUser{ + userInfo := model.UdmSubUser{ Imsi: imsi, Msisdn: data["MSISDN"], Ambr: data["AMBR"], @@ -688,7 +695,6 @@ func (s *UdmUserApi) UdmSubUserInfo(w http.ResponseWriter, r *http.Request) { 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 1f3bf67..1f0c63f 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 202a53a..d7f5ead 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 440faa6..c1f5cf3 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 469d8f0..edda7df 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/assets/template/excel/user_import_template.xlsx b/src/assets/template/excel/user_import_template.xlsx index 758a4b5a6333e2c98c7444a10cc8af58556ce05c..19a6a1f6e7ef1d9f7883d257108ba3bec2876566 100644 GIT binary patch delta 4631 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 NpCmj6+8_V`0063uqIv)T delta 4591 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 ? 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 @@ -89,12 +89,14 @@ func (r *MonitorImpl) SelectMonitorNetwork(query map[string]any) []model.Monitor dbConn := r.db() if query["name"] != "" { dbConn = dbConn.Where("name = ?", query["name"]) + } else { + dbConn = dbConn.Where("name = ?", "all") } if query["neType"] != "" && query["neId"] != "" { 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 diff --git a/src/modules/monitor/service/monitor.impl.go b/src/modules/monitor/service/monitor.impl.go index 6defe4b..1430c97 100644 --- a/src/modules/monitor/service/monitor.impl.go +++ b/src/modules/monitor/service/monitor.impl.go @@ -37,23 +37,26 @@ type MonitorImpl struct { // RunMonitor 执行资源监控 func (s *MonitorImpl) RunMonitor() { - var itemModel model.MonitorBase - itemModel.CreateTime = time.Now().UnixMilli() + var itemBase model.MonitorBase + itemBase.CreateTime = time.Now().UnixMilli() + itemBase.NeType = "#" + itemBase.NeID = "#" totalPercent, _ := cpu.Percent(3*time.Second, false) if len(totalPercent) == 1 { - itemModel.CPU = totalPercent[0] + itemBase.CPU = totalPercent[0] } cpuCount, _ := cpu.Counts(false) loadInfo, _ := load.Avg() - itemModel.CPULoad1 = loadInfo.Load1 - itemModel.CPULoad5 = loadInfo.Load5 - itemModel.CPULoad15 = loadInfo.Load15 - itemModel.LoadUsage = loadInfo.Load1 / (float64(cpuCount*2) * 0.75) * 100 + itemBase.CPULoad1 = loadInfo.Load1 + itemBase.CPULoad5 = loadInfo.Load5 + itemBase.CPULoad15 = loadInfo.Load15 + itemBase.LoadUsage = loadInfo.Load1 / (float64(cpuCount*2) * 0.75) * 100 memoryInfo, _ := mem.VirtualMemory() - itemModel.Memory = memoryInfo.UsedPercent - if err := s.monitorRepository.CreateMonitorBase(itemModel); err != nil { + itemBase.Memory = memoryInfo.UsedPercent + + if err := s.monitorRepository.CreateMonitorBase(itemBase); err != nil { logger.Errorf("CreateMonitorBase err: %v", err) } @@ -128,7 +131,10 @@ func (s *MonitorImpl) saveIODataToDB(ctx context.Context, interval float64) { if io2.Name == io1.Name { var itemIO model.MonitorIO itemIO.CreateTime = timeMilli + itemIO.NeType = "#" + itemIO.NeID = "#" itemIO.Name = io1.Name + if io2.ReadBytes != 0 && io1.ReadBytes != 0 && io2.ReadBytes > io1.ReadBytes { itemIO.Read = int64(float64(io2.ReadBytes-io1.ReadBytes) / interval / 60) } @@ -189,6 +195,8 @@ func (s *MonitorImpl) saveNetDataToDB(ctx context.Context, interval float64) { if net2.Name == net1.Name { var itemNet model.MonitorNetwork itemNet.CreateTime = timeMilli + itemNet.NeType = "#" + itemNet.NeID = "#" itemNet.Name = net1.Name if net2.BytesSent != 0 && net1.BytesSent != 0 && net2.BytesSent > net1.BytesSent { @@ -225,7 +233,7 @@ func (s *MonitorImpl) SelectMonitorInfo(query map[string]any) map[string]any { backDatas := map[string]any{} // 基本信息 - if infoType == "all" || infoType == "cpu" || infoType == "memory" { + if infoType == "all" || infoType == "load" || infoType == "cpu" || infoType == "memory" { rows := s.monitorRepository.SelectMonitorBase(map[string]any{ "startTime": startTimeMilli, "endTime": endTimeMilli, diff --git a/src/modules/system/controller/sys_user.go b/src/modules/system/controller/sys_user.go index c6eafc6..07e670f 100644 --- a/src/modules/system/controller/sys_user.go +++ b/src/modules/system/controller/sys_user.go @@ -393,7 +393,7 @@ func (s *SysUserController) Export(c *gin.Context) { fileName := fmt.Sprintf("user_export_%d_%d.xlsx", len(rows), time.Now().UnixMilli()) // 第一行表头标题 headerCells := map[string]string{ - "A1": "用户序号", + "A1": "用户编号", "B1": "登录名称", "C1": "用户名称", "D1": "用户邮箱", diff --git a/src/modules/system/service/sys_user.impl.go b/src/modules/system/service/sys_user.impl.go index 666fbaf..99cd635 100644 --- a/src/modules/system/service/sys_user.impl.go +++ b/src/modules/system/service/sys_user.impl.go @@ -246,13 +246,13 @@ func (r *SysUserImpl) ImportUser(rows []map[string]string, isUpdateSupport bool, if regular.ValidMobile(newSysUser.PhoneNumber) { uniquePhone := r.CheckUniquePhone(newSysUser.PhoneNumber, "") if !uniquePhone { - msg := fmt.Sprintf("序号:%s 手机号码 %s 已存在", row["A"], row["E"]) + msg := fmt.Sprintf("用户编号:%s 手机号码 %s 已存在", row["A"], row["E"]) failureNum++ failureMsgArr = append(failureMsgArr, msg) continue } } else { - msg := fmt.Sprintf("序号:%s 手机号码 %s 格式错误", row["A"], row["E"]) + msg := fmt.Sprintf("用户编号:%s 手机号码 %s 格式错误", row["A"], row["E"]) failureNum++ failureMsgArr = append(failureMsgArr, msg) continue @@ -264,13 +264,13 @@ func (r *SysUserImpl) ImportUser(rows []map[string]string, isUpdateSupport bool, if regular.ValidEmail(newSysUser.Email) { uniqueEmail := r.CheckUniqueEmail(newSysUser.Email, "") if !uniqueEmail { - msg := fmt.Sprintf("序号:%s 用户邮箱 %s 已存在", row["A"], row["D"]) + msg := fmt.Sprintf("用户编号:%s 用户邮箱 %s 已存在", row["A"], row["D"]) failureNum++ failureMsgArr = append(failureMsgArr, msg) continue } } else { - msg := fmt.Sprintf("序号:%s 用户邮箱 %s 格式错误", row["A"], row["D"]) + msg := fmt.Sprintf("用户编号:%s 用户邮箱 %s 格式错误", row["A"], row["D"]) failureNum++ failureMsgArr = append(failureMsgArr, msg) continue @@ -283,11 +283,11 @@ func (r *SysUserImpl) ImportUser(rows []map[string]string, isUpdateSupport bool, newSysUser.CreateBy = operName insertId := r.InsertUser(newSysUser) if insertId != "" { - msg := fmt.Sprintf("序号:%s 登录名称 %s 导入成功", row["A"], row["B"]) + msg := fmt.Sprintf("用户编号:%s 登录名称 %s 导入成功", row["A"], row["B"]) successNum++ successMsgArr = append(successMsgArr, msg) } else { - msg := fmt.Sprintf("序号:%s 登录名称 %s 导入失败", row["A"], row["B"]) + msg := fmt.Sprintf("用户编号:%s 登录名称 %s 导入失败", row["A"], row["B"]) failureNum++ failureMsgArr = append(failureMsgArr, msg) } @@ -300,11 +300,11 @@ func (r *SysUserImpl) ImportUser(rows []map[string]string, isUpdateSupport bool, newSysUser.UpdateBy = operName rows := r.UpdateUser(newSysUser) if rows > 0 { - msg := fmt.Sprintf("序号:%s 登录名称 %s 更新成功", row["A"], row["B"]) + msg := fmt.Sprintf("用户编号:%s 登录名称 %s 更新成功", row["A"], row["B"]) successNum++ successMsgArr = append(successMsgArr, msg) } else { - msg := fmt.Sprintf("序号:%s 登录名称 %s 更新失败", row["A"], row["B"]) + msg := fmt.Sprintf("用户编号:%s 登录名称 %s 更新失败", row["A"], row["B"]) failureNum++ failureMsgArr = append(failureMsgArr, msg) }