user(); $items = $user->dealerShoppingCartItems()->latest('id')->get(); $items->load('product'); $totalQty = $items->sum('quantity'); $data = []; foreach ($items as $item) { $data[] = [ 'id'=>$item->id, 'name' =>$item->name, 'cover'=>$item->cover, 'sell_price'=>$item->sell_price, 'dealer_price' =>$orderService->getSalePrice($user, $item->product, $totalQty), 'quantity'=>$item->quantity, ]; } return response()->json(['data'=>$data]); } /** * 加入购物车 */ public function store(Request $request) { $input = $request->validate([ 'product_id' => ['bail', 'required', 'int'], 'quantity' => ['bail', 'required', 'int', 'min:1'], ]); $product = DealerProduct::online()->findOrFail($input['product_id']); $shoppingCartItem = $request->user()->dealerShoppingCartItems()->firstOrCreate([ 'product_id' => $product->id, ], [ 'name' => $product->name, 'cover' => $product->cover, 'sell_price' => $product->price, 'quantity' => $input['quantity'], ]); if (!$shoppingCartItem->wasRecentlyCreated) { $shoppingCartItem->increment('quantity', $input['quantity']); } return response()->noContent(); } /** * 购物车变动 */ public function update($id, Request $request) { $input = $request->validate([ 'quantity' => ['bail', 'required', 'int', 'min:1'], ]); $shoppingCartItem = $request->user()->dealerShoppingCartItems()->findOrFail($id); $product = DealerProduct::online()->findOrFail($shoppingCartItem->product_id); $shoppingCartItem->update(array_merge($input, [ 'name' => $product->name, 'cover' => $product->cover, 'sell_price' => $product->price, ])); return response()->noContent(); } /** * 移出购物车 */ public function delete(Request $request) { $input = $request->validate([ 'ids' => ['bail', 'required', 'array'], ]); $request->user()->dealerShoppingCartItems()->whereIn('id', $input['ids'])->delete(); return response()->noContent(); } }