Files
water-back/modules/Mall/Http/Controllers/Api/AddressController.php
2023-01-12 14:47:38 +08:00

161 lines
4.1 KiB
PHP

<?php
namespace Modules\Mall\Http\Controllers\Api;
use App\Api\Controllers\Controller;
use Exception;
use Illuminate\Http\Request;
use Jason\Api\Api;
use Modules\Mall\Http\Requests\Address\AddressRequest;
use Modules\Mall\Http\Resources\Api\Address\AddressResource;
use Modules\Mall\Models\Address;
use Modules\Mall\Models\Region;
class AddressController extends Controller
{
/**
* Notes: 地址列表
*
* @Author: <C.Jason>
* @Date : 2020/11/5 5:09 下午
* @return mixed
*/
public function index()
{
$addresses = Address::byUser(Api::user())->orderBy('is_default', 'desc')->get();
return $this->success(AddressResource::collection($addresses));
}
/**
* Notes: 创建地址,展示地区联动数据
*
* @Author: <C.Jason>
* @Date : 2020/11/5 5:10 下午
*/
public function create(Request $request)
{
$parentId = $request->parent_id ?? 1;
$list = Region::where('parent_id', $parentId)->get();
return $this->success($list);
}
/**
* Notes: 保存地址
*
* @Author: <C.Jason>
* @Date : 2020/11/5 5:13 下午
* @param \Modules\Mall\Http\Requests\Address\AddressRequest $request
* @return mixed
*/
public function store(AddressRequest $request)
{
$result = Address::create([
'user_id' => Api::userId(),
'name' => $request->name,
'mobile' => $request->mobile,
'province_id' => $request->province_id,
'city_id' => $request->city_id,
'district_id' => $request->district_id,
'address' => $request->address,
'is_default' => $request->is_default,
]);
if ($result) {
return $this->success('操作成功');
} else {
return $this->failed('失败');
}
}
/**
* Notes: 地址详情,如果不是自己的地址,不显示
*
* @Author: <C.Jason>
* @Date : 2020/11/5 5:31 下午
* @param Address $address
* @return mixed
*/
public function show(Address $address)
{
if ($address->user()->isNot(Api::user())) {
return $this->failed('', 404);
}
return $this->success(new AddressResource($address));
}
/**
* Notes: 设置默认地址
*
* @Author: <C.Jason>
* @Date : 2020/11/5 5:34 下午
* @param Address $address
* @return mixed
*/
public function setDefault(Address $address)
{
if ($address->user()->isNot(Api::user())) {
return $this->failed('', 404);
}
try {
$address->setDefault();
return $this->success('操作成功');
} catch (Exception $exception) {
return $this->failed('失败');
}
}
/**
* Notes: 更新地址
*
* @Author: <C.Jason>
* @Date : 2020/11/5 5:40 下午
*/
public function update(AddressRequest $request, Address $address)
{
if ($address->user()->isNot(Api::user())) {
return $this->failed('', 404);
}
$address->update([
'name' => $request->name,
'mobile' => $request->mobile,
'province_id' => $request->province_id,
'city_id' => $request->city_id,
'district_id' => $request->district_id,
'address' => $request->address,
'is_default' => $request->is_default,
]);
return $this->success('操作成功');
}
/**
* Notes: 删除地址
*
* @Author: <C.Jason>
* @Date : 2020/11/5 5:52 下午
* @param Address $address
* @return mixed
*/
public function destroy(Address $address)
{
if ($address->user()->isNot(Api::user())) {
return $this->failed('', 404);
}
try {
$address->delete();
return $this->success('操作成功');
} catch (Exception$exception) {
return $this->failed('失败');
}
}
}