WatchRecordsController.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace App\Http\Controllers\V1\User;
  3. use App\Http\Controllers\V1\Controller;
  4. use App\Models\User;
  5. use App\Models\UserWatchRecord;
  6. use Illuminate\Database\Eloquent\Builder;
  7. class WatchRecordsController extends Controller
  8. {
  9. public function lists()
  10. {
  11. $lists = UserWatchRecord::filterUser()
  12. ->with(['detail.episode'])
  13. ->whereHas('detail.episode', function (Builder $query){
  14. $query->where('is_opend', 1);
  15. })
  16. ->orderByDesc('id')
  17. ->get();
  18. foreach ($lists as $list){
  19. $count = $list->detail->episode->withCount('lists')->first()->toArray();
  20. $list->detail->episode->total = $count['lists_count'];
  21. $list->detail->episode->status_text = $list->detail->episode->status;
  22. }
  23. return $this->success($lists);
  24. }
  25. public function recent()
  26. {
  27. $info = UserWatchRecord::filterUser()
  28. ->with(['detail.episode'])
  29. ->whereHas('episode', function (Builder $query){
  30. $query->where('is_opend', 1);
  31. })
  32. ->orderByDesc('updated_at')
  33. ->first();
  34. if($info){
  35. $count = $info->detail->episode->withCount('lists')->first()->toArray();
  36. $info->detail->episode->total = $count['lists_count'];
  37. $info->detail->episode->status_text = $info->detail->episode->status;
  38. }
  39. return $this->success($info);
  40. }
  41. public function watched()
  42. {
  43. $id = request()->input('id');
  44. $listId = request()->input('list_id');
  45. $res = UserWatchRecord::filterUser()->where('episode_id',$id)->first();
  46. if($res){
  47. $res->list_id = $listId;
  48. }else{
  49. $res = new UserWatchRecord();
  50. $res->user_id = \user()->id;
  51. $res->episode_id = $id;
  52. }
  53. $res->list_id = $listId;
  54. return $this->success($res->save());
  55. }
  56. public function destroy($id)
  57. {
  58. $res = UserWatchRecord::filterUser()->find($id);
  59. if($res){
  60. $res->delete();
  61. }
  62. return $this->success();
  63. }
  64. }