validate([ 'shipping_address_id' => ['bail', 'required', 'int'], 'product_id'=>['bail', 'required', 'int', 'min:0'], 'num'=>['bail', 'required', 'int', 'min:1'], ], [], [ 'product_id' => '商品', 'num' => '数量', 'shipping_address_id' => '收货地址', ]); $product = DealerProduct::online()->findOrFail($input['product_id']); try { DB::beginTransaction(); $order = $orderService->createOrder($request->user(), $product, $input['num'], $input['shipping_address_id']); DB::commit(); } catch (BizException $e) { DB::rollBack(); throw $e; } catch (Throwable $th) { DB::rollBack(); report($th); throw new BizException('下单失败,请稍后再试'); } return OrderResource::make($order); } public function show($id, Request $request) { } /** * 计算订单价格 * * @return void */ public function totalAmount(Request $request, OrderService $orderService) { $input = $request->validate([ 'product_id'=>['bail', 'required', 'int', 'min:0'], 'num'=>['bail', 'required', 'int', 'min:1'], ]); $product = DealerProduct::online()->findOrFail($input['product_id']); return response()->json([ 'total_amount'=> $orderService->totalAmount($request->user(), $product, $input['num']), ]); } }