Browse Source

Merge branch 'master' of http://120.24.33.109:11081/hyzjshwo/lanzu_api_hyperf

# Conflicts:
#	config/routes.php
master
Lemon 5 years ago
parent
commit
a465148448
  1. 34
      app/Controller/v3/LocationController.php
  2. 41
      app/Service/v3/Implementations/LocationService.php
  3. 1
      app/Service/v3/Interfaces/LocationServiceInterface.php
  4. 1
      config/routes.php

34
app/Controller/v3/LocationController.php

@ -2,10 +2,15 @@
namespace App\Controller\v3;
use App\Constants\v3\ErrorCode;
use App\Controller\BaseController;
use App\Exception\ErrorCodeException;
use App\Model\v3\Market;
use App\Service\v3\Interfaces\LocationServiceInterface;
use Hyperf\Di\Annotation\Inject;
use Hyperf\Validation\Contract\ValidatorFactoryInterface;
use Hyperf\Validation\ValidationException;
/**
* 定位相关
* Class LocationController
@ -19,6 +24,12 @@ class LocationController extends BaseController
*/
protected $locationService;
/**
* @Inject()
* @var ValidatorFactoryInterface
*/
protected $validationFactory;
/**
* 获取当前用户定位最近的市场
* 1.用户上报经纬度数据
@ -47,4 +58,27 @@ class LocationController extends BaseController
return $this->success($ret);
}
public function addrSuggestion()
{
$validator = $this->validationFactory->make(
$this->request->all(),
['keyword' => 'required|nonempty'],
['keyword.*' => '关键字不能为空或undefined等']
);
if ($validator->fails()){
throw new ValidationException($validator);
}
$keyword = $this->request->input('keyword');
$marketId = $this->request->input('market_id');
$page = $this->request->input('page');
$pageSize = $this->request->input('pagesize');
$res = $this->locationService->placeSuggestion($keyword, $marketId, $page, $pageSize);
return $this->success($res);
}
}

41
app/Service/v3/Implementations/LocationService.php

@ -9,6 +9,9 @@ use App\Service\v3\Interfaces\LocationServiceInterface;
use App\Model\v3\Area;
use App\Model\v3\Market;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
use Hyperf\Guzzle\ClientFactory;
use Hyperf\Utils\ApplicationContext;
class LocationService implements LocationServiceInterface
{
@ -168,4 +171,42 @@ class LocationService implements LocationServiceInterface
$distance = $resultArr['result']['rows'][0]['elements'][0]['distance'];
return $distance;
}
/**
* 根据关键词进行地址提示
* 返回地址数据
* @param $keyword
* @param string $marketId
* @param int $page
* @param int $pageSize
* @return string
* @throws GuzzleException
*/
public function placeSuggestion($keyword, $marketId = '', $page = 1, $pageSize = 10)
{
$apiPath = 'https://apis.map.qq.com/ws/place/v1/suggestion';
$queryString = 'page_index='.urlencode($page).'&page_size='.urlencode($pageSize).'&policy=1&keyword='.urlencode($keyword).'&key='.config('map.tencent');
// 获取当前市场所在城市
if ($marketId) {
$cityId = Market::query()->where(['id' => $marketId])->value('city_id');
$cityName = Area::query()->where(['id' => $cityId])->value('name');
if ($cityName) {
$queryString .= '&region='.urlencode($cityName);
}
}
$client = ApplicationContext::getContainer()->get(ClientFactory::class)->create();
$response = $client->request('GET', $apiPath.'?'.$queryString);
$res = $response->getBody()->getContents();
$res = json_decode($res, true);
if ($res['status'] != 0) {
throw new ErrorCodeException($res['status'], $res['message']);
}
return $res;
}
}

1
app/Service/v3/Interfaces/LocationServiceInterface.php

@ -15,4 +15,5 @@ interface LocationServiceInterface
public function getDistance($lng1, $lat1, $lng2, $lat2, $unit = 2, $decimal = 2);
public function getDistanceByTencent($lng1, $lat1, $lng2, $lat2);
public function getNearestMarket($lng,$lat);
public function placeSuggestion($keyword, $marketId, $page = 1, $pageSize = 10);
}

1
config/routes.php

@ -98,6 +98,7 @@ Router::addGroup('/v3/', function () {
Router::post('paramsToken/analyze', 'App\Controller\v3\ParamsTokenController@analyze');
Router::post('goods/getTags', 'App\Controller\v3\GoodsController@getTags');
Router::post('home/market', 'App\Controller\v3\HomeController@marketInfo');
Router::post('location/addrSuggestion', 'App\Controller\v3\LocationController@addrSuggestion');
Router::post('horseman/getOrderList', 'App\Controller\v3\HorsemanController@getOrderList');
Router::post('horseman/getHorsemanCoordinate', 'App\Controller\v3\HorsemanController@getHorsemanCoordinate');
Router::post('horseman/getOrderCoordinate', 'App\Controller\v3\HorsemanController@getOrderCoordinate');

Loading…
Cancel
Save