liuhaijun e94826ce29 add server
Change-Id: I0760f17f6a01c0121b59fcbfafc666032dbc30af
2024-09-19 09:44:15 +00:00

109 lines
3.1 KiB
Go

package node
import (
"encoding/json"
"fmt"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/controller"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/controller/v1/app_manage"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/model"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/model/app_manage/project_info"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/pkg/errors"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/pkg/request"
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/service/app_manage/node"
"github.com/gin-gonic/gin"
)
type ProjectPageBody struct {
PageInfo *request.PageInfo `json:"pageInfo" binding:"required"`
NodeId string `json:"nodeId"`
Group string `json:"group"`
Keyword string `json:"keyword"`
RunMode string `json:"runMode"`
}
// ProjectList 加载节点项目列表
func ProjectList(c *gin.Context) {
var pageBody *ProjectPageBody
body := request.GetBody(c)
err := json.Unmarshal(body, &pageBody)
if err != nil {
controller.FailCode(c, errors.InvalidParameter, err, "请检查参数!")
return
}
p := project_info.New()
fields := map[string]interface{}{}
if len(pageBody.NodeId) > 0 {
fields["node_id"] = pageBody.NodeId
}
if len(pageBody.Group) > 0 {
fields["\"group\""] = pageBody.Group
}
if len(pageBody.RunMode) > 0 {
fields["run_mode"] = pageBody.RunMode
}
workspaceId := app_manage.GetWorkspaceId(c)
fields["workspace_id"] = workspaceId
page := &model.PageConfig{}
page.Covert(pageBody.PageInfo)
result, err := p.Page(p, page, fields)
if err != nil {
controller.FailCode(c, errors.ServerError, err, "内部错误!")
return
}
page.Data = result
controller.Success(c, page)
}
// ProjectListAll 加载节点项目列表
func ProjectListAll(c *gin.Context) {
p := project_info.New()
fields := map[string]interface{}{}
workspaceId := app_manage.GetWorkspaceId(c)
fields["workspace_id"] = workspaceId
all, err := p.GetAll(p, fields, nil)
if err != nil {
return
}
controller.Success(c, all)
}
// ListProjectGroup 查询所有的分组
func ListProjectGroup(c *gin.Context) {
p := &project_info.ProjectInfo{}
result, _ := p.ListGroup()
controller.Success(c, result)
}
// SyncProject 同步节点项目
func SyncProject(c *gin.Context) {
bodyToMap := request.GetBodyToMap(c)
n, err := app_manage.TryGetNode(bodyToMap)
if err != nil {
controller.FailCode(c, errors.InvalidParameter, err, "请检查参数!")
return
}
workspaceId := c.Request.Header.Get("workspaceId")
count, err := project_info.DeleteProjectByNodeIdAndWorkspaceId(n.Id, workspaceId)
if err != nil {
controller.FailCode(c, errors.ServerError, err, "删除节点缓存项目信息失败!")
return
}
msg := node.SyncExecuteNode(n)
controller.Success(c, fmt.Sprintf("主动清除:%d个项目, 同步信息:%s", count, msg))
}
func ClearAll(c *gin.Context) {
all, err := project_info.ClearAll()
if err != nil {
controller.FailCode(c, errors.ServerError, err, "删除节点缓存项目失败!")
return
}
controller.Success(c, fmt.Sprintf("成功删除 %d 条项目缓存", all))
}