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 758a4b5a..19a6a1f 100644 Binary files a/src/assets/template/excel/user_import_template.xlsx and b/src/assets/template/excel/user_import_template.xlsx differ diff --git a/src/modules/crontask/processor/backupEtcFromNE/backupEtcFromNE.go b/src/modules/crontask/processor/backupEtcFromNE/backupEtcFromNE.go index fe70d4a..e602061 100644 --- a/src/modules/crontask/processor/backupEtcFromNE/backupEtcFromNE.go +++ b/src/modules/crontask/processor/backupEtcFromNE/backupEtcFromNE.go @@ -1,7 +1,6 @@ package backupEtcFromNE import ( - "encoding/json" "fmt" "os" "strings" @@ -40,17 +39,17 @@ func (s *BarProcessor) Execute(data any) (any, error) { options := data.(cron.JobData) sysJob := options.SysJob - var params BarParams + // var params BarParams - err := json.Unmarshal([]byte(sysJob.TargetParams), ¶ms) - if err != nil { - return nil, err - } + // err := json.Unmarshal([]byte(sysJob.TargetParams), ¶ms) + // if err != nil { + // return nil, err + // } log.Infof("Repeat %v Job ID %s", options.Repeat, sysJob.JobID) var nes []dborm.NeInfo - _, err = dborm.XormGetAllNeInfo(&nes) + _, err := dborm.XormGetAllNeInfo(&nes) if err != nil { return nil, err } @@ -83,7 +82,33 @@ func (s *BarProcessor) Execute(data any) (any, error) { var scpCmd string ipType := global.ParseIPAddr(neInfo.Ip) - if neTypeLower != "omc" { + omcNetypeLower := strings.ToLower(config.GetYamlConfig().OMC.NeType) + etcListIMS := "{*.yaml,mmtel,vars.cfg}" + if config.GetYamlConfig().NE.EtcListIMS != "" { + etcListIMS = config.GetYamlConfig().NE.EtcListIMS + } + switch neTypeLower { + case omcNetypeLower: + 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) + } 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) + } + + case "ims": + if ipType == global.IsIPv4 { + scpCmd = fmt.Sprintf("scp -r %s@%s:%s/%s/%s %s/etc/%s", config.GetYamlConfig().NE.User, + neInfo.Ip, config.GetYamlConfig().NE.EtcDir, neTypeLower, + etcListIMS, config.GetYamlConfig().OMC.Backup, neTypeLower) + } else { + scpCmd = fmt.Sprintf("scp -r %s@[%s]:%s/%s/%s %s/etc/%s", config.GetYamlConfig().NE.User, + 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/%s/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User, neInfo.Ip, config.GetYamlConfig().NE.EtcDir, @@ -93,14 +118,7 @@ func (s *BarProcessor) Execute(data any) (any, error) { neInfo.Ip, config.GetYamlConfig().NE.EtcDir, neTypeLower, config.GetYamlConfig().OMC.Backup, neTypeLower) } - } else { - 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) - } 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) - } + } zipFile := fmt.Sprintf("%s-%s-etc-%s.zip", neTypeLower, strings.ToLower(neInfo.NeId), time.Now().Format(global.DateData)) diff --git a/src/modules/monitor/controller/monitor.go b/src/modules/monitor/controller/monitor.go index a69efe7..0bb3281 100644 --- a/src/modules/monitor/controller/monitor.go +++ b/src/modules/monitor/controller/monitor.go @@ -25,8 +25,8 @@ type MonitorController struct { // GET /load func (s *MonitorController) Load(c *gin.Context) { var querys struct { - // 数据类型all/cpu/memory/io/network - Type string `form:"type" binding:"required,oneof=all cpu memory io network"` + // 数据类型all/load/cpu/memory/io/network + Type string `form:"type" binding:"required,oneof=all load cpu memory io network"` // 开始时间 StartTime int64 `form:"startTime" binding:"required"` // 结束时间 diff --git a/src/modules/monitor/model/monitor_network.go b/src/modules/monitor/model/monitor_network.go index b505880..a2063f1 100644 --- a/src/modules/monitor/model/monitor_network.go +++ b/src/modules/monitor/model/monitor_network.go @@ -12,9 +12,9 @@ type MonitorNetwork struct { Up float64 `json:"up"` // 下行 Down float64 `json:"down"` - // 网元ID + // 网元ID 本机#号 NeType string `json:"neType"` - // 网元类型 + // 网元类型 本机#号 NeID string `json:"neId"` } diff --git a/src/modules/monitor/repository/monitor.impl.go b/src/modules/monitor/repository/monitor.impl.go index c113be6..a538674 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 @@ -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) }