WatchRecordsController.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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\UserWatchRecord;
  6. use Carbon\Carbon;
  7. use Dingo\Api\Http\Request;
  8. use Illuminate\Database\Eloquent\Builder;
  9. class WatchRecordsController extends Controller
  10. {
  11. public function lists(Request $request)
  12. {
  13. $limit = $request->input('limit', 10);
  14. $page = $request->input('page', 1);
  15. $offset = ($page - 1) * 10;
  16. $lists = UserWatchRecord::filterUser()
  17. ->with(['detail.episode'])
  18. ->whereHas('detail.episode', function (Builder $query) {
  19. $query->where('is_opend', 1);
  20. })
  21. ->orderByDesc('id')
  22. ->limit($limit)
  23. ->offset($offset)
  24. ->get();
  25. foreach ($lists as $list) {
  26. $count = EpisodesList::where('episodes_id', $list->detail->episode->id)->count();
  27. $list->detail->episode->total = $count;
  28. $list->detail->episode->status_text = $list->detail->episode->status;
  29. }
  30. return $this->success($lists);
  31. }
  32. public function recent()
  33. {
  34. $info = UserWatchRecord::filterUser()
  35. ->with(['detail.episode'])
  36. ->whereHas('episode', function (Builder $query) {
  37. $query->where('is_opend', 1);
  38. })
  39. ->orderByDesc('updated_at')
  40. ->first();
  41. if ($info) {
  42. $count = EpisodesList::where('episodes_id', $info->detail->episodes_id)->count('id');
  43. $info->detail->episode->total = $count;
  44. $info->detail->episode->status_text = $info->detail->episode->status;
  45. }
  46. return $this->success($info);
  47. }
  48. public function watched()
  49. {
  50. $id = request()->input('id');
  51. $listId = request()->input('list_id');
  52. $res = UserWatchRecord::filterUser()->where('episode_id', $id)->first();
  53. if (!$res) {
  54. $res = new UserWatchRecord();
  55. $res->user_id = \user()->id;
  56. $res->episode_id = $id;
  57. }
  58. $res->list_id = $listId;
  59. $res->updated_at = Carbon::now()->toDateTimeString();
  60. return $this->success($res->save());
  61. }
  62. public function destroy($id)
  63. {
  64. $res = UserWatchRecord::filterUser()->find($id);
  65. if ($res) {
  66. $res->delete();
  67. }
  68. return $this->success();
  69. }
  70. }