diff --git a/beike/Shop/Http/Controllers/CartController.php b/beike/Shop/Http/Controllers/CartController.php index 178b1955..b149eb95 100644 --- a/beike/Shop/Http/Controllers/CartController.php +++ b/beike/Shop/Http/Controllers/CartController.php @@ -3,6 +3,7 @@ namespace Beike\Shop\Http\Controllers; use Beike\Models\ProductSku; +use Beike\Shop\Http\Requests\CartRequest; use Illuminate\Http\Request; use Illuminate\Contracts\View\View; use Beike\Shop\Services\CartService; @@ -84,11 +85,11 @@ class CartController extends Controller /** * 创建购物车 * - * @param Request $request + * @param CartRequest $request * @return mixed * @throws \Exception */ - public function store(Request $request) + public function store(CartRequest $request) { $skuId = $request->sku_id; $quantity = $request->quantity ?? 1; diff --git a/beike/Shop/Http/Requests/CartRequest.php b/beike/Shop/Http/Requests/CartRequest.php new file mode 100644 index 00000000..262c459f --- /dev/null +++ b/beike/Shop/Http/Requests/CartRequest.php @@ -0,0 +1,58 @@ + + * @created 2022-08-26 14:21:32 + * @modified 2022-08-26 14:21:32 + */ + +namespace Beike\Shop\Http\Requests; + +use Beike\Models\ProductSku; +use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Rule; + +class CartRequest extends FormRequest +{ + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize(): bool + { + return true; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + $skuId = (int)$this->get('sku_id'); + + return [ + 'sku_id' => 'required|int', + 'quantity' => ['required', 'int', function ($attribute, $value, $fail) use ($skuId) { + $skuQuantity = ProductSku::query()->where('id', $skuId)->value('quantity'); + if ($value > $skuQuantity) { + $fail(trans('cart.stock_out')); + } + }], + 'buy_now' => 'bool' + ]; + } + + public function attributes() + { + return [ + 'sku_id' => trans('cart.sku_id'), + 'quantity' => trans('cart.quantity'), + ]; + } +} diff --git a/resources/lang/en/cart.php b/resources/lang/en/cart.php new file mode 100644 index 00000000..c63f0e90 --- /dev/null +++ b/resources/lang/en/cart.php @@ -0,0 +1,14 @@ + + * @created 2022-08-26 15:25:29 + * @modified 2022-08-26 15:25:29 + */ + +return [ + 'stock_out' => 'Stock Out', +]; diff --git a/resources/lang/zh_cn/cart.php b/resources/lang/zh_cn/cart.php new file mode 100644 index 00000000..7441096c --- /dev/null +++ b/resources/lang/zh_cn/cart.php @@ -0,0 +1,14 @@ + + * @created 2022-08-26 15:25:29 + * @modified 2022-08-26 15:25:29 + */ + +return [ + 'stock_out' => '库存不足', +];