liuxiaolong
2019-08-22 f4e8f206a6760bdc31734dfcb1c65916b5b76311
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,"加入失败")
   }
}