Browse Source

增加$lat && $lng判断

master
李可松 4 years ago
parent
commit
fb5dcbe144
  1. 10
      app/Http/Controllers/Api/AgentProductController.php

10
app/Http/Controllers/Api/AgentProductController.php

@ -33,8 +33,9 @@ class AgentProductController extends Controller
$list = $list->whereIn('category_id', [$category_id, ...$this->get_category_child_ids($category_id)]); $list = $list->whereIn('category_id', [$category_id, ...$this->get_category_child_ids($category_id)]);
} }
// 距离排序,TODO 优化
$list = $list->addSelect('latitude', 'longitude', 'address', DB::raw(<<<SQL
// 距离排序
if ($lat && $lng) {
$list = $list->addSelect('latitude', 'longitude', 'address', DB::raw(<<<SQL
round( round(
(((6371.393 * 2) * asin( (((6371.393 * 2) * asin(
sqrt(( sqrt((
@ -45,8 +46,9 @@ round(
* *
pow( sin((((( {$lng} * 3.1415926 ) / 180 ) - (( `longitude` * pi()) / 180 )) / 2 )), 2 )))) pow( sin((((( {$lng} * 3.1415926 ) / 180 ) - (( `longitude` * pi()) / 180 )) / 2 )), 2 ))))
)) * 1000),0) AS `distance_m` )) * 1000),0) AS `distance_m`
SQL));
SQL
));
}
$fields = ['id', 'sale', 'updated_at', 'price', 'distance_m']; //排序字段 $fields = ['id', 'sale', 'updated_at', 'price', 'distance_m']; //排序字段
$field = $fields[$type] ?? $fields[0]; $field = $fields[$type] ?? $fields[0];

Loading…
Cancel
Save