validate([ 'order_preview_id' => ['bail', 'required', 'int'], ]); $preview = OfflineOrderPreview::findOrFail($request->input('order_preview_id')); return $offlineOrderService->check($request->user(), $preview->payload['items']); } /** * 创建订单 */ public function store(Request $request, OfflineOrderService $offlineOrderService) { $request->validate([ 'order_preview_id' => ['bail', 'required', 'int'], 'points' => ['bail', 'nullable', 'numeric', 'min:0'], ]); try { DB::beginTransaction(); $preview = OfflineOrderPreview::findOrFail($request->input('order_preview_id')); $order = $offlineOrderService->create( $request->user(), $preview, bcmul($request->input('points', 0), 100), ); DB::commit(); } catch (Throwable $th) { report($th); throw $th; } return $order; } /** * 订单付款 */ public function pay($id, Request $request) { $user = $request->user(); return DB::transaction(function () use ($id, $user) { $order = OfflineOrder::where('user_id', $user->id) ->where('id', $id) ->firstOrFail(); return (new OfflineOrderService())->pay($order, PayWay::WxpayMiniProgram); }); } }