package controllers import ( "encoding/json" "fmt" "github.com/gin-gonic/gin" "webserver/extend/code" "webserver/extend/config" "webserver/extend/esutil" "webserver/extend/util" ) //标签列表 //任务列表 // @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] 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 } } sources = append(sources, tokenRes) } util.ResponseFormat(c, code.Success, sources) } //判断底库是否有数据 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}" 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 }