ActivityReward.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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([
  13. 'member_id' => ['nullable', 'integer'],
  14. ]);
  15. $memberId = request()->input('member_id');
  16. $time = time();
  17. $query = ActivityRewardModel::where(ActivityRewardService::getWhere([
  18. 'start_time' => ['<=', $time],
  19. 'end_time' => ['>=', $time],
  20. 'status' => ActivityRewardModel::STATUS_UP
  21. ]));
  22. if (!empty($memberId)) {
  23. $query->with(['userActivities' => function ($query1) use ($memberId) {
  24. $query1->where('user_id', $memberId);
  25. }]);
  26. $list = $query->orderByDesc('id')->get();
  27. $list->transform(function ($activity) {
  28. $activity->is_claimed = $activity->userActivities->isNotEmpty();
  29. return $activity;
  30. })->toArray();
  31. } else {
  32. $list = $query->orderByDesc('id')->get()->toArray();
  33. }
  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. }