最近距离,我的收藏

This commit is contained in:
2025-12-12 15:31:44 +08:00
parent f5ea63a883
commit b1eb0468c6
4 changed files with 129 additions and 3 deletions
+64 -1
View File
@@ -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
{
// 提取后缀