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)) }