Commit 27c7258c authored by luhongguang's avatar luhongguang

update:es 距离搜索

parent fa6d58e8
......@@ -147,6 +147,25 @@ class ElasticGoodService
["term" => ["online_status" => GoodsSku::ONLINE_STATUS_ONLINE]],
];
if (!empty($params["latitude"]) && !empty($params["longitude"])) {
$data["query"]["bool"]["filter"]["geo_distance"] = [
"distance" => "50km",
"shop_location" => [
"lat" => $params["latitude"],
"lon" => $params["longitude"],
]
];
$data["sort"]["_geo_distance"] = [
"shop_location" => [
"lat" => $params["latitude"],
"lon" => $params["longitude"],
],
"order" => "asc",
"unit" => "km",
];
}
$elasticClient = ElasticUtil::getInstance();
$res = $elasticClient->searchDoc(self::INDEX, $data);
......@@ -154,6 +173,8 @@ class ElasticGoodService
if (!empty($res["hits"]["total"]["value"])) {
$result["count"] = $res["hits"]["total"]["value"];
foreach ($res["hits"]["hits"] as $key => $source) {
$result["list"][$key]["goods_desc_pic_url_list"] = [];
if (!empty($source["_source"]["goods_desc_pic_url"])) {
$ksyun = GoodsService::getUrlList($source["_source"]["goods_desc_pic_url"]);
......@@ -170,10 +191,11 @@ class ElasticGoodService
$result["list"][$key]["audit_status"] = $source["_source"]["audit_status"];
$result["list"][$key]["online_status"] = $source["_source"]["online_status"];
$result["list"][$key]["shop_name"] = $source["_source"]["shop_name"];
$result["list"][$key]["shop_longitude"] = $source["_source"]["shop_longitude"];
$result["list"][$key]["shop_latitude"] = $source["_source"]["shop_latitude"];
$result["list"][$key]["shop_location"] = $source["_source"]["shop_location"];
$result["list"][$key]["life_account_name"] = $source["_source"]["life_account_name"];
$result["list"][$key]["life_account_icon"] = $source["_source"]["life_account_icon"];
$result["list"][$key]["distance"] = empty($source["sort"][2]) ? "" : round($source["sort"][2], 2)."km";
}
}
//为避免空数据时候返回给前端错误结构
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment