validate(['member_id' => ['nullable', 'integer']]); $memberId = request()->input('member_id'); $time = time(); $query = ActivityRewardModel::where(ActivityRewardService::getWhere([ 'start_time' => ['<=', $time], 'end_time' => ['>=', $time], 'status' => ActivityRewardModel::STATUS_UP ])); if (!empty($memberId)) { $query->with(['activityUser' => function ($query1) use ($memberId) { // $query1->where('member_id', $memberId); }]); } $list = $query->orderByDesc('id')->get(); $list->transform(function ($activity) use ($memberId) { if (!empty($memberId)) { $activity->is_claimed = $activity->activityUser->isNotEmpty(); } else { $activity->is_claimed = false; } return $activity; })->toArray(); } catch (ValidationException $e) { return $this->error($e->validator->errors()->first()); } catch (Exception $e) { return $this->error($e->getMessage()); } return $this->success($list); } }