最近距离,我的收藏
This commit is contained in:
@@ -11,6 +11,7 @@ use app\common\model\Post;
|
||||
use support\exception\BusinessException;
|
||||
use support\Redis;
|
||||
use support\Request;
|
||||
use support\Db;
|
||||
|
||||
class PostService
|
||||
{
|
||||
@@ -71,7 +72,12 @@ class PostService
|
||||
if (isset($p['keyword']) && $p['keyword']) {
|
||||
$config['where']['content'] = ['like', '%'.$p['keyword'].'%'];
|
||||
}
|
||||
$config['where']['status'] = 1;
|
||||
|
||||
if (isset($p['status']) && $p['status']) {
|
||||
$config['where']['status'] = $p['status'];
|
||||
}else{
|
||||
$config['where']['status'] = 1;
|
||||
}
|
||||
|
||||
if (isset($p['favorite']) && $p['favorite']) {
|
||||
$config['order']['favorite'] = 'desc';
|
||||
@@ -182,6 +188,63 @@ class PostService
|
||||
return $data;
|
||||
}
|
||||
|
||||
// /** 分页列表 */
|
||||
// public function serviceNearby(Request $request, string $scene = 'index')
|
||||
// {
|
||||
// $result = $this->cqyProcess(ucfirst($scene), $request);
|
||||
// if ($result === false) {
|
||||
// $config = $this->buildQueryConfig($request, $scene);
|
||||
// $limit = (int)$request->get('size', 15);
|
||||
// $page = (int)$request->get('current', 1);
|
||||
// $result = $this->logicList($config, $limit, $page);
|
||||
// }
|
||||
// return $this->postProcess(ucfirst($scene), $result);
|
||||
// }
|
||||
|
||||
/** 分页列表 */
|
||||
public function serviceNearby(Request $request, string $scene = 'nearby')
|
||||
{
|
||||
$lng = $request->get('lng');
|
||||
$lat = $request->get('lat');
|
||||
|
||||
if (!$lng || !$lat) {
|
||||
throw new BusinessException('经纬度必传');
|
||||
}
|
||||
|
||||
$sql = "SELECT
|
||||
id,
|
||||
user_id,
|
||||
category_id,
|
||||
sku_id,
|
||||
location_name,
|
||||
content,
|
||||
latitude,
|
||||
longitude,
|
||||
created_at,
|
||||
updated_at,
|
||||
(6371000 * ACOS(
|
||||
COS(RADIANS(?)) * COS(RADIANS(latitude)) *
|
||||
COS(RADIANS(longitude) - RADIANS(?)) +
|
||||
SIN(RADIANS(?)) * SIN(RADIANS(latitude))
|
||||
)) AS distance
|
||||
FROM post
|
||||
HAVING distance <= ?
|
||||
ORDER BY distance
|
||||
LIMIT 50";
|
||||
|
||||
// 根据场景设置半径
|
||||
$radius = $scene === 'nearby' ? 5000 : 20000;
|
||||
|
||||
// $query = Db::select($sql, [
|
||||
// 'lat' => $lat,
|
||||
// 'lng' => $lng,
|
||||
// 'radius' => $radius
|
||||
// ]);
|
||||
$query = Db::select($sql, [$lat, $lng, $lat, $radius]);
|
||||
$result =json_decode(json_encode($query), true);
|
||||
return $result;
|
||||
}
|
||||
|
||||
function getMediaTypeByUrl(string $url): int
|
||||
{
|
||||
// 提取后缀
|
||||
|
||||
Reference in New Issue
Block a user