get(); return VipResource::collection($list); } public function buy(Request $request) { $request->validate([ 'vip_id' => 'required' ]); $vip = Vip::findOrFail($request->input('vip_id')); $service = new VipService(); try { DB::beginTransaction(); $user_vip = $service->buy($request->user(), $vip); $result = $service->pay($user_vip, $request->input('pay_way')); DB::commit(); return $result; } catch (\Exception $e) { DB::rollBack(); report($e); throw new BizException($e->getMessage()); } } public function list(Request $request) { $user = $request->user(); $query = $user->vips()->where('status', UserVip::STATUS_SUCCESS); $list = $query->paginate($request->input('per_page')); return UserVipResource::collection($list); } }