fix: 网元信息新增更新同步操作版本和授权信息

This commit is contained in:
TsMask
2024-04-11 17:13:54 +08:00
parent ca0f047f22
commit bc599ec5b0
5 changed files with 209 additions and 90 deletions

View File

@@ -17,15 +17,21 @@ import (
// 实例化控制层 NeInfoController 结构体
var NewNeInfo = &NeInfoController{
neInfoService: neService.NewNeInfoImpl,
neInfoService: neService.NewNeInfoImpl,
neLicenseService: neService.NewNeLicenseImpl,
neVersionService: neService.NewNeVersionImpl,
}
// 网元信息请求
//
// PATH /
// PATH /info
type NeInfoController struct {
// 网元信息服务
neInfoService neService.INeInfo
// 网元授权激活信息服务
neLicenseService neService.INeLicense
// 网元版本信息服务
neVersionService neService.INeVersion
}
// neStateCacheMap 网元状态缓存最后一次成功的信息
@@ -146,7 +152,8 @@ func (s *NeInfoController) ConfigFileRead(c *gin.Context) {
var querys struct {
NeType string `form:"neType" binding:"required"`
NeID string `form:"neId" binding:"required"`
FilePath string `form:"filePath"` // 不带文件路径时进行复制覆盖本地网元配置目录
FilePath string `form:"filePath"` // 不带文件路径时进行复制覆盖本地网元配置目录
FileType string `form:"fileType" binding:"oneof='' txt json yaml yml"` // 根据指定文件类型进行解析序列出map->json
}
if err := c.ShouldBindQuery(&querys); err != nil {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
@@ -160,16 +167,8 @@ func (s *NeInfoController) ConfigFileRead(c *gin.Context) {
return
}
data := s.neInfoService.NeConfigFileRead(neInfo, querys.FilePath)
if querys.FilePath == "" {
c.JSON(200, result.OkData(data))
return
}
if len(data) > 0 {
c.JSON(200, result.OkData(data[0]))
return
}
c.JSON(200, result.ErrMsg("no data"))
data := s.neInfoService.NeConfigFileRead(neInfo, querys.FilePath, querys.FileType)
c.JSON(200, result.OkData(data))
}
// 网元端配置文件写入
@@ -181,8 +180,9 @@ func (s *NeInfoController) ConfigFileWrite(c *gin.Context) {
NeType string `json:"neType" binding:"required"`
NeID string `json:"neId" binding:"required"`
FilePath string `json:"filePath" binding:"required"`
Content string `json:"content" binding:"required"`
Sync bool `json:"sync"`
FileType string `json:"fileType" binding:"oneof='' txt json yaml yml"` // 解析内容数据到对应文件类型
Content any `json:"content" binding:"required"` // 内容
Sync bool `json:"sync"` // 同步到网元
}
if err := c.ShouldBindJSON(&body); err != nil {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
@@ -196,7 +196,7 @@ func (s *NeInfoController) ConfigFileWrite(c *gin.Context) {
return
}
err := s.neInfoService.NeConfigFileWirte(neInfo, body.FilePath, body.Content, body.Sync)
err := s.neInfoService.NeConfigFileWirte(neInfo, body.FilePath, body.FileType, body.Content, body.Sync)
if err != nil {
c.JSON(200, result.ErrMsg(err.Error()))
return
@@ -260,19 +260,50 @@ func (s *NeInfoController) Add(c *gin.Context) {
}
// 获取网元状态是否正常
_, err = neService.NeState(body)
body.ServerState, err = neService.NeState(body)
if err != nil {
body.Status = "1"
body.Status = "0"
} else {
// 下发网管配置信息给网元
_, err = neService.NeConfigOMC(body)
if err == nil {
body.Status = "0"
body.Status = "1"
} else {
body.Status = "3"
body.Status = "2"
}
}
loginUserName := ctx.LoginUserToUserName(c)
// 新增Version信息
neVersion := model.NeVersion{
NeType: body.NeType,
NeId: body.NeId,
CreateBy: loginUserName,
}
// 新增License信息
neLicense := model.NeLicense{
NeType: body.NeType,
NeId: body.NeId,
CreateBy: loginUserName,
}
// 已有网元可获取的信息
if body.ServerState != nil {
if v, ok := body.ServerState["version"]; ok && v != nil {
neVersion.Version = v.(string)
}
if v, ok := body.ServerState["sn"]; ok && v != nil {
neLicense.SerialNum = v.(string)
}
if v, ok := body.ServerState["expire"]; ok && v != nil {
neLicense.ExpiryDate = v.(string)
neLicense.Status = "1"
}
}
s.neVersionService.Insert(neVersion)
s.neLicenseService.Insert(neLicense)
body.UpdateBy = loginUserName
insertId := s.neInfoService.Insert(body)
if insertId != "" {
c.JSON(200, result.Ok(nil))
@@ -311,19 +342,55 @@ func (s *NeInfoController) Edit(c *gin.Context) {
}
// 获取网元状态是否正常
_, err = neService.NeState(body)
body.ServerState, err = neService.NeState(body)
if err != nil {
body.Status = "1"
body.Status = "0"
} else {
// 下发网管配置信息给网元
_, err = neService.NeConfigOMC(body)
if err == nil {
body.Status = "0"
body.Status = "1"
} else {
body.Status = "3"
body.Status = "2"
}
}
loginUserName := ctx.LoginUserToUserName(c)
neLicense := s.neLicenseService.SelectByNeTypeAndNeID(neInfo.NeType, neInfo.NeId)
neVersion := s.neVersionService.SelectByNeTypeAndNeID(neInfo.NeType, neInfo.NeId)
// 已有网元可获取的信息
if body.ServerState != nil {
if v, ok := body.ServerState["version"]; ok && v != nil {
neVersion.Version = v.(string)
neVersion.UpdateBy = loginUserName
}
if v, ok := body.ServerState["sn"]; ok && v != nil {
neLicense.SerialNum = v.(string)
}
if v, ok := body.ServerState["expire"]; ok && v != nil {
neLicense.ExpiryDate = v.(string)
neLicense.Status = "1"
neLicense.UpdateBy = loginUserName
}
}
if neVersion.NeType != body.NeType || neVersion.NeId != body.NeId {
neVersion.NeType = body.NeType
neVersion.NeId = body.NeId
}
if neVersion.ID != "" {
s.neVersionService.Update(neVersion)
}
if neLicense.NeType != body.NeType || neLicense.NeId != body.NeId {
neVersion.NeType = body.NeType
neVersion.NeId = body.NeId
}
if neLicense.ID != "" {
s.neLicenseService.Update(neLicense)
}
body.UpdateBy = loginUserName
rows := s.neInfoService.Update(body)
if rows > 0 {
c.JSON(200, result.Ok(nil))