From 6c8ec6d6453ce1bba7b5b64f29ffb29f1550275a Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Tue, 28 Jun 2022 20:53:47 +0800 Subject: [PATCH] cart --- beike/Shop/Http/Controllers/CartController.php | 14 ++++++-------- beike/Shop/Http/Resources/CartList.php | 1 + beike/Shop/Routes/shop.php | 2 ++ beike/Shop/Services/CartService.php | 10 ++++++++-- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/beike/Shop/Http/Controllers/CartController.php b/beike/Shop/Http/Controllers/CartController.php index 0217f994..d2e706d5 100644 --- a/beike/Shop/Http/Controllers/CartController.php +++ b/beike/Shop/Http/Controllers/CartController.php @@ -23,32 +23,30 @@ class CartController extends Controller * * POST /carts/select {sku_ids:[product_sku_id, product_sku_id]} * @param Request $request - * @return View + * @return array */ - public function select(Request $request): View + public function select(Request $request): array { $productSkuIds = $request->get('sku_ids'); $customer = current_customer(); CartService::select($customer, $productSkuIds); - $data = CartService::reloadData(); - return view("cart", $data); + return CartService::reloadData(); } /** * PUT /carts/{cart_id} {quantity: 123} * @param Request $request * @param $cartId - * @return View + * @return array */ - public function update(Request $request, $cartId): View + public function update(Request $request, $cartId): array { $customer = current_customer(); $quantity = $request->get('quantity'); CartService::updateQuantity($customer, $cartId, $quantity); - $data = CartService::reloadData(); - return view("cart", $data); + return CartService::reloadData(); } diff --git a/beike/Shop/Http/Resources/CartList.php b/beike/Shop/Http/Resources/CartList.php index 2094986a..f19d8640 100644 --- a/beike/Shop/Http/Resources/CartList.php +++ b/beike/Shop/Http/Resources/CartList.php @@ -21,6 +21,7 @@ class CartList extends JsonResource $description = $sku->product->description; $subTotal = $price * $this->quantity; return [ + 'cart_id' => $this->id, 'product_id' => $this->product_id, 'sku_id' => $this->product_sku_id, 'name' => $description->name, diff --git a/beike/Shop/Routes/shop.php b/beike/Shop/Routes/shop.php index acc8fcdd..138e768b 100644 --- a/beike/Shop/Routes/shop.php +++ b/beike/Shop/Routes/shop.php @@ -23,6 +23,8 @@ Route::prefix('/') Route::get('carts', [CartController::class, 'index'])->name('carts.index'); Route::post('carts', [CartController::class, 'store'])->name('carts.store'); Route::get('carts/mini', [CartController::class, 'miniCart'])->name('carts.mini'); + Route::put('carts/{cart}', [CartController::class, 'update'])->name('carts.update'); + Route::post('carts/select', [CartController::class, 'select'])->name('carts.select'); Route::get('checkout', [CheckoutController::class, 'index'])->name('checkout.index'); diff --git a/beike/Shop/Services/CartService.php b/beike/Shop/Services/CartService.php index 24e1b6f8..c5e87677 100644 --- a/beike/Shop/Services/CartService.php +++ b/beike/Shop/Services/CartService.php @@ -80,9 +80,12 @@ class CartService */ public static function select($customer, $productSkuIds) { + if (empty($productSkuIds)) { + return; + } Cart::query()->where('customer_id', $customer->id) ->whereIn('product_sku_id', $productSkuIds) - ->update(['selected', 1]); + ->update(['selected' => 1]); } @@ -91,9 +94,12 @@ class CartService */ public static function updateQuantity($customer, $cartId, $quantity) { + if (empty($cartId)) { + return; + } Cart::query()->where('customer_id', $customer->id) ->where('id', $cartId) - ->update(['quantity', $quantity]); + ->update(['quantity' => $quantity]); }