package controller import ( "be.ems/src/framework/i18n" "be.ems/src/framework/utils/ctx" "be.ems/src/framework/vo/result" neService "be.ems/src/modules/network_element/service" "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/binding" ) // 实例化控制层 NeVersionController 结构体 var NewNeVersion = &NeVersionController{ neVersionService: neService.NewNeVersion, } // 网元版本请求 // // PATH /version type NeVersionController struct { neVersionService *neService.NeVersion // 网元版本服务 } // 网元版本列表 // // GET /list func (s *NeVersionController) List(c *gin.Context) { querys := ctx.QueryMap(c) data := s.neVersionService.SelectPage(querys, true) c.JSON(200, result.Ok(data)) } // 网元版本信息 // // GET /:versionId func (s *NeVersionController) Info(c *gin.Context) { language := ctx.AcceptLanguage(c) versionId := c.Param("versionId") if versionId == "" { c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) return } neVersion := s.neVersionService.SelectById(versionId) if neVersion.ID != versionId { // 没有可访问网元版本数据! c.JSON(200, result.ErrMsg(i18n.TKey(language, "neVersion.noData"))) return } c.JSON(200, result.OkData(neVersion)) } // 网元版本操作 // // POST /operate func (s *NeVersionController) Operate(c *gin.Context) { language := ctx.AcceptLanguage(c) var body struct { Action string `json:"action" binding:"required,oneof=install upgrade rollback"` // 操作行为 NeType string `json:"neType" gorm:"ne_type" binding:"required"` // 网元类型 NeId string `json:"neId" gorm:"ne_id" binding:"required"` // 网元ID Preinput map[string]string `json:"preinput" ` // 预先输入参数 } if err := c.ShouldBindBodyWith(&body, binding.JSON); err != nil { c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) return } neVersion := s.neVersionService.SelectByNeTypeAndNeID(body.NeType, body.NeId) if neVersion.NeId != body.NeId { // 没有可访问网元版本数据! c.JSON(200, result.ErrMsg(i18n.TKey(language, "neVersion.noData"))) return } // 进行相关命令操作 output, err := s.neVersionService.Operate(body.Action, neVersion, body.Preinput) if err != nil { c.JSON(200, result.ErrMsg(i18n.TKey(language, err.Error()))) return } c.JSON(200, result.OkData(output)) }