From 0f8ae94e22b7809b873221e302516da98d40b874 Mon Sep 17 00:00:00 2001 From: TL Date: Mon, 4 Jul 2022 19:54:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=B0=E5=9D=80=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- beike/Admin/Services/AddressService.php | 3 +- beike/Repositories/ZoneRepo.php | 2 +- .../Controllers/Account/AddressController.php | 33 +++++++++----- beike/Shop/Http/Requests/AddressRequest.php | 45 +++++++++++++++++++ .../Resources/Account/AddressResource.php | 32 +++++++++++++ beike/Shop/Routes/shop.php | 7 +-- beike/Shop/Services/AddressService.php | 33 ++++++++++++++ 7 files changed, 138 insertions(+), 17 deletions(-) create mode 100644 beike/Shop/Http/Requests/AddressRequest.php create mode 100644 beike/Shop/Http/Resources/Account/AddressResource.php create mode 100644 beike/Shop/Services/AddressService.php diff --git a/beike/Admin/Services/AddressService.php b/beike/Admin/Services/AddressService.php index c0d6f929..644c84c4 100644 --- a/beike/Admin/Services/AddressService.php +++ b/beike/Admin/Services/AddressService.php @@ -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'] ?? '', diff --git a/beike/Repositories/ZoneRepo.php b/beike/Repositories/ZoneRepo.php index 8d0be936..3a8ab766 100644 --- a/beike/Repositories/ZoneRepo.php +++ b/beike/Repositories/ZoneRepo.php @@ -47,7 +47,7 @@ class ZoneRepo */ public static function find($id) { - return Zone::query()->find($id); + return Zone::query()->findOrFail($id); } /** diff --git a/beike/Shop/Http/Controllers/Account/AddressController.php b/beike/Shop/Http/Controllers/Account/AddressController.php index 7445e795..7a75e3d1 100644 --- a/beike/Shop/Http/Controllers/Account/AddressController.php +++ b/beike/Shop/Http/Controllers/Account/AddressController.php @@ -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('删除成功'); } } diff --git a/beike/Shop/Http/Requests/AddressRequest.php b/beike/Shop/Http/Requests/AddressRequest.php new file mode 100644 index 00000000..672dba27 --- /dev/null +++ b/beike/Shop/Http/Requests/AddressRequest.php @@ -0,0 +1,45 @@ + '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', + ]; + } +} diff --git a/beike/Shop/Http/Resources/Account/AddressResource.php b/beike/Shop/Http/Resources/Account/AddressResource.php new file mode 100644 index 00000000..002e5e2f --- /dev/null +++ b/beike/Shop/Http/Resources/Account/AddressResource.php @@ -0,0 +1,32 @@ + $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; + } +} diff --git a/beike/Shop/Routes/shop.php b/beike/Shop/Routes/shop.php index d880831d..31c4158f 100644 --- a/beike/Shop/Routes/shop.php +++ b/beike/Shop/Routes/shop.php @@ -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'); diff --git a/beike/Shop/Services/AddressService.php b/beike/Shop/Services/AddressService.php new file mode 100644 index 00000000..3f3810c8 --- /dev/null +++ b/beike/Shop/Services/AddressService.php @@ -0,0 +1,33 @@ + + * @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; + } +}