ActivityReward.php 2.2 KB

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