From 4872dc48f9fbc56fa94411194685ccd53d4c5ddd Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Tue, 28 Jun 2022 11:51:27 +0800 Subject: [PATCH] fixed cart --- beike/Helpers.php | 13 ++++++++++++- beike/Shop/Http/Controllers/CartController.php | 11 +++++++++-- beike/Shop/Routes/shop.php | 1 + beike/Shop/Services/CartService.php | 13 ++++++++++--- 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/beike/Helpers.php b/beike/Helpers.php index 9b020fe5..abcf33b5 100644 --- a/beike/Helpers.php +++ b/beike/Helpers.php @@ -1,6 +1,7 @@ guard(AdminUser::AUTH_GUARD)->user(); } +/** + * 获取前台当前登录客户 + * + * @return Authenticatable|null + */ +function current_customer(): ?Authenticatable +{ + return auth()->guard(Customer::AUTH_GUARD)->user(); +} + /** * 获取缩略图 * diff --git a/beike/Shop/Http/Controllers/CartController.php b/beike/Shop/Http/Controllers/CartController.php index da32add2..00e1160b 100644 --- a/beike/Shop/Http/Controllers/CartController.php +++ b/beike/Shop/Http/Controllers/CartController.php @@ -3,8 +3,8 @@ namespace Beike\Shop\Http\Controllers; use Beike\Models\ProductSku; -use Beike\Services\CartService; use Illuminate\Http\Request; +use Beike\Shop\Services\CartService; class CartController extends Controller { @@ -12,13 +12,20 @@ class CartController extends Controller { $skuId = $request->sku_id; $quantity = $request->quantity ?? 1; + $customer = current_customer(); $sku = ProductSku::query() ->whereRelation('product', 'active', '=', true) ->findOrFail($skuId); - $cart = (new CartService)->add($sku, $quantity); + $cart = CartService::add($customer, $sku, $quantity); return $cart; } + + public function miniCart() + { + $customer = current_customer(); + return CartService::list($customer); + } } diff --git a/beike/Shop/Routes/shop.php b/beike/Shop/Routes/shop.php index 6df86779..b6e36b4b 100644 --- a/beike/Shop/Routes/shop.php +++ b/beike/Shop/Routes/shop.php @@ -18,6 +18,7 @@ Route::prefix('/') Route::get('/', [HomeController::class, 'index'])->name('home.index'); Route::post('carts', [CartController::class, 'store'])->name('carts.store'); + Route::get('carts/mini', [CartController::class, 'miniCart'])->name('carts.mini'); Route::get('categories', [CategoryController::class, 'index'])->name('categories.index'); Route::get('categories/{category}', [CategoryController::class, 'show'])->name('categories.show'); diff --git a/beike/Shop/Services/CartService.php b/beike/Shop/Services/CartService.php index 6565e1b0..7f33c321 100644 --- a/beike/Shop/Services/CartService.php +++ b/beike/Shop/Services/CartService.php @@ -9,7 +9,7 @@ * @modified 2022-01-05 10:12:57 */ -namespace Beike\Services; +namespace Beike\Shop\Services; use Beike\Models\Cart; @@ -17,10 +17,17 @@ use Beike\Models\ProductSku; class CartService { - public function add(ProductSku $sku, int $quantity) + public static function list($customer) + { + $cartList = Cart::query()->where('customer_id', $customer->id)->get(); + return $cartList; + } + + + public static function add($customer, ProductSku $sku, int $quantity) { $cart = Cart::query()->create([ - 'customer_id' => 0, + 'customer_id' => $customer->id, 'product_id' => $sku->product_id, 'product_sku_id' => $sku->id, 'quantity' => $quantity,