package AreaDao import ( "dsBigData/Business/Area/AreaModel" "dsBigData/Utils/CommonUtil" "dsBigData/Utils/EsUtil" "encoding/json" "github.com/olivere/elastic/v7" "github.com/tidwall/gjson" ) var esClient = EsUtil.EsClient var CTX = EsUtil.CTX /** 功能:根据市编码获取该市下的区(县)列表 作者:吴缤 日期:2020-06-30 typeId -1:全部 1:县市区 2:开发区 */ func PageDistrictByCityCode(cityCode string, typeId string) ([]AreaModel.Area, error) { enableFlagTerm := elastic.NewTermQuery("enable_flag", 1) delFlagTerm := elastic.NewTermQuery("del_flag", 0) masterCodeTerm := elastic.NewTermQuery("data_content.master_code", cityCode) var boolQuery *elastic.BoolQuery if typeId == "-1" { boolQuery = elastic.NewBoolQuery().Must(enableFlagTerm, delFlagTerm, masterCodeTerm) } else { typeIdTerm := elastic.NewTermQuery("data_content.area_type_id", typeId) boolQuery = elastic.NewBoolQuery().Must(enableFlagTerm, delFlagTerm, masterCodeTerm, typeIdTerm) } result, err := esClient.Search(). Index("org_area"). Query(boolQuery). Size(50). Do(CTX) if err != nil { return nil, err } resByte, err := json.Marshal(result.Hits) if err != nil { return nil, err } var areaArr []AreaModel.Area resStr := string(resByte) resCount := gjson.Get(resStr, "total.value") for i := 0; i < int(resCount.Num); i++ { var area AreaModel.Area area.AreaCode = gjson.Get(resStr, "hits."+CommonUtil.ConvertIntToString(i)+"._source.data_content.area_code").Str area.AreaName = gjson.Get(resStr, "hits."+CommonUtil.ConvertIntToString(i)+"._source.data_content.area_name").Str areaArr = append(areaArr, area) } return areaArr, nil }