205 lines
5.8 KiB
Go
205 lines
5.8 KiB
Go
package controller
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"be.ems/src/framework/i18n"
|
|
"be.ems/src/framework/utils/ctx"
|
|
"be.ems/src/framework/utils/parse"
|
|
"be.ems/src/framework/vo/result"
|
|
"be.ems/src/modules/network_element/model"
|
|
neService "be.ems/src/modules/network_element/service"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/gin-gonic/gin/binding"
|
|
)
|
|
|
|
// 实例化控制层 NeSoftwareController 结构体
|
|
var NewNeSoftware = &NeSoftwareController{
|
|
neSoftwareService: neService.NewNeSoftwareImpl,
|
|
}
|
|
|
|
// 网元软件包信息请求
|
|
//
|
|
// PATH /software
|
|
type NeSoftwareController struct {
|
|
// 网元软件包信息服务
|
|
neSoftwareService neService.INeSoftware
|
|
}
|
|
|
|
// 网元软件包信息列表
|
|
//
|
|
// GET /list
|
|
func (s *NeSoftwareController) List(c *gin.Context) {
|
|
querys := ctx.QueryMap(c)
|
|
data := s.neSoftwareService.SelectPage(querys)
|
|
|
|
c.JSON(200, result.Ok(data))
|
|
}
|
|
|
|
// 网元软件包信息信息
|
|
//
|
|
// GET /:softwareId
|
|
func (s *NeSoftwareController) Info(c *gin.Context) {
|
|
language := ctx.AcceptLanguage(c)
|
|
softwareId := c.Param("softwareId")
|
|
if softwareId == "" {
|
|
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
|
return
|
|
}
|
|
|
|
neSoftware := s.neSoftwareService.SelectById(softwareId)
|
|
if neSoftware.ID != softwareId {
|
|
// 没有可访问网元包信息数据!
|
|
c.JSON(200, result.ErrMsg(i18n.TKey(language, "neSoftware.noData")))
|
|
return
|
|
}
|
|
|
|
c.JSON(200, result.OkData(neSoftware))
|
|
}
|
|
|
|
// 网元软件包信息新增
|
|
//
|
|
// POST /
|
|
func (s *NeSoftwareController) Add(c *gin.Context) {
|
|
language := ctx.AcceptLanguage(c)
|
|
var body model.NeSoftware
|
|
err := c.ShouldBindBodyWith(&body, binding.JSON)
|
|
if err != nil || body.Path == "" || body.ID != "" {
|
|
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
|
return
|
|
}
|
|
|
|
// 找到已存在的删除后重新添加
|
|
neSoftwares := s.neSoftwareService.SelectList(model.NeSoftware{
|
|
NeType: body.NeType,
|
|
Name: body.Name,
|
|
Version: body.Version,
|
|
})
|
|
if len(neSoftwares) > 0 {
|
|
neSoftware := neSoftwares[0]
|
|
s.neSoftwareService.DeleteByIds([]string{neSoftware.ID})
|
|
}
|
|
|
|
// 检查属性值唯一
|
|
// uniqueSoftware := s.neSoftwareService.CheckUniqueTypeAndNameAndVersion(body.NeType, body.Name, body.Version, "")
|
|
// if !uniqueSoftware {
|
|
// // 网元软件包操作【%s】失败,网元类型与文件名版本已存在
|
|
// msg := i18n.TTemplate(language, "neSoftware.errKeyExists", map[string]any{"name": body.Name})
|
|
// c.JSON(200, result.ErrMsg(msg))
|
|
// return
|
|
// }
|
|
|
|
body.CreateBy = ctx.LoginUserToUserName(c)
|
|
insertId := s.neSoftwareService.Insert(body)
|
|
if insertId != "" {
|
|
c.JSON(200, result.Ok(nil))
|
|
return
|
|
}
|
|
c.JSON(200, result.Err(nil))
|
|
}
|
|
|
|
// 网元软件包信息修改
|
|
//
|
|
// PUT /
|
|
func (s *NeSoftwareController) Edit(c *gin.Context) {
|
|
language := ctx.AcceptLanguage(c)
|
|
var body model.NeSoftware
|
|
err := c.ShouldBindBodyWith(&body, binding.JSON)
|
|
if err != nil || body.Path == "" || body.ID == "" {
|
|
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
|
return
|
|
}
|
|
|
|
// 检查属性值唯一
|
|
uniqueSoftware := s.neSoftwareService.CheckUniqueTypeAndNameAndVersion(body.NeType, body.Name, body.Version, body.ID)
|
|
if !uniqueSoftware {
|
|
// 网元软件包操作【%s】失败,网元类型与文件名版本已存在
|
|
msg := i18n.TTemplate(language, "neSoftware.errKeyExists", map[string]any{"name": body.Name})
|
|
c.JSON(200, result.ErrMsg(msg))
|
|
return
|
|
}
|
|
|
|
// 检查是否存在
|
|
neSoftware := s.neSoftwareService.SelectById(body.ID)
|
|
if neSoftware.ID != body.ID {
|
|
// 没有可访问网元包信息数据!
|
|
c.JSON(200, result.ErrMsg(i18n.TKey(language, "neSoftware.noData")))
|
|
return
|
|
}
|
|
|
|
body.UpdateBy = ctx.LoginUserToUserName(c)
|
|
rows := s.neSoftwareService.Update(body)
|
|
if rows > 0 {
|
|
c.JSON(200, result.Ok(nil))
|
|
return
|
|
}
|
|
c.JSON(200, result.Err(nil))
|
|
}
|
|
|
|
// 网元软件包信息删除
|
|
//
|
|
// DELETE /:softwareIds
|
|
func (s *NeSoftwareController) Remove(c *gin.Context) {
|
|
language := ctx.AcceptLanguage(c)
|
|
softwareIds := c.Param("softwareIds")
|
|
if softwareIds == "" {
|
|
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
|
return
|
|
}
|
|
// 处理字符转id数组后去重
|
|
ids := strings.Split(softwareIds, ",")
|
|
uniqueIDs := parse.RemoveDuplicates(ids)
|
|
if len(uniqueIDs) <= 0 {
|
|
c.JSON(200, result.Err(nil))
|
|
return
|
|
}
|
|
rows, err := s.neSoftwareService.DeleteByIds(uniqueIDs)
|
|
if err != nil {
|
|
c.JSON(200, result.ErrMsg(i18n.TKey(language, err.Error())))
|
|
return
|
|
}
|
|
msg := i18n.TTemplate(language, "app.common.deleteSuccess", map[string]any{"num": rows})
|
|
c.JSON(200, result.OkMsg(msg))
|
|
}
|
|
|
|
// 网元软件包安装
|
|
//
|
|
// POST /install
|
|
func (s *NeSoftwareController) Install(c *gin.Context) {
|
|
language := ctx.AcceptLanguage(c)
|
|
var body struct {
|
|
Software model.NeSoftware `json:"software" binding:"required"` // 软件包信息
|
|
Preinput map[string]string `json:"preinput" binding:"required"` // 预先输入参数
|
|
}
|
|
err := c.ShouldBindBodyWith(&body, binding.JSON)
|
|
if err != nil || body.Software.NeId == "" {
|
|
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
|
|
return
|
|
}
|
|
|
|
// 检查是否存在软件包记录
|
|
neSoftwares := s.neSoftwareService.SelectList(model.NeSoftware{
|
|
NeType: body.Software.NeType,
|
|
Name: body.Software.Name,
|
|
Version: body.Software.Version,
|
|
})
|
|
if len(neSoftwares) <= 0 {
|
|
body.Software.CreateBy = ctx.LoginUserToUserName(c)
|
|
body.Software.ID = s.neSoftwareService.Insert(body.Software)
|
|
} else {
|
|
neSoftware := neSoftwares[0]
|
|
neSoftware.Path = body.Software.Path
|
|
neSoftware.Description = body.Software.Description
|
|
neSoftware.UpdateBy = ctx.LoginUserToUserName(c)
|
|
s.neSoftwareService.Update(neSoftware)
|
|
}
|
|
|
|
// 进行安装
|
|
output, err := s.neSoftwareService.InstallToNeHost(body.Software, body.Preinput)
|
|
if err != nil {
|
|
c.JSON(200, result.ErrMsg(i18n.TKey(language, err.Error())))
|
|
return
|
|
}
|
|
c.JSON(200, result.OkData(output))
|
|
}
|