1
0

提交代码

This commit is contained in:
2020-08-06 14:45:56 +08:00
commit 9d0d5f4be9
361 changed files with 36445 additions and 0 deletions

View File

@@ -0,0 +1,114 @@
<?php
namespace App\Http\Controllers;
use GuzzleHttp\Client;
use Illuminate\Http\Request;
use RuLong\Area\Models\Area;
use Session;
class LocationController extends Controller
{
public function __construct(Request $request)
{
view()->share('nav', 2);
}
//自动设置默认地区
public function setLocation(Request $request)
{
$lat = $request->lat;
$lng = $request->lng;
if (!$lat || !$lng) {
return $this->error('设置失败');
}
$location = $this->getDefaultLocation();
if (!$location['real_area']) {
$url = "http://api.map.baidu.com/geocoder";
$client = new Client();
$response = $client->request('GET', $url, [
'timeout' => 30,
'query' => [
'location' => $lat . "," . $lng,
'output' => 'json',
],
]);
if ($response->getStatusCode() == 200) {
$data = json_decode($response->getBody()->getContents(), true);
$city = $data['result']['addressComponent']['city'];
} else {
return $this->location($url);
}
$area = Area::where('name', $city)->first();
//如果地址没有开通,默认哈尔滨
if ($area->status != 1) {
$area = Area::where('sn', '230100')->first();
$lat = $area->lat;
$lng = $area->lng;
}
Session::put('lat', $lat);
Session::put('lng', $lng);
Session::put('area', $area);
Session::put('real_area', $area);
return $this->success($city);
} else {
Session::put('lat', $lat);
Session::put('lng', $lng);
return $this->error(json_encode($location));
}
}
//设置地区
public function setArea(Request $request)
{
$area_id = $request->area_id;
if ($area_id) {
$area = Area::find($area_id);
} else {
$area = [
"id" => 0,
"sn" => 0,
"psn" => 0,
"province" => "全国",
"city" => "全国",
"area" => "",
"name" => "全国",
];
$area = (object) $area;
}
session(['area' => $area]);
$url = route('pick.lists');
$callback = session('address_callback', '');
if ($callback) {
$url = $callback;
}
return $this->success('设置成功', $url);
}
//设置城市
public function address(Request $request)
{
$name = $request->name ?? '';
$callback = $request->callback ?? '';
if ($callback) {
session(['address_callback' => $callback]);
}
$location = $this->getDefaultLocation();
if (empty($name)) {
$addresses = Area::where('psn', 0)->get();
} else {
$addresses = Area::where('name', 'like', "%{$name}%")->where('type', '地级')->get();
}
$hots = Area::where('hot', 1)->get();
return view('location.address', compact('addresses', 'location', 'hots', 'name'));
}
}