user()->shoppingCartItems()->with(['sku'])->has('sku')->latest('id')->get(); return ShoppingCartItemResource::collection($items); } /** * 添加购物车商品 * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $input = $request->validate([ 'sku_id' => ['bail', 'required'], 'quantity' => ['bail', 'required', 'int', 'min:1'], ]); $sku = ProductSku::whereRelation('category', 'is_show', true)->online()->find($input['sku_id']); if ($sku === null) { throw new BizException(__('Product has been removed')); } $item = $request->user()->shoppingCartItems()->firstOrCreate([ 'sku_id' => $sku->id, ], [ 'quantity' => $input['quantity'], ]); if (! $item->wasRecentlyCreated) { $item->increment('quantity', $input['quantity']); } return response()->noContent(); } /** * 修改购物车商品 * * @param int $id * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function update($id, Request $request) { $input = $request->validate([ 'quantity' => ['bail', 'required', 'int', 'min:1'], ]); $item = $request->user()->shoppingCartItems()->findOrFail($id); $item->update($input); return response()->noContent(); } /** * 删除购物车商品 * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function delete(Request $request) { $input = $request->validate([ 'ids' => ['bail', 'required', 'array'], ]); $request->user()->shoppingCartItems()->whereIn('id', $input['ids'])->delete(); return response()->noContent(); } }