125 lines
3.5 KiB
PHP
125 lines
3.5 KiB
PHP
<?php
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: sunny
|
|
* Date: 2019/2/1
|
|
* Time: 1:25 PM
|
|
*/
|
|
|
|
namespace App\Api\Controllers;
|
|
|
|
use App\Api\Resources\AddressResource;
|
|
use RuLong\Area\Models\Area;
|
|
use RuLong\Area\Models\UserAddress;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class AddressController extends Controller
|
|
{
|
|
public function __construct()
|
|
{
|
|
$this->middleware('auth.api');
|
|
$this->user = \Auth::guard('api')->user();
|
|
$this->uid = \Auth::guard('api')->id();
|
|
|
|
}
|
|
|
|
/**
|
|
* 小程序收货地址列表页数据,页面初始化时请求该接口
|
|
*/
|
|
public function index()
|
|
{
|
|
$addresses = $this->user->addresses()->orderBy('is_default', 'desc')->orderBy('id', 'desc')->get();
|
|
return AddressResource::collection($addresses)->additional([
|
|
'status' => 'SUCCESS',
|
|
'status_code' => 200,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 小程序编辑收货地址,页面初始化时请求该接口
|
|
*/
|
|
public function detail(UserAddress $address)
|
|
{
|
|
return $this->success(new AddressResource($address));
|
|
}
|
|
|
|
/**
|
|
* 新建保存/编辑更新操作 小程序新建、编辑页面点击保存时请求该接口。
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return array
|
|
*/
|
|
public function update(Request $request)
|
|
{
|
|
$address = [];
|
|
if ($request->id) {
|
|
$address = UserAddress::find($request->id);
|
|
}
|
|
$data = [
|
|
'name' => $request->name,
|
|
'mobile' => $request->mobile,
|
|
'province_sn' => $request->province_sn,
|
|
'city_sn' => $request->city_sn,
|
|
'area_sn' => $request->area_sn,
|
|
'address' => $request->address,
|
|
];
|
|
if (!empty($address)) {
|
|
$res = \Address::update($address, $data);
|
|
} else {
|
|
$res = \Address::store(
|
|
[
|
|
'user_id' => $this->uid,
|
|
'name' => $request->name,
|
|
'mobile' => $request->mobile,
|
|
'province_sn' => $request->province_sn,
|
|
'city_sn' => $request->city_sn,
|
|
'area_sn' => $request->area_sn,
|
|
'address' => $request->address,
|
|
]
|
|
);
|
|
}
|
|
|
|
if ($res) {
|
|
return $this->success(['msg' => '修改成功']);
|
|
} else {
|
|
return $this->failed('修改失败');
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* 小程序删除收货地址,地址管理页请求该接口
|
|
*/
|
|
public function delete($id)
|
|
{
|
|
if (\Address::destroy($id)) {
|
|
return $this->success(['msg' => '操作成功']);
|
|
} else {
|
|
return $this->failed('操作失败');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 省市区三级联动返回数据,小程序新建/编辑收货地址中切换省市区时出现。
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return array
|
|
*/
|
|
public function areas(Request $request)
|
|
{
|
|
$psn = $request->psn;
|
|
if ($psn == 0) {
|
|
$areas = Area::where('psn', $psn)->where('depth', 1)->select(DB::raw('sn as id'), 'sn', 'psn', 'name', DB::raw('depth as type'))->get() ?? [];
|
|
} else {
|
|
$areas = Area::where(['psn' => $psn])->select(DB::raw('sn as id'), 'sn', 'psn', 'name', DB::raw('depth as type'))->get() ?? [];
|
|
}
|
|
if ($areas) {
|
|
return $this->success($areas);
|
|
} else {
|
|
return $this->failed('请选择省份/城市');
|
|
}
|
|
}
|
|
|
|
|
|
}
|