user(); $query = OfflineOrder::query()->with(['store'])->filter($request->all())->orderBy('created_at', 'desc'); // 员工身份, 查询我创建的订单 if ($request->input('use_staff')) { $query->where('staff_id', $user->id); } // 用户身份, 查询我支付的订单 if ($request->input('use_user')) { $query->where('user_id', $user->id); } $list = $query->paginate($request->input('per_page')); return OfflineOrderResource::collection($list); } public function show(string $id) { $info = OfflineOrder::find($id); if (!$info) { throw new BizException("记录不存在"); } return OfflineOrderResource::make($info); } /** * 确认订单 */ public function check(Request $request, OfflineOrderService $offlineOrderService) { $request->validate([ 'order_preview_id' => ['bail', 'required', 'int'], ]); $preview = OfflineOrderPreview::findOrFail($request->input('order_preview_id')); return $offlineOrderService->check($request->user(), $preview); } /** * 创建订单 */ 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), ['user_remark' => $request->input('user_remark'), 'coupon_id' => $preview->coupon_id] ); 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); }); } }