1
0

marge: 合并代码

This commit is contained in:
TsMask
2023-11-01 19:20:18 +08:00
parent f8bf36f94b
commit 970167c76c
15 changed files with 105 additions and 60 deletions

View File

@@ -431,14 +431,13 @@ func ExportCmFromNF(w http.ResponseWriter, r *http.Request) {
switch neTypeLower { switch neTypeLower {
case omcNetypeLower: case omcNetypeLower:
if ipType == global.IsIPv4 { if ipType == global.IsIPv4 {
scpCmd = fmt.Sprintf("scp -r %s@%s:%s/%s/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User, scpCmd = fmt.Sprintf("scp -r %s@%s:%s/etc/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User,
neInfo.Ip, config.GetYamlConfig().NE.EtcDir, neInfo.Ip, config.GetYamlConfig().NE.OmcDir, config.GetYamlConfig().OMC.Backup, neTypeLower)
neTypeLower, config.GetYamlConfig().OMC.Backup, neTypeLower)
} else { } else {
scpCmd = fmt.Sprintf("scp -r %s@[%s]:%s/%s/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User, scpCmd = fmt.Sprintf("scp -r %s@[%s]:%s/etc/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User,
neInfo.Ip, config.GetYamlConfig().NE.EtcDir, neInfo.Ip, config.GetYamlConfig().NE.OmcDir, config.GetYamlConfig().OMC.Backup, neTypeLower)
neTypeLower, config.GetYamlConfig().OMC.Backup, neTypeLower)
} }
case "ims": case "ims":
if ipType == global.IsIPv4 { if ipType == global.IsIPv4 {
scpCmd = fmt.Sprintf("scp -r %s@%s:%s/%s/%s %s/etc/%s", config.GetYamlConfig().NE.User, 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, neInfo.Ip, config.GetYamlConfig().NE.EtcDir, neTypeLower,
etcListIMS, config.GetYamlConfig().OMC.Backup, neTypeLower) etcListIMS, config.GetYamlConfig().OMC.Backup, neTypeLower)
} }
default: default:
if ipType == global.IsIPv4 { if ipType == global.IsIPv4 {
scpCmd = fmt.Sprintf("scp -r %s@%s:%s/etc/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User, scpCmd = fmt.Sprintf("scp -r %s@%s:%s/%s/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User,
neInfo.Ip, config.GetYamlConfig().NE.OmcDir, config.GetYamlConfig().OMC.Backup, neTypeLower) neInfo.Ip, config.GetYamlConfig().NE.EtcDir,
neTypeLower, config.GetYamlConfig().OMC.Backup, neTypeLower)
} else { } else {
scpCmd = fmt.Sprintf("scp -r %s@[%s]:%s/etc/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User, scpCmd = fmt.Sprintf("scp -r %s@[%s]:%s/%s/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User,
neInfo.Ip, config.GetYamlConfig().NE.OmcDir, config.GetYamlConfig().OMC.Backup, neTypeLower) 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)) zipFile := fmt.Sprintf("%s-%s-etc-%s.zip", neTypeLower, strings.ToLower(neInfo.NeId), time.Now().Format(global.DateData))

View File

@@ -61,8 +61,6 @@ var (
) )
var xormResponse XormResponse
var XEngine *xorm.Engine var XEngine *xorm.Engine
type DatabaseClient struct { type DatabaseClient struct {
@@ -101,6 +99,7 @@ func InitDbClient(dbType, dbUser, dbPassword, dbHost, dbPort, dbName string) err
DbClient.XEngine.SetMaxIdleConns(DbClient.dbMaxIdleConns) DbClient.XEngine.SetMaxIdleConns(DbClient.dbMaxIdleConns)
DbClient.XEngine.SetMaxOpenConns(DbClient.dbMaxOpenConns) DbClient.XEngine.SetMaxOpenConns(DbClient.dbMaxOpenConns)
if DbClient.IsShowSQL { if DbClient.IsShowSQL {
//DbClient.XEngine.SetLogger(&log.Elogger)
DbClient.XEngine.ShowSQL(true) DbClient.XEngine.ShowSQL(true)
} }
XEngine = DbClient.XEngine XEngine = DbClient.XEngine

View File

@@ -254,20 +254,26 @@ func (s *UdmUserApi) UdmAuthUserInfo(w http.ResponseWriter, r *http.Request) {
ctx.JSON(w, 200, result.ErrMsg(err.Error())) ctx.JSON(w, 200, result.ErrMsg(err.Error()))
return return
} }
// 查询数据库是否存在并存入
neId = "" neId = ""
var userInfo model.UdmAuthUser var userInfo model.UdmAuthUser
list := s.authUser.List(model.UdmAuthUser{NeID: neId, Imsi: imsi}) list := s.authUser.List(model.UdmAuthUser{NeID: neId, Imsi: imsi})
if len(list) > 0 { if len(list) > 0 {
userInfo = list[0] userInfo = list[0]
// 返回查询的用户信息
userInfo.Amf = data["amf"]
userInfo.AlgoIndex = data["algo"]
userInfo.Opc = data["opc"]
userInfo.Ki = data["ki"]
} else { } else {
userInfo = model.UdmAuthUser{ userInfo := model.UdmAuthUser{
Imsi: imsi, Imsi: imsi,
Amf: data["amf"], Amf: data["amf"],
AlgoIndex: data["algo"], AlgoIndex: data["algo"],
Opc: data["opc"], Opc: data["opc"],
Ki: data["ki"], Ki: data["ki"],
} }
s.authUser.Insert(neId, userInfo) s.authUser.Insert(neId, userInfo)
} }
ctx.JSON(w, 200, result.OkData(userInfo)) ctx.JSON(w, 200, result.OkData(userInfo))
@@ -655,6 +661,7 @@ func (s *UdmUserApi) UdmSubUserInfo(w http.ResponseWriter, r *http.Request) {
return return
} }
// 查询数据库是否存在并存入
neId = "" neId = ""
var userInfo model.UdmSubUser var userInfo model.UdmSubUser
list := s.subUser.List(model.UdmSubUser{NeID: neId, Imsi: imsi}) 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 { } else {
cnType, _ := strconv.ParseInt(data["CNType"][:4], 0, 64) cnType, _ := strconv.ParseInt(data["CNType"][:4], 0, 64)
rat, _ := strconv.ParseInt(data["RAT"][:4], 0, 64) rat, _ := strconv.ParseInt(data["RAT"][:4], 0, 64)
userInfo = model.UdmSubUser{ userInfo := model.UdmSubUser{
Imsi: imsi, Imsi: imsi,
Msisdn: data["MSISDN"], Msisdn: data["MSISDN"],
Ambr: data["AMBR"], Ambr: data["AMBR"],
@@ -688,7 +695,6 @@ func (s *UdmUserApi) UdmSubUserInfo(w http.ResponseWriter, r *http.Request) {
userInfo.ApnContext = arr[7] userInfo.ApnContext = arr[7]
userInfo.StaticIp = arr[8] userInfo.StaticIp = arr[8]
} }
s.subUser.Insert(neId, userInfo) s.subUser.Insert(neId, userInfo)
} }
ctx.JSON(w, 200, result.OkData(userInfo)) ctx.JSON(w, 200, result.OkData(userInfo))

View File

@@ -177,6 +177,7 @@ func (r *RepoUdmAuthUser) ClearAndInsert(neID string, authArr []model.UdmAuthUse
// 调用 InsertMulti 函数将批量数据插入数据库 // 调用 InsertMulti 函数将批量数据插入数据库
results, err := datasource.DefaultDB().Table("u_auth_user").InsertMulti(batch) results, err := datasource.DefaultDB().Table("u_auth_user").InsertMulti(batch)
if err != nil { if err != nil {
log.Errorf("InsertMulti err => %v", err)
continue continue
} }
num += results num += results

View File

@@ -196,6 +196,7 @@ func (r *RepoUdmSubUser) ClearAndInsert(neID string, subArr []model.UdmSubUser)
// 调用 InsertMulti 函数将批量数据插入数据库 // 调用 InsertMulti 函数将批量数据插入数据库
results, err := datasource.DefaultDB().Table("u_sub_user").InsertMulti(batch) results, err := datasource.DefaultDB().Table("u_sub_user").InsertMulti(batch)
if err != nil { if err != nil {
log.Errorf("InsertMulti err => %v", err)
continue continue
} }
num += results num += results

View File

@@ -34,6 +34,13 @@ func LogOperate(options collectlogs.Options) func(http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
startTime := time.Now() 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() funcName := runtime.FuncForPC(reflect.ValueOf(next).Pointer()).Name()
lastDotIndex := strings.LastIndex(funcName, "/") lastDotIndex := strings.LastIndex(funcName, "/")

View File

@@ -110,14 +110,14 @@ func init() {
Register("DELETE", dbrest.CustomXormExtDataUri, dbrest.ExtDatabaseDeleteData, nil) Register("DELETE", dbrest.CustomXormExtDataUri, dbrest.ExtDatabaseDeleteData, nil)
// alarm restful Register // 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("Get", fm.UriAlarms, fm.GetAlarmFromNF, nil)
Register("POST", fm.CustomUriAlarms, fm.PostAlarmFromNF, nil) Register("POST", fm.CustomUriAlarms, fm.PostAlarmFromNF, nil)
Register("Get", fm.CustomUriAlarms, fm.GetAlarmFromNF, nil) Register("Get", fm.CustomUriAlarms, fm.GetAlarmFromNF, nil)
// performance restful Register // 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("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("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))) Register("DELETE", pm.MeasureTaskUri, pm.DeleteMeasureTaskToNF, midware.LogOperate(collectlogs.OptionNew("MeasureTask", collectlogs.BUSINESS_TYPE_DELETE)))

View File

@@ -1,7 +1,6 @@
package backupEtcFromNE package backupEtcFromNE
import ( import (
"encoding/json"
"fmt" "fmt"
"os" "os"
"strings" "strings"
@@ -40,17 +39,17 @@ func (s *BarProcessor) Execute(data any) (any, error) {
options := data.(cron.JobData) options := data.(cron.JobData)
sysJob := options.SysJob sysJob := options.SysJob
var params BarParams // var params BarParams
err := json.Unmarshal([]byte(sysJob.TargetParams), &params) // err := json.Unmarshal([]byte(sysJob.TargetParams), &params)
if err != nil { // if err != nil {
return nil, err // return nil, err
} // }
log.Infof("Repeat %v Job ID %s", options.Repeat, sysJob.JobID) log.Infof("Repeat %v Job ID %s", options.Repeat, sysJob.JobID)
var nes []dborm.NeInfo var nes []dborm.NeInfo
_, err = dborm.XormGetAllNeInfo(&nes) _, err := dborm.XormGetAllNeInfo(&nes)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -83,7 +82,33 @@ func (s *BarProcessor) Execute(data any) (any, error) {
var scpCmd string var scpCmd string
ipType := global.ParseIPAddr(neInfo.Ip) 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 { if ipType == global.IsIPv4 {
scpCmd = fmt.Sprintf("scp -r %s@%s:%s/%s/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User, scpCmd = fmt.Sprintf("scp -r %s@%s:%s/%s/*.yaml %s/etc/%s", config.GetYamlConfig().NE.User,
neInfo.Ip, config.GetYamlConfig().NE.EtcDir, neInfo.Ip, config.GetYamlConfig().NE.EtcDir,
@@ -93,14 +118,7 @@ func (s *BarProcessor) Execute(data any) (any, error) {
neInfo.Ip, config.GetYamlConfig().NE.EtcDir, neInfo.Ip, config.GetYamlConfig().NE.EtcDir,
neTypeLower, config.GetYamlConfig().OMC.Backup, neTypeLower) 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)) zipFile := fmt.Sprintf("%s-%s-etc-%s.zip", neTypeLower, strings.ToLower(neInfo.NeId), time.Now().Format(global.DateData))

View File

@@ -25,8 +25,8 @@ type MonitorController struct {
// GET /load // GET /load
func (s *MonitorController) Load(c *gin.Context) { func (s *MonitorController) Load(c *gin.Context) {
var querys struct { var querys struct {
// 数据类型all/cpu/memory/io/network // 数据类型all/load/cpu/memory/io/network
Type string `form:"type" binding:"required,oneof=all cpu memory io network"` Type string `form:"type" binding:"required,oneof=all load cpu memory io network"`
// 开始时间 // 开始时间
StartTime int64 `form:"startTime" binding:"required"` StartTime int64 `form:"startTime" binding:"required"`
// 结束时间 // 结束时间

View File

@@ -12,9 +12,9 @@ type MonitorNetwork struct {
Up float64 `json:"up"` Up float64 `json:"up"`
// 下行 // 下行
Down float64 `json:"down"` Down float64 `json:"down"`
// 网元ID // 网元ID 本机#号
NeType string `json:"neType"` NeType string `json:"neType"`
// 网元类型 // 网元类型 本机#号
NeID string `json:"neId"` NeID string `json:"neId"`
} }

View File

@@ -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("ne_type = ? and ne_id = ?", query["neType"], query["neId"])
} }
dbConn = dbConn.Where("create_time >= ? and create_time <= ?", query["startTime"], query["endTime"]) 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 { if err != nil {
logger.Errorf("SelectMonitorBase %v", err) logger.Errorf("SelectMonitorBase %v", err)
return bases 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("ne_type = ? and ne_id = ?", query["neType"], query["neId"])
} }
dbConn = dbConn.Where("create_time >= ? and create_time <= ?", query["startTime"], query["endTime"]) 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 { if err != nil {
logger.Errorf("SelectMonitorIO %v", err) logger.Errorf("SelectMonitorIO %v", err)
return ios return ios
@@ -89,12 +89,14 @@ func (r *MonitorImpl) SelectMonitorNetwork(query map[string]any) []model.Monitor
dbConn := r.db() dbConn := r.db()
if query["name"] != "" { if query["name"] != "" {
dbConn = dbConn.Where("name = ?", query["name"]) dbConn = dbConn.Where("name = ?", query["name"])
} else {
dbConn = dbConn.Where("name = ?", "all")
} }
if query["neType"] != "" && query["neId"] != "" { if query["neType"] != "" && query["neId"] != "" {
dbConn = dbConn.Where("ne_type = ? and ne_id = ?", 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"]) 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 { if err != nil {
logger.Errorf("SelectMonitorNetwork %v", err) logger.Errorf("SelectMonitorNetwork %v", err)
return networks return networks

View File

@@ -37,23 +37,26 @@ type MonitorImpl struct {
// RunMonitor 执行资源监控 // RunMonitor 执行资源监控
func (s *MonitorImpl) RunMonitor() { func (s *MonitorImpl) RunMonitor() {
var itemModel model.MonitorBase var itemBase model.MonitorBase
itemModel.CreateTime = time.Now().UnixMilli() itemBase.CreateTime = time.Now().UnixMilli()
itemBase.NeType = "#"
itemBase.NeID = "#"
totalPercent, _ := cpu.Percent(3*time.Second, false) totalPercent, _ := cpu.Percent(3*time.Second, false)
if len(totalPercent) == 1 { if len(totalPercent) == 1 {
itemModel.CPU = totalPercent[0] itemBase.CPU = totalPercent[0]
} }
cpuCount, _ := cpu.Counts(false) cpuCount, _ := cpu.Counts(false)
loadInfo, _ := load.Avg() loadInfo, _ := load.Avg()
itemModel.CPULoad1 = loadInfo.Load1 itemBase.CPULoad1 = loadInfo.Load1
itemModel.CPULoad5 = loadInfo.Load5 itemBase.CPULoad5 = loadInfo.Load5
itemModel.CPULoad15 = loadInfo.Load15 itemBase.CPULoad15 = loadInfo.Load15
itemModel.LoadUsage = loadInfo.Load1 / (float64(cpuCount*2) * 0.75) * 100 itemBase.LoadUsage = loadInfo.Load1 / (float64(cpuCount*2) * 0.75) * 100
memoryInfo, _ := mem.VirtualMemory() memoryInfo, _ := mem.VirtualMemory()
itemModel.Memory = memoryInfo.UsedPercent itemBase.Memory = memoryInfo.UsedPercent
if err := s.monitorRepository.CreateMonitorBase(itemModel); err != nil {
if err := s.monitorRepository.CreateMonitorBase(itemBase); err != nil {
logger.Errorf("CreateMonitorBase err: %v", err) logger.Errorf("CreateMonitorBase err: %v", err)
} }
@@ -128,7 +131,10 @@ func (s *MonitorImpl) saveIODataToDB(ctx context.Context, interval float64) {
if io2.Name == io1.Name { if io2.Name == io1.Name {
var itemIO model.MonitorIO var itemIO model.MonitorIO
itemIO.CreateTime = timeMilli itemIO.CreateTime = timeMilli
itemIO.NeType = "#"
itemIO.NeID = "#"
itemIO.Name = io1.Name itemIO.Name = io1.Name
if io2.ReadBytes != 0 && io1.ReadBytes != 0 && io2.ReadBytes > io1.ReadBytes { if io2.ReadBytes != 0 && io1.ReadBytes != 0 && io2.ReadBytes > io1.ReadBytes {
itemIO.Read = int64(float64(io2.ReadBytes-io1.ReadBytes) / interval / 60) 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 { if net2.Name == net1.Name {
var itemNet model.MonitorNetwork var itemNet model.MonitorNetwork
itemNet.CreateTime = timeMilli itemNet.CreateTime = timeMilli
itemNet.NeType = "#"
itemNet.NeID = "#"
itemNet.Name = net1.Name itemNet.Name = net1.Name
if net2.BytesSent != 0 && net1.BytesSent != 0 && net2.BytesSent > net1.BytesSent { 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{} 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{ rows := s.monitorRepository.SelectMonitorBase(map[string]any{
"startTime": startTimeMilli, "startTime": startTimeMilli,
"endTime": endTimeMilli, "endTime": endTimeMilli,

View File

@@ -393,7 +393,7 @@ func (s *SysUserController) Export(c *gin.Context) {
fileName := fmt.Sprintf("user_export_%d_%d.xlsx", len(rows), time.Now().UnixMilli()) fileName := fmt.Sprintf("user_export_%d_%d.xlsx", len(rows), time.Now().UnixMilli())
// 第一行表头标题 // 第一行表头标题
headerCells := map[string]string{ headerCells := map[string]string{
"A1": "用户号", "A1": "用户号",
"B1": "登录名称", "B1": "登录名称",
"C1": "用户名称", "C1": "用户名称",
"D1": "用户邮箱", "D1": "用户邮箱",

View File

@@ -246,13 +246,13 @@ func (r *SysUserImpl) ImportUser(rows []map[string]string, isUpdateSupport bool,
if regular.ValidMobile(newSysUser.PhoneNumber) { if regular.ValidMobile(newSysUser.PhoneNumber) {
uniquePhone := r.CheckUniquePhone(newSysUser.PhoneNumber, "") uniquePhone := r.CheckUniquePhone(newSysUser.PhoneNumber, "")
if !uniquePhone { if !uniquePhone {
msg := fmt.Sprintf("号:%s 手机号码 %s 已存在", row["A"], row["E"]) msg := fmt.Sprintf("用户编号:%s 手机号码 %s 已存在", row["A"], row["E"])
failureNum++ failureNum++
failureMsgArr = append(failureMsgArr, msg) failureMsgArr = append(failureMsgArr, msg)
continue continue
} }
} else { } else {
msg := fmt.Sprintf("号:%s 手机号码 %s 格式错误", row["A"], row["E"]) msg := fmt.Sprintf("用户编号:%s 手机号码 %s 格式错误", row["A"], row["E"])
failureNum++ failureNum++
failureMsgArr = append(failureMsgArr, msg) failureMsgArr = append(failureMsgArr, msg)
continue continue
@@ -264,13 +264,13 @@ func (r *SysUserImpl) ImportUser(rows []map[string]string, isUpdateSupport bool,
if regular.ValidEmail(newSysUser.Email) { if regular.ValidEmail(newSysUser.Email) {
uniqueEmail := r.CheckUniqueEmail(newSysUser.Email, "") uniqueEmail := r.CheckUniqueEmail(newSysUser.Email, "")
if !uniqueEmail { if !uniqueEmail {
msg := fmt.Sprintf("号:%s 用户邮箱 %s 已存在", row["A"], row["D"]) msg := fmt.Sprintf("用户编号:%s 用户邮箱 %s 已存在", row["A"], row["D"])
failureNum++ failureNum++
failureMsgArr = append(failureMsgArr, msg) failureMsgArr = append(failureMsgArr, msg)
continue continue
} }
} else { } else {
msg := fmt.Sprintf("号:%s 用户邮箱 %s 格式错误", row["A"], row["D"]) msg := fmt.Sprintf("用户编号:%s 用户邮箱 %s 格式错误", row["A"], row["D"])
failureNum++ failureNum++
failureMsgArr = append(failureMsgArr, msg) failureMsgArr = append(failureMsgArr, msg)
continue continue
@@ -283,11 +283,11 @@ func (r *SysUserImpl) ImportUser(rows []map[string]string, isUpdateSupport bool,
newSysUser.CreateBy = operName newSysUser.CreateBy = operName
insertId := r.InsertUser(newSysUser) insertId := r.InsertUser(newSysUser)
if insertId != "" { if insertId != "" {
msg := fmt.Sprintf("号:%s 登录名称 %s 导入成功", row["A"], row["B"]) msg := fmt.Sprintf("用户编号:%s 登录名称 %s 导入成功", row["A"], row["B"])
successNum++ successNum++
successMsgArr = append(successMsgArr, msg) successMsgArr = append(successMsgArr, msg)
} else { } else {
msg := fmt.Sprintf("号:%s 登录名称 %s 导入失败", row["A"], row["B"]) msg := fmt.Sprintf("用户编号:%s 登录名称 %s 导入失败", row["A"], row["B"])
failureNum++ failureNum++
failureMsgArr = append(failureMsgArr, msg) failureMsgArr = append(failureMsgArr, msg)
} }
@@ -300,11 +300,11 @@ func (r *SysUserImpl) ImportUser(rows []map[string]string, isUpdateSupport bool,
newSysUser.UpdateBy = operName newSysUser.UpdateBy = operName
rows := r.UpdateUser(newSysUser) rows := r.UpdateUser(newSysUser)
if rows > 0 { if rows > 0 {
msg := fmt.Sprintf("号:%s 登录名称 %s 更新成功", row["A"], row["B"]) msg := fmt.Sprintf("用户编号:%s 登录名称 %s 更新成功", row["A"], row["B"])
successNum++ successNum++
successMsgArr = append(successMsgArr, msg) successMsgArr = append(successMsgArr, msg)
} else { } else {
msg := fmt.Sprintf("号:%s 登录名称 %s 更新失败", row["A"], row["B"]) msg := fmt.Sprintf("用户编号:%s 登录名称 %s 更新失败", row["A"], row["B"])
failureNum++ failureNum++
failureMsgArr = append(failureMsgArr, msg) failureMsgArr = append(failureMsgArr, msg)
} }