Files
hyperf_service/app/Service/Api/System/SiteListService.php
2025-02-28 18:00:31 +08:00

56 lines
1.5 KiB
PHP

<?php
/**
* This service file is part of item.
*
* @author ctexthuang
* @contact ctexthuang@qq.com
*/
declare(strict_types=1);
namespace App\Service\Api\System;
use App\Cache\Redis\Api\SiteCache;
use App\Extend\SystemUtil;
use App\Model\Site;
use App\Service\Api\BaseService;
use Hyperf\Di\Annotation\Inject;
class SiteListService extends BaseService
{
/**
* @var Site
*/
#[Inject]
protected Site $siteModel;
/**
* @return array
*/
public function handle(): array
{
$limit = $this->request->input('limit', 20);
$list = $this->siteModel
->when($name = $this->request->input('search_value'), function ($query) use ($name) {
$query->where('name', 'like', "%$name%");
})
// ->where('name', 'like', '%'.$this->request->input('search_value').'%')
->paginate($limit)
->toArray();
if (empty($list['data'])) return $this->return->success('success', ['list' => $list]);
foreach ($list['data'] as &$item) {
$item['gap'] = 0;
if (empty($this->request->input('lng')) || empty($this->request->input('lat'))) continue;
$item['gap'] = SystemUtil::calculateDistance(
['lng' => $this->request->input('lng'),'lat' => $this->request->input('lat')],
['lng' => $item['lng'], 'lat' => $item['lat']]
);
}
return $this->return->success('success', ['list' => $list]);
}
}