|
|
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
|
|
|
}
|
|
|
|
|
|
|