CourseService.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. namespace App\Services\Course;
  3. use App\Contracts\Repositories\Course\CourseRepository;
  4. use App\Repositories\Criteria\Course\CategoryCriteria;
  5. use App\Repositories\Criteria\Course\CourseCriteria;
  6. use App\Repositories\Eloquent\Course\CourseRepositoryEloquent;
  7. use App\Repositories\Presenters\Course\CategoryPresenter;
  8. use App\Repositories\Presenters\Course\CoursePresenter;
  9. use Illuminate\Http\Request;
  10. class CourseService
  11. {
  12. /**
  13. * @var CourseRepositoryEloquent
  14. */
  15. private $courseRepository;
  16. /**
  17. * CourseService constructor.
  18. *
  19. * @param CourseRepositoryEloquent $courseRepositoryEloquent
  20. */
  21. public function __construct(CourseRepositoryEloquent $courseRepositoryEloquent)
  22. {
  23. $this->courseRepository = $courseRepositoryEloquent;
  24. }
  25. /**
  26. * @param Request $request
  27. *
  28. * @return mixed
  29. * @throws \Prettus\Repository\Exceptions\RepositoryException
  30. */
  31. public function handleList(Request $request)
  32. {
  33. $this->courseRepository->pushCriteria(new CourseCriteria($request));
  34. $this->courseRepository->setPresenter(CoursePresenter::class);
  35. return $this->courseRepository->searchCoursesByPage();
  36. }
  37. /**
  38. * @param $id
  39. *
  40. * @return \Illuminate\Database\Eloquent\Model
  41. */
  42. public function handleProfile($id)
  43. {
  44. $this->courseRepository->setPresenter(CoursePresenter::class);
  45. return $this->courseRepository->searchCourseBy($id);
  46. }
  47. /**
  48. * @param array $data
  49. *
  50. * @return mixed
  51. * @throws \Prettus\Validator\Exceptions\ValidatorException
  52. */
  53. public function handleStore($data)
  54. {
  55. $course = $this->courseRepository->create($data);
  56. return $course;
  57. }
  58. /**
  59. * @param array $data
  60. *
  61. * @return mixed
  62. * @throws \Prettus\Validator\Exceptions\ValidatorException
  63. */
  64. public function handleUpdate($data)
  65. {
  66. $course = $this->courseRepository->update($data, $data['id']);
  67. return $course;
  68. }
  69. /**
  70. * @param Request $request
  71. *
  72. * @return mixed
  73. * @throws \Prettus\Validator\Exceptions\ValidatorException
  74. */
  75. public function handleDelete($id)
  76. {
  77. return $this->courseRepository->delete($id);
  78. }
  79. /**
  80. * 选项
  81. * @param Request $request
  82. * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator|\Illuminate\Support\Collection|mixed
  83. * @throws \Prettus\Repository\Exceptions\RepositoryException
  84. */
  85. public function handleSelectOptions(Request $request)
  86. {
  87. $this->courseRepository->pushCriteria(new CourseCriteria($request));
  88. return $this->courseRepository->all(['id', 'title']);
  89. }
  90. /**
  91. * @param Request $request
  92. *
  93. * @return mixed
  94. * @throws \Prettus\Repository\Exceptions\RepositoryException
  95. */
  96. public function handleAll(Request $request)
  97. {
  98. $this->courseRepository->pushCriteria(new CourseCriteria($request));
  99. $this->courseRepository->setPresenter(CoursePresenter::class);
  100. return $this->courseRepository->get();
  101. }
  102. /**
  103. * 批量删除
  104. * @param $ids
  105. * @return mixed
  106. */
  107. public function handleBatchDelete($ids)
  108. {
  109. return $this->courseRepository->whereIn('id', $ids)->delete();
  110. }
  111. }