0
0
Files
Babyclass/app/Api/Controllers/AddressController.php
2020-08-04 10:09:42 +08:00

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('请选择省份/城市');
}
}
}