地址管理
This commit is contained in:
parent
6640ec2728
commit
0f8ae94e22
|
|
@ -15,6 +15,7 @@ use Beike\Models\Category;
|
|||
use Beike\Models\CategoryPath;
|
||||
use Beike\Repositories\AddressRepo;
|
||||
use Beike\Repositories\CustomerRepo;
|
||||
use Beike\Repositories\ZoneRepo;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class AddressService
|
||||
|
|
@ -45,7 +46,7 @@ class AddressService
|
|||
'phone' => $data['phone'] ?? '',
|
||||
'country_id' => (int)$data['country_id'] ?? 0,
|
||||
'zone_id' => (int)$data['zone_id'] ?? 0,
|
||||
'zone' => $data['zone'] ?? '',
|
||||
'zone' => ZoneRepo::find($data['zone_id'])->name,
|
||||
'city_id' => (int)$data['city_id'] ?? 0,
|
||||
'city' => $data['city'] ?? '',
|
||||
'zipcode' => $data['zipcode'] ?? '',
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ class ZoneRepo
|
|||
*/
|
||||
public static function find($id)
|
||||
{
|
||||
return Zone::query()->find($id);
|
||||
return Zone::query()->findOrFail($id);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -12,9 +12,10 @@
|
|||
namespace Beike\Shop\Http\Controllers\Account;
|
||||
|
||||
use Beike\Shop\Http\Controllers\Controller;
|
||||
use Beike\Shop\Http\Resources\CustomerResource;
|
||||
use Beike\Shop\Http\Requests\AddressRequest;
|
||||
use Beike\Shop\Http\Resources\Account\AddressResource;
|
||||
use Beike\Repositories\AddressRepo;
|
||||
use Beike\Repositories\CustomerRepo;
|
||||
use Beike\Shop\Services\AddressService;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class AddressController extends Controller
|
||||
|
|
@ -23,28 +24,36 @@ class AddressController extends Controller
|
|||
{
|
||||
$addresses = AddressRepo::listByCustomer(current_customer());
|
||||
$data = [
|
||||
'addresses' => CustomerResource::collection($addresses),
|
||||
'addresses' => AddressResource::collection($addresses),
|
||||
];
|
||||
|
||||
return view('account/address', $data);
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
public function show(Request $request, $id)
|
||||
{
|
||||
$data = $request->only(['name', 'phone', 'country_id', 'state_id', 'state', 'city_id', 'city', 'zipcode', 'address_1', 'address_2']);
|
||||
$data['customer_id'] = current_customer()->customer_id;
|
||||
return AddressRepo::create($data);
|
||||
$address = AddressRepo::find($id);
|
||||
|
||||
return json_success('获取成功', new AddressResource($address));
|
||||
}
|
||||
|
||||
public function update(Request $request, int $addressId)
|
||||
public function store(AddressRequest $request)
|
||||
{
|
||||
return AddressRepo::update($addressId, $request->only(['name', 'phone', 'country_id', 'state_id', 'state', 'city_id', 'city', 'zipcode', 'address_1', 'address_2']));
|
||||
$data = $request->only(['name', 'phone', 'country_id', 'zone_id', 'zone', 'city_id', 'city', 'zipcode', 'address_1', 'address_2']);
|
||||
$address = AddressService::create($data);
|
||||
return json_success('创建成功', new AddressResource($address));
|
||||
}
|
||||
|
||||
public function destroy(Request $request, int $addressId)
|
||||
public function update(AddressRequest $request, int $id)
|
||||
{
|
||||
AddressRepo::delete($addressId);
|
||||
$address = AddressRepo::update($id, $request->only(['name', 'phone', 'country_id', 'zone_id', 'zone', 'city_id', 'city', 'zipcode', 'address_1', 'address_2']));
|
||||
return json_success('更新成功', new AddressResource($address));
|
||||
}
|
||||
|
||||
return ['success' => true];
|
||||
public function destroy(Request $request, int $id)
|
||||
{
|
||||
AddressRepo::delete($id);
|
||||
|
||||
return json_success('删除成功');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
|
||||
namespace Beike\Shop\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class AddressRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'name' => 'required',
|
||||
'phone' => 'required',
|
||||
'country_id' => 'required|exists:countries,id',
|
||||
'zone_id' => 'required|exists:zones,id',
|
||||
'address_1' => 'required',
|
||||
];
|
||||
}
|
||||
|
||||
public function attributes()
|
||||
{
|
||||
return [
|
||||
'name' => '姓名',
|
||||
'phone' => '电话号码',
|
||||
'country_id' => '国家ID',
|
||||
'zone_id' => '省份ID',
|
||||
'address_1' => '地址1',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
|
||||
namespace Beike\Shop\Http\Resources\Account;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class AddressResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$data = [
|
||||
'name' => $this->name,
|
||||
'phone' => $this->phone,
|
||||
'country_id' => $this->country_id,
|
||||
'country' => $this->country->name,
|
||||
'zone_id' => $this->zone_id,
|
||||
'zone' => $this->zone,
|
||||
'city' => $this->city,
|
||||
'zipcode' => $this->zipcode,
|
||||
'address_1' => $this->address_1,
|
||||
'address_2' => $this->address_2,
|
||||
];
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
|
@ -43,11 +43,12 @@ Route::prefix('/')
|
|||
Route::post('register', [RegisterController::class, 'store'])->name('register.store');
|
||||
Route::get('logout', [LogoutController::class, 'index'])->name('logout');
|
||||
|
||||
Route::middleware('shop_auth:' . Customer::AUTH_GUARD)
|
||||
Route::prefix('account/')
|
||||
->middleware('shop_auth:' . Customer::AUTH_GUARD)
|
||||
->group(function () {
|
||||
Route::get('account', [AccountController::class, 'index'])->name('account.index');
|
||||
Route::get('/', [AccountController::class, 'index'])->name('account.index');
|
||||
|
||||
Route::resource('account/addresses', AddressController::class);
|
||||
Route::resource('addresses', AddressController::class);
|
||||
});
|
||||
|
||||
Route::get('/{url_key}', [PagesController::class, 'show'])->name('pages.show');
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
/**
|
||||
* AddressService.php
|
||||
*
|
||||
* @copyright 2022 opencart.cn - All Rights Reserved
|
||||
* @link http://www.guangdawangluo.com
|
||||
* @author Sam Chen <sam.chen@opencart.cn>
|
||||
* @created 2022-07-04 18:52:57
|
||||
* @modified 2022-07-04 18:52:57
|
||||
*/
|
||||
|
||||
namespace Beike\Shop\Services;
|
||||
|
||||
|
||||
|
||||
use Beike\Repositories\AddressRepo;
|
||||
|
||||
class AddressService
|
||||
{
|
||||
public static function create($data)
|
||||
{
|
||||
$data['customer_id'] = current_customer()->customer_id;
|
||||
$address = AddressRepo::create($data);
|
||||
return $address;
|
||||
}
|
||||
|
||||
public static function update($id, $data)
|
||||
{
|
||||
$address = AddressRepo::update($id, $data);
|
||||
|
||||
return $address;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue