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 }