package controllers
|
|
import (
|
"basic.com/dbapi.git"
|
"basic.com/valib/logger.git"
|
"encoding/json"
|
"fmt"
|
"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/tagList [POST]
|
func (sc *EsSearchController) PostEsTagList(c *gin.Context) {
|
|
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
|
}
|
}
|
util.ResponseFormat(c,code.ComError,"查询底库标签失败")
|
}
|
|
//判断底库是否有数据
|
func GetTotalFromDb(id string) (flag bool) {
|
flag = false
|
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))
|
if total > 0 {
|
flag = true
|
}
|
return flag
|
}
|