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