From e240b8363aadee8969e1a6ae269f9793ad01679d Mon Sep 17 00:00:00 2001 From: TL Date: Mon, 25 Jul 2022 21:00:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E6=94=B6=E8=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- beike/Models/CustomerWishlist.php | 2 +- beike/Repositories/CustomerRepo.php | 16 ++++++---- .../Account/WishlistController.php | 22 +++++++------- .../Http/Resources/Account/WishlistDetail.php | 29 +++++++++++++++++++ 4 files changed, 50 insertions(+), 19 deletions(-) create mode 100644 beike/Shop/Http/Resources/Account/WishlistDetail.php diff --git a/beike/Models/CustomerWishlist.php b/beike/Models/CustomerWishlist.php index a4ffad26..57cdceac 100644 --- a/beike/Models/CustomerWishlist.php +++ b/beike/Models/CustomerWishlist.php @@ -13,6 +13,6 @@ class CustomerWishlist extends Base public function product(): HasOne { - return $this->hasOne(Product::class); + return $this->hasOne(Product::class, 'id', 'product_id'); } } diff --git a/beike/Repositories/CustomerRepo.php b/beike/Repositories/CustomerRepo.php index 91394b61..39d77c99 100644 --- a/beike/Repositories/CustomerRepo.php +++ b/beike/Repositories/CustomerRepo.php @@ -13,6 +13,10 @@ namespace Beike\Repositories; use Beike\Models\Customer; use Beike\Models\CustomerWishlist; +use Illuminate\Contracts\Pagination\LengthAwarePaginator; +use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Collection; +use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Hash; class CustomerRepo @@ -20,7 +24,7 @@ class CustomerRepo /** * 创建一个customer记录 * @param $customerData - * @return int + * @return Builder|Model */ public static function create($customerData) { @@ -51,7 +55,7 @@ class CustomerRepo /** * @param $id - * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Eloquent\Model|null + * @return Builder|Builder[]|Collection|Model|null */ public static function find($id) { @@ -69,9 +73,9 @@ class CustomerRepo /** * @param $data - * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator + * @return LengthAwarePaginator */ - public static function list($data) + public static function list($data): LengthAwarePaginator { $builder = Customer::query()->with("customerGroup.description"); @@ -102,7 +106,7 @@ class CustomerRepo /** * @param $customer, Customer对象或id * @param $productId - * @return Customer|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Eloquent\Model|mixed|null + * @return Customer|Builder|Builder[]|Collection|Model|mixed|null */ public static function addToWishlist($customer, $productId) { @@ -129,7 +133,7 @@ class CustomerRepo return $customer; } - public static function wishlists($customer) + public static function wishlists($customer): LengthAwarePaginator { if (!$customer instanceof Customer) { $customer = Customer::query()->findOrFail($customer); diff --git a/beike/Shop/Http/Controllers/Account/WishlistController.php b/beike/Shop/Http/Controllers/Account/WishlistController.php index 998e1f39..de50fb3a 100644 --- a/beike/Shop/Http/Controllers/Account/WishlistController.php +++ b/beike/Shop/Http/Controllers/Account/WishlistController.php @@ -13,39 +13,37 @@ namespace Beike\Shop\Http\Controllers\Account; use Beike\Repositories\CustomerRepo; use Beike\Shop\Http\Controllers\Controller; -use Beike\Shop\Http\Requests\AddressRequest; -use Beike\Shop\Http\Resources\Account\AddressResource; -use Beike\Repositories\AddressRepo; -use Beike\Shop\Services\AddressService; +use Beike\Shop\Http\Resources\Account\WishlistDetail; use Illuminate\Http\Request; -use Beike\Repositories\CountryRepo; class WishlistController extends Controller { - public function index(Request $request) + public function index() { - $wishlists = CustomerRepo::wishlists(current_customer(), $request->get('product_id')); + $wishlists = CustomerRepo::wishlists(current_customer()); $data = [ - 'wishlist' => $wishlists, + 'wishlist' => WishlistDetail::collection($wishlists)->jsonSerialize(), ]; return view('account/wishlist', $data); } - public function add(Request $request, $productId) + public function add(Request $request): array { + $productId = $request->get('product_id'); CustomerRepo::addToWishlist(current_customer(), $productId); - $wishlists = CustomerRepo::wishlists(current_customer(), $request->get('product_id')); + $wishlists = CustomerRepo::wishlists(current_customer()); return json_success('加入收藏成功', $wishlists); } - public function remove(Request $request, $productId) + public function remove(Request $request): array { + $productId = $request->get('product_id'); CustomerRepo::removeFromWishlist(current_customer(), $productId); - $wishlists = CustomerRepo::wishlists(current_customer(), $request->get('product_id')); + $wishlists = CustomerRepo::wishlists(current_customer()); return json_success('移除收藏成功', $wishlists); } diff --git a/beike/Shop/Http/Resources/Account/WishlistDetail.php b/beike/Shop/Http/Resources/Account/WishlistDetail.php new file mode 100644 index 00000000..b5521119 --- /dev/null +++ b/beike/Shop/Http/Resources/Account/WishlistDetail.php @@ -0,0 +1,29 @@ + + * @created 2022-07-25 20:39:55 + * @modified 2022-07-25 20:39:55 + */ + +namespace Beike\Shop\Http\Resources\Account; + +use Illuminate\Http\Resources\Json\JsonResource; + +class WishlistDetail extends JsonResource +{ + public function toArray($request): array + { + $data = [ + 'id' => $this->id, + 'image' => image_resize($this->product->image, 100, 100), + 'product_name' => $this->product->description->name, + 'price' => currency_format($this->product->price) + ]; + + return $data; + } +}