package manage import ( "bytes" "encoding/json" err1 "errors" "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/node" "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/common" node2 "git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/service/app_manage/node" "git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/service/app_manage/outgiving" "github.com/gin-gonic/gin" ) // GS4Z2X func GetProjectPort(c *gin.Context) { nodeId := c.PostForm("nodeId") ids := c.PostForm("ids") if nodeId == "" { controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!") return } if ids == "" { controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!") return } var idArray []string err := json.Unmarshal([]byte(ids), &idArray) if err != nil { controller.FailCode(c, errors.ServerError, err, "请检查参数!") return } if len(idArray) == 0 { controller.FailCode(c, errors.ServerError, err, "请检查参数!") return } n := &node.Node{} n.Id = nodeId err = n.GetById(n) if err != nil { controller.FailCode(c, errors.ServerError, err, "没有对应的节点") return } jsonBody := make(map[string][]string) jsonBody["ids"] = idArray body, _ := json.Marshal(jsonBody) resp, err := common.Request5(n, common.Manage_GetProjectPort, bytes.NewReader(body)) if err != nil { controller.FailCode(c, errors.ServerError, err, "查询失败") return } if !resp.IsBusinessSuccess() { controller.FailCode(c, errors.ServerError, err1.New(resp.Result.Msg), resp.Result.Data) return } controller.Success(c, resp.Result.Data) } 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"` } func PageProject(c *gin.Context) { var pageBody ProjectPageBody err := c.ShouldBindJSON(&pageBody) if err != nil { controller.FailCode(c, errors.InvalidParameter, err, "请检查参数!") return } if pageBody.NodeId == "" { controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!") return } p := project_info.New() fields := map[string]interface{}{} 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) } func DeleteProject(c *gin.Context) { bodyToMap := request.GetBodyToMap(c) n, err := app_manage.TryGetNode(bodyToMap) if err != nil { return } projectId, _ := bodyToMap["id"].(string) if projectId == "" { controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数:projectId!") return } workspaceId := app_manage.GetWorkspaceId(c) err = outgiving.CheckNodeProject(n.Id, projectId, workspaceId, "当前项目存在节点分发,不能直接删除") if err != nil { controller.FailCode(c, errors.ServerError, err, "当前项目存在节点分发,不能直接删除") return } // todo 检查日志阅读 项目监控 // logReadServer.checkNodeProject(nodeModel.getId(), id, request, "当前项目存在日志阅读,不能直接删除"); resp := app_manage.TryRequestNode("", bodyToMap, common.Manage_DeleteProject) if resp.Result.Code == errors.SUCCESS { node2.SyncExecuteNode(n) controller.Success(c, resp.Result.Data) return } controller.Fail(c, errors.ServerError, resp.Result.Msg) } func StartProject(c *gin.Context) { nodeId := c.PostForm("nodeId") id := c.PostForm("id") if nodeId == "" { controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数:nodeId!") return } if id == "" { controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数:id!") return } n := &node.Node{} n.Id = nodeId err := n.GetById(n) if err != nil { controller.FailCode(c, errors.ServerError, err, "没有对应的节点") return } jsonBody := make(map[string]string) jsonBody["id"] = id body, _ := json.Marshal(jsonBody) resp, err := common.Request5(n, common.Manage_StartProject, bytes.NewReader(body)) if err != nil { controller.FailCode(c, errors.ServerError, err, "下载失败") return } if !resp.IsBusinessSuccess() { controller.FailCode(c, errors.ServerError, err1.New(resp.Result.Msg), resp.Result.Data) return } controller.Success(c, resp.Result.Data) } func StopProject(c *gin.Context) { nodeId := c.PostForm("nodeId") id := c.PostForm("id") if nodeId == "" { controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!") return } if id == "" { controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!") return } n := &node.Node{} n.Id = nodeId err := n.GetById(n) if err != nil { controller.FailCode(c, errors.ServerError, err, "没有对应的节点") return } jsonBody := make(map[string]string) jsonBody["id"] = id body, _ := json.Marshal(jsonBody) resp, err := common.Request5(n, common.Manage_StopProject, bytes.NewReader(body)) if err != nil { controller.FailCode(c, errors.ServerError, err, "下载失败") return } if !resp.IsBusinessSuccess() { controller.FailCode(c, errors.ServerError, err1.New(resp.Result.Msg), resp.Result.Data) return } controller.Success(c, resp.Result.Data) } func RestartProject(c *gin.Context) { nodeId := c.PostForm("nodeId") id := c.PostForm("id") if nodeId == "" { controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!") return } if id == "" { controller.FailCode(c, errors.InvalidParameter, nil, "请检查参数!") return } n := &node.Node{} n.Id = nodeId err := n.GetById(n) if err != nil { controller.FailCode(c, errors.ServerError, err, "没有对应的节点") return } jsonBody := make(map[string]string) jsonBody["id"] = id body, _ := json.Marshal(jsonBody) resp, err := common.Request5(n, common.Manage_RestartProject, bytes.NewReader(body)) if err != nil { controller.FailCode(c, errors.ServerError, err, "下载失败") return } if !resp.IsBusinessSuccess() { controller.FailCode(c, errors.ServerError, err1.New(resp.Result.Msg), resp.Result.Data) return } controller.Success(c, resp.Result.Data) }