feat: 网元参数配置应用申请功能接口

This commit is contained in:
TsMask
2024-07-04 20:38:14 +08:00
parent 9d700a5c7e
commit 5d504b5ec7
9 changed files with 559 additions and 20 deletions

View File

@@ -0,0 +1,145 @@
package controller
import (
"be.ems/src/framework/i18n"
"be.ems/src/framework/utils/ctx"
"be.ems/src/framework/vo/result"
"be.ems/src/modules/practical_training/model"
"be.ems/src/modules/practical_training/service"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
)
// NewPtNeConfigApply 实例化控制层
var NewPtNeConfigApply = &PtNeConfigApplyController{
ptNeConfigApplyService: service.NewPtNeConfigApplyService,
ptNeConfigDataService: service.NewPtNeConfigDataService,
}
// 网元参数配置应用申请
//
// PATH /neConfigApply
type PtNeConfigApplyController struct {
// 实训教学_网元参数配置应用申请服务
ptNeConfigApplyService service.IPtNeConfigApplyService
// 实训教学_网元参数配置服务
ptNeConfigDataService service.IPtNeConfigDataService
}
// 网元参数配置应用申请信息
//
// GET /
func (s *PtNeConfigApplyController) Info(c *gin.Context) {
language := ctx.AcceptLanguage(c)
id, idOk := c.GetQuery("id")
if !idOk {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return
}
data := s.ptNeConfigApplyService.SelectById(id)
c.JSON(200, result.OkData(data))
}
// 网元参数配置应用申请提交(仅学生操作)
//
// POST /
func (s *PtNeConfigApplyController) Add(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body struct {
NeType string `json:"neType" binding:"required"` // 网元类型
Status string `json:"status" binding:"required,oneof=0 1"` // 状态 0申请 1撤回
}
if err := c.ShouldBindBodyWith(&body, binding.JSON); err != nil {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return
}
currentUserName := ctx.LoginUserToUserName(c)
applyInfos := s.ptNeConfigApplyService.SelectList(model.PtNeConfigApply{
CreateBy: currentUserName,
Status: "0",
NeType: body.NeType,
})
// 申请
if body.Status == "0" {
// 申请中
if len(applyInfos) > 0 {
c.JSON(200, result.OkMsg("Application In Progress"))
return
}
s.ptNeConfigApplyService.Insert(model.PtNeConfigApply{
CreateBy: currentUserName,
Status: "0",
NeType: body.NeType,
})
c.JSON(200, result.OkMsg("Application Submission Complete!"))
return
}
// 撤回
if body.Status == "1" {
// 没申请
if len(applyInfos) == 0 {
c.JSON(200, result.OkMsg("No Revocable Applications"))
return
}
for _, v := range applyInfos {
v.UpdateBy = currentUserName
v.Status = "1"
s.ptNeConfigApplyService.Update(v)
}
c.JSON(200, result.OkMsg("Application Revocable Complete!"))
return
}
}
// 网元参数配置应用申请状态变更(仅管理员/教师操作)
//
// PUT /
func (s *PtNeConfigApplyController) Edit(c *gin.Context) {
language := ctx.AcceptLanguage(c)
var body struct {
ApplyId string `json:"applyId" binding:"required"` // 申请ID
NeType string `json:"neType" binding:"required"` // 网元类型
Status string `json:"status" binding:"required,oneof=2 3"` // 状态 2应用 3退回
BackInfo string `json:"backInfo"` // 退回信息
}
if err := c.ShouldBindBodyWith(&body, binding.JSON); err != nil {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return
}
currentUserName := ctx.LoginUserToUserName(c)
applyInfos := s.ptNeConfigApplyService.SelectById(body.ApplyId)
if applyInfos.ID != body.ApplyId || applyInfos.Status != "0" {
c.JSON(200, result.ErrMsg("Application Information Is Incorrect!"))
return
}
// 退回
if body.Status == "3" {
applyInfos.UpdateBy = currentUserName
applyInfos.Status = "3"
applyInfos.BackInfo = body.BackInfo
s.ptNeConfigApplyService.Update(applyInfos)
c.JSON(200, result.OkMsg("Application Return Complete!"))
return
}
// 应用
if body.Status == "2" {
if err := s.ptNeConfigDataService.ApplyToNe(applyInfos.CreateBy, applyInfos.NeType); err != nil {
c.JSON(200, result.ErrMsg("Application Failed! "+err.Error()))
return
}
applyInfos.UpdateBy = currentUserName
applyInfos.Status = "1"
applyInfos.BackInfo = ""
s.ptNeConfigApplyService.Update(applyInfos)
c.JSON(200, result.OkMsg("Application Appliance Complete!"))
return
}
}