ActivityReward.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. namespace App\Http\Controllers\api;
  3. use App\Models\ActivityReward as ActivityRewardModel;
  4. use App\Services\ActivityRewardService;
  5. use Illuminate\Validation\ValidationException;
  6. use Exception;
  7. class ActivityReward extends BaseController
  8. {
  9. public function index()
  10. {
  11. try {
  12. request()->validate(['member_id' => ['nullable', 'integer']]);
  13. $memberId = request()->input('member_id');
  14. $time = time();
  15. $query = ActivityRewardModel::where(ActivityRewardService::getWhere([
  16. 'start_time' => ['<=', $time],
  17. 'end_time' => ['>=', $time],
  18. 'status' => ActivityRewardModel::STATUS_UP
  19. ]));
  20. if (!empty($memberId)) {
  21. $query->with(['activityUser' => function ($query1) use ($memberId) {
  22. // $query1->where('member_id', $memberId);
  23. }]);
  24. }
  25. $list = $query->orderByDesc('id')->get();
  26. $list->transform(function ($activity) use ($memberId) {
  27. if (!empty($memberId)) {
  28. $activity->is_claimed = $activity->activityUser->isNotEmpty();
  29. } else {
  30. $activity->is_claimed = false;
  31. }
  32. return $activity;
  33. })->toArray();
  34. } catch (ValidationException $e) {
  35. return $this->error($e->validator->errors()->first());
  36. } catch (Exception $e) {
  37. return $this->error($e->getMessage());
  38. }
  39. return $this->success($list);
  40. }
  41. }