BannerService.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. namespace App\Services\Base;
  3. use App\Repositories\Criteria\Base\BannerCriteria;
  4. use App\Repositories\Criteria\School\StudentCriteria;
  5. use App\Repositories\Eloquent\Base\BannerRepositoryEloquent;
  6. use App\Repositories\Presenters\Base\BannerPresenter;
  7. use App\Repositories\Presenters\School\StudentPresenter;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Support\Facades\Storage;
  10. use Illuminate\Support\Str;
  11. class BannerService
  12. {
  13. /**
  14. * @var BannerRepositoryEloquent
  15. */
  16. private $bannerRepository;
  17. /**
  18. * BannerService constructor.
  19. *
  20. * @param BannerRepositoryEloquent $bannerRepositoryEloquent
  21. */
  22. public function __construct(BannerRepositoryEloquent $bannerRepositoryEloquent)
  23. {
  24. $this->bannerRepository = $bannerRepositoryEloquent;
  25. }
  26. /**
  27. * @param Request $request
  28. *
  29. * @return mixed
  30. * @throws \Prettus\Repository\Exceptions\RepositoryException
  31. */
  32. public function handleList(Request $request)
  33. {
  34. $this->bannerRepository->pushCriteria(new BannerCriteria($request));
  35. $this->bannerRepository->setPresenter(BannerPresenter::class);
  36. return $this->bannerRepository->searchBannersByPage();
  37. }
  38. /**
  39. * @param $id
  40. *
  41. * @return \Illuminate\Database\Eloquent\Model
  42. */
  43. public function handleProfile($id)
  44. {
  45. $this->bannerRepository->setPresenter(BannerPresenter::class);
  46. return $this->bannerRepository->searchBannerBy($id);
  47. }
  48. /**
  49. * @param array $data
  50. *
  51. * @return mixed
  52. * @throws \Prettus\Validator\Exceptions\ValidatorException
  53. */
  54. public function handleStore($data)
  55. {
  56. $banner = $this->bannerRepository->create($data);
  57. return $banner;
  58. }
  59. /**
  60. * @param array $data
  61. *
  62. * @return mixed
  63. * @throws \Prettus\Validator\Exceptions\ValidatorException
  64. */
  65. public function handleUpdate($data)
  66. {
  67. $banner = $this->bannerRepository->update($data, $data['id']);
  68. return $banner;
  69. }
  70. /**
  71. * @param Request $request
  72. *
  73. * @return mixed
  74. * @throws \Prettus\Validator\Exceptions\ValidatorException
  75. */
  76. public function handleDelete($id)
  77. {
  78. return $this->bannerRepository->delete($id);
  79. }
  80. public function handleUpload(Request $request)
  81. {
  82. $disk = 'public';
  83. // 获取上传的文件
  84. $file = $request->file('file');
  85. if (!$file->isFile()) return false;
  86. $type = $request->get('dir', 'default');
  87. $dir = $type;
  88. $dir = str_replace('_', DIRECTORY_SEPARATOR, $dir);
  89. $newName = Str::random(32) . '.' . $file->getClientOriginalExtension();
  90. $path = Storage::disk($disk)->putFileAs($dir, $file, $newName);
  91. $url = Storage::disk($disk)->url($path);
  92. $banner = $this->bannerRepository->create([
  93. 'name' => $newName,
  94. 'original_name' => $file->getClientOriginalName(),
  95. 'path' => $path,
  96. 'url' => $url,
  97. 'disk' => $disk,
  98. 'size' => $file->getSize()
  99. ]);
  100. return $banner;
  101. }
  102. public function handleAll(Request $request)
  103. {
  104. $this->bannerRepository->pushCriteria(new BannerCriteria($request));
  105. $this->bannerRepository->setPresenter(BannerPresenter::class);
  106. return $this->bannerRepository->get();
  107. }
  108. }