liuxiaolong
2020-06-05 7c811247ecf143e08c576986a884bedadc57dd66
controllers/taglist.go
@@ -1,81 +1,90 @@
package controllers
import (
   "basic.com/dbapi.git"
   "basic.com/valib/logger.git"
   "encoding/json"
   "fmt"
   "github.com/gin-gonic/gin"
   "strconv"
   "webserver/cache"
   "webserver/extend/code"
   "webserver/extend/config"
   "webserver/extend/esutil"
   "webserver/extend/util"
   "github.com/gin-gonic/gin"
)
//标签列表
//任务列表
// @Security ApiKeyAuth
// @Summary 标签列表
// @Description 返回底库标签
// @Accept  json
// @Produce json
// @Tags es
// @Success 200 {string} json "{"code":200, msg:"目录结构数据", success:true}"
// @Failure 500 {string} json "{"code":500,  msg:"返回错误信息", success:false}"
// @Router /data/api-v/es/taskList [POST]
// @Success 200 {string} json "{"code":200, msg:"", success:true}"
// @Failure 500 {string} json "{"code":500, msg:"", success:false}"
// @Router /data/api-v/es/tagList [POST]
func (sc *EsSearchController) PostEsTagList(c *gin.Context) {
   url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
      "/" + config.EsInfo.EsIndex.DbTables.IndexName + "/_search"
   prama := "{\"query\":{\"bool\":{\"filter\":[]}},\"size\":10000,\"_source\":[\"tableName\",\"id\",\"isDelete\"]}"
   tokenRes := esutil.GetEsDataReq(url, prama, true)
   sources := make([]map[string]interface{}, 0)
   fmt.Println(tokenRes["datalist"].([]interface{}))
   for _, value := range tokenRes["datalist"].([]interface{}) {
      tokenRes := make(map[string]interface{})
      key := value.(map[string]interface{})["id"].(string)
      tokenRes["key"] = key
      tokenRes["title"] = value.(map[string]interface{})["tableName"].(string)
      tokenRes["value"] = value.(map[string]interface{})["id"].(string)
      status := int(value.(map[string]interface{})["isDelete"].(float64))
      tokenRes["status"] = status
      if status == 1  {
         if GetTotalFromDb(key) == false{
            continue
   var dtApi dbapi.DbTableApi
   dts, err := dtApi.FindAllDbTablesByCurServer("-1")
   if err == nil {
      if dts !=nil {
         sources := make([]map[string]interface{}, 0)
         for _, dt := range dts {
            tokenRes := make(map[string]interface{})
            tokenRes["key"] = dt.Id
            tokenRes["title"] = dt.TableName
            tokenRes["value"] = dt.Id
            tokenRes["status"] = dt.IsDelete
            tokenRes["bwType"] = dt.BwType //0:白名单,1:黑名单
            tokenRes["analyServerId"] = dt.AnalyServerId //为空是同步库,不为空是本地库
            if dt.IsDelete == 1 {
               if GetTotalFromDb(dt.Id) == false {
                  continue
               }
            }
            sources = append(sources, tokenRes)
         }
         util.ResponseFormat(c, code.Success, sources)
         return
      }
      sources = append(sources, tokenRes)
   }
   util.ResponseFormat(c, code.Success, sources)
   util.ResponseFormat(c,code.ComError,"查询底库标签失败")
}
//判断底库是否有数据
func GetTotalFromDb(id string) (flag bool) {
   flag = false
   url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
      "/" + config.EsInfo.EsIndex.DbTables.IndexName + "/_search"
   prama := "{\"query\":{\"bool\":{\"filter\":[{\"term\":{\"baseInfo.tableId\":\""+id+"\"}}]}},\"size\":0}"
   localConf, err2 := cache.GetServerInfo()
   if err2 !=nil || localConf.AlarmIp == "" || localConf.ServerId == "" {
      logger.Debug("localConfig is wrong!!!")
      return false
   }
   url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
      "/" + config.EsInfo.EsIndex.AiOcean.IndexName + "/_search"
   prama := "{\"query\":{\"bool\":{\"filter\":[{\"term\":{\"baseInfo.tableId\":\"" + id + "\"}}]}},\"size\":0}"
   buf, err := esutil.EsReq("POST", url, []byte(prama))
            if err != nil {
                fmt.Println("http request info is err!")
                return
            }
            var info interface{}
            json.Unmarshal(buf, &info)
            out, ok := info.(map[string]interface{})
            if !ok {
                fmt.Println("http response interface can not change map[string]interface{}")
                return
            }
            middle, ok := out["hits"].(map[string]interface{})
            if !ok {
                fmt.Println("first hits change error!")
                return
            }
            total := int(middle["total"].(float64))
         fmt.Println(total)
         if total > 0 {
            flag=true
         }
            return flag
   if err != nil {
      fmt.Println("http request info is err!")
      return
   }
   var info interface{}
   json.Unmarshal(buf, &info)
   out, ok := info.(map[string]interface{})
   if !ok {
      fmt.Println("http response interface can not change map[string]interface{}")
      return
   }
   middle, ok := out["hits"].(map[string]interface{})
   if !ok {
      fmt.Println("first hits change error!")
      return
   }
   total := int(middle["total"].(float64))
   if total > 0 {
      flag = true
   }
   return flag
}