ActivityReward.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. unset($activity->activityUser);
  33. return $activity;
  34. })->toArray();
  35. // foreach ($list as &$item) {
  36. // unset($item['activity_user']);
  37. // }
  38. } catch (ValidationException $e) {
  39. return $this->error($e->validator->errors()->first());
  40. } catch (Exception $e) {
  41. return $this->error($e->getMessage());
  42. }
  43. return $this->success($list);
  44. }
  45. }