ConsumeController.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace App\Http\Controllers\V1\User;
  3. use App\Http\Controllers\V1\Controller;
  4. use App\Models\EpisodesList;
  5. use App\Models\UserEpisodesRecord;
  6. use Carbon\Carbon;
  7. use Dingo\Api\Http\Request;
  8. use Illuminate\Database\Eloquent\Builder;
  9. class ConsumeController extends Controller
  10. {
  11. public function record(Request $request)
  12. {
  13. $limit = $request->input('limit', 10);
  14. $page = $request->input('page', 1);
  15. $offset = ($page - 1) * 10;
  16. $date = $request->input('date');
  17. $date = $date ?? Carbon::now()->format('Y-m');
  18. $lists = UserEpisodesRecord::filterUser()
  19. ->when($date, function ($query, $date) {
  20. /* @var Builder $query */
  21. return $query->where('created_at', 'like', "$date%");
  22. })
  23. ->with(['detail.episode'])
  24. ->orderByDesc('id')
  25. ->limit($limit)
  26. ->offset($offset)
  27. ->get();
  28. foreach ($lists as $list) {
  29. if ($list->detail && $list->detail->episodes_id) {
  30. $count = EpisodesList::where('episodes_id', $list->detail->episode->id)->count();
  31. $list->detail->episode->total = $count;
  32. $list->detail->episode->status_text = $list->detail->episode->status;
  33. } else {
  34. $list->detail->episode->total = 0;
  35. $list->detail->episode->status_text = -1;
  36. }
  37. }
  38. return $this->success($lists);
  39. }
  40. }