liuxiaolong
2019-08-22 f4e8f206a6760bdc31734dfcb1c65916b5b76311
add cluster
3个文件已修改
178 ■■■■■ 已修改文件
controllers/cluster.go 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
extend/code/code.go 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
router/router.go 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/cluster.go
@@ -1 +1,169 @@
package controllers
import (
    "basic.com/dbapi.git"
    "github.com/gin-gonic/gin"
    "webserver/extend/code"
    "webserver/extend/util"
)
type ClusterController struct {
}
type Cluster struct {
    ClusterId string `json:"cluster_id"`
    ClusterName string `json:"cluster_name"`
    Password string `json:"password"`
    VirtualIp string `json:"virtual_ip"`
}
type Node struct {
    Id string `json:"id"`
    ClusterId string `json:"cluster_id"`
    NodeName string `json:"node_name"`
    NodeId string `json:"node_id"`
    NodeIp string `json:"node_ip"`
    CreateTime string `json:"create_time"`
    IsAlive int
}
type ClusterVo struct {
    ClusterInfo Cluster `json:"clusterInfo"`
    Nodes []Node `json:"nodes"`
}
type ClusterCreateVo struct {
    Password string `json:"password"`
    ClusterName string `json:"clusterName"`
    ClusterId string `json:"clusterId"`
}
type ClusterSearchVo struct {
    Password string `json:"password"`
    SearchNum string `json:"searchNum"`
}
type ClusterJoinVo struct {
    ClusterId string `json:"clusterId"`
    Password string `json:"password"`
    NodeIps []string `json:"nodeIps"`
}
// @Summary 创建集群
// @Description 创建集群
// @Accept json
// @Produce json
// @Tags cluster
// @Param  clusterArg body controllers.ClusterCreateVo true "集群创建参数"
// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}"
// @Router /data/api-v/cluster/create [post]
func (cc ClusterController) Create(c *gin.Context) {
    var clusterVo ClusterCreateVo
    err := c.BindJSON(&clusterVo)
    if err !=nil || clusterVo.Password == "" || clusterVo.ClusterName == "" {
        util.ResponseFormat(c,code.RequestParamError, "参数有误")
        return
    }
    var api dbapi.ClusterApi
    b, d := api.Create(clusterVo.ClusterName, clusterVo.Password)
    if b {
        util.ResponseFormat(c,code.Success, d)
    } else {
        util.ResponseFormat(c,code.ComError,"创建失败")
    }
}
// @Summary 搜索集群
// @Description 搜索集群
// @Accept json
// @Produce json
// @Tags cluster
// @Param searchArg body controllers.ClusterSearchVo true "集群搜索参数"
// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}"
// @Router /data/api-v/cluster/search [post]
func (cc ClusterController) Search(c *gin.Context) {
    var csv ClusterSearchVo
    err := c.BindJSON(&csv)
    if err !=nil || csv.Password == ""{
        util.ResponseFormat(c,code.RequestParamError, "参数有误")
        return
    }
    var api dbapi.ClusterApi
    b,d := api.Search(csv.SearchNum, csv.Password)
    if b {
        util.ResponseFormat(c,code.Success, d)
    } else {
        util.ResponseFormat(c,code.ComError,"搜索失败")
    }
}
// @Summary 通过searchNum异步获取集群节点信息
// @Description 通过searchNum异步获取集群节点信息
// @Accept json
// @Produce json
// @Tags cluster
// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}"
// @Router /data/api-v/cluster/getNodesByNum [get]
func (cc ClusterController) GetSearchNodes(c *gin.Context) {
    var api dbapi.ClusterApi
    b, d := api.GetSearchNodes()
    if b {
        util.ResponseFormat(c,code.Success,d)
    } else {
        util.ResponseFormat(c,code.ClusterNodesEmpty,[]interface{}{})
    }
}
// @Summary 通过searchNum停止搜索
// @Description 通过searchNum停止搜索
// @Produce json
// @Tags cluster
// @Param searchNum query string true "搜索编号"
// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}"
// @Router /data/api-v/cluster/stopSearching [post]
func (cc ClusterController) StopSearching(c *gin.Context) {
    searchNum := c.Query("searchNum")
    if searchNum == "" {
        util.ResponseFormat(c,code.RequestParamError, "参数有误")
        return
    }
    var api dbapi.ClusterApi
    b, d := api.StopSearching(searchNum)
    if b {
        util.ResponseFormat(c,code.Success, d)
    } else {
        util.ResponseFormat(c,code.ComError,"停止失败")
    }
}
// @Summary 加入集群
// @Description 加入集群
// @Accept json
// @Produce json
// @Tags cluster
// @Param  clusterArg body controllers.ClusterCreateVo true "集群创建参数"
// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}"
// @Router /data/api-v/cluster/joinCluster [post]
func (cc ClusterController) JoinCluster(c *gin.Context) {
    var arg ClusterJoinVo
    err := c.BindJSON(&arg)
    if err!=nil || arg.ClusterId == "" || arg.Password == "" || len(arg.NodeIps) == 0{
        util.ResponseFormat(c,code.RequestParamError, "参数有误")
        return
    }
    var api dbapi.ClusterApi
    paramBody := util.Struct2Map(arg)
    b, d := api.JoinCluster(paramBody)
    if b {
        util.ResponseFormat(c,code.Success,d)
    } else {
        util.ResponseFormat(c,code.ComError,"加入失败")
    }
}
extend/code/code.go
@@ -57,4 +57,5 @@
    TaskStoped = &Code{http.StatusOK, false, "此任务为停用状态,请在任务管理中开启!"}
    ComError = &Code{http.StatusInternalServerError, false, ""}
    ClusterNodesEmpty = &Code{http.StatusOK, true, "集群节点为空"}
)
router/router.go
@@ -39,6 +39,7 @@
    pollConfigController := new(controllers.PollConfigController)
    fileController := new(controllers.FileController)
    sysMenuController :=new(controllers.SysMenuController)
    clusterController :=new(controllers.ClusterController)
    sysApi := r.Group(  "/data/api-u/sys")
@@ -223,6 +224,14 @@
        pollCApi.GET("/getPollConfig", pollConfigController.GetPollConfig)
        pollCApi.POST("/updateEnable", pollConfigController.UpdateEnable)
    }
    clusterApi := r.Group(urlPrefix+"/cluster")
    {
        clusterApi.POST("/create", clusterController.Create)
        clusterApi.POST("/search", clusterController.Search)
        clusterApi.POST("/stopSearching", clusterController.StopSearching)
        clusterApi.GET("/getSearchNodes", clusterController.GetSearchNodes)
        clusterApi.POST("/joinCluster", clusterController.JoinCluster)
    }
    // 文件 上传
    r.Static("static", "./static") // 静态文件