You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
2.9 KiB
122 lines
2.9 KiB
<?php
|
|
|
|
namespace App\Http\Controllers\User;
|
|
|
|
use App\Http\Requests\AddressRequest;
|
|
use App\Models\Address;
|
|
use App\Models\User;
|
|
use Auth;
|
|
use DB;
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Controllers\Controller;
|
|
|
|
class AddressController extends Controller
|
|
{
|
|
|
|
public function index()
|
|
{
|
|
$addresses = auth()->user()->addresses;
|
|
|
|
// Provincial and municipal regions
|
|
$provinces = DB::table('provinces')->get();
|
|
$cities = DB::table('cities')->where('province_id', $provinces->first()->id)->get();
|
|
|
|
return view('user.addresses.index', compact('addresses', 'provinces', 'cities'));
|
|
}
|
|
|
|
|
|
public function store(AddressRequest $request)
|
|
{
|
|
$addressesData = $this->getFormatRequest($request);
|
|
|
|
//
|
|
/**
|
|
* @var $user User
|
|
*/
|
|
$user = auth()->user();
|
|
$user->addresses()->create($addressesData);
|
|
|
|
return back()->with('status', '创建成功');
|
|
}
|
|
|
|
|
|
public function show(Address $address)
|
|
{
|
|
return $address;
|
|
}
|
|
|
|
|
|
public function edit(Address $address)
|
|
{
|
|
if (auth()->id() != $address->user_id) {
|
|
|
|
abort(403, '非法操作');
|
|
}
|
|
|
|
$addresses = auth()->user()->addresses;
|
|
// Provincial and municipal regions
|
|
$provinces = DB::table('provinces')->get();
|
|
$cities = DB::table('cities')->where('province_id', $address->province_id)->get();
|
|
|
|
return view('user.addresses.edit', compact('addresses', 'address', 'provinces', 'cities'));
|
|
}
|
|
|
|
|
|
public function update(AddressRequest $request, Address $address)
|
|
{
|
|
if (auth()->id() != $address->user_id) {
|
|
|
|
abort(403, '非法操作');
|
|
}
|
|
|
|
$addressesData = $this->getFormatRequest($request);
|
|
|
|
$address->update($addressesData);
|
|
|
|
return back()->with('status', '修改成功');
|
|
}
|
|
|
|
public function destroy(Address $address)
|
|
{
|
|
if (auth()->id() != $address->user_id) {
|
|
|
|
return responseJson(400, '非法操作');
|
|
}
|
|
|
|
$address->delete();
|
|
|
|
return responseJson(200, '删除成功');
|
|
}
|
|
|
|
|
|
public function setDefaultAddress(Address $address)
|
|
{
|
|
if (auth()->id() != $address->user_id) {
|
|
|
|
return responseJson(400, '非法操作');
|
|
}
|
|
|
|
Address::query()->where('user_id', $address->user_id)->update(['is_default' => 0]);
|
|
$address->is_default = 1;
|
|
|
|
if ($address->save()) {
|
|
|
|
return responseJson(0, '设置成功');
|
|
}
|
|
|
|
return responseJson(400, '请稍后再试!');
|
|
}
|
|
|
|
|
|
protected function getFormatRequest(Request $request)
|
|
{
|
|
return $request->only(['name', 'phone', 'province_id', 'city_id','detail_address']);
|
|
}
|
|
|
|
|
|
public function getCities(Request $request)
|
|
{
|
|
return DB::table('cities')->where('province_id', $request->input('province_id'))->get();
|
|
}
|
|
}
|