bannerRepository = $bannerRepositoryEloquent; } /** * @param Request $request * * @return mixed * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function handleList(Request $request) { $this->bannerRepository->pushCriteria(new BannerCriteria($request)); $this->bannerRepository->setPresenter(BannerPresenter::class); return $this->bannerRepository->searchBannersByPage(); } /** * @param $id * * @return \Illuminate\Database\Eloquent\Model */ public function handleProfile($id) { $this->bannerRepository->setPresenter(BannerPresenter::class); return $this->bannerRepository->searchBannerBy($id); } /** * @param array $data * * @return mixed * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function handleStore($data) { $banner = $this->bannerRepository->create($data); return $banner; } /** * @param array $data * * @return mixed * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function handleUpdate($data) { $banner = $this->bannerRepository->update($data, $data['id']); return $banner; } /** * @param Request $request * * @return mixed * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function handleDelete($id) { return $this->bannerRepository->delete($id); } public function handleUpload(Request $request) { $disk = 'public'; // 获取上传的文件 $file = $request->file('file'); if (!$file->isFile()) return false; $type = $request->get('dir', 'default'); $dir = $type; $dir = str_replace('_', DIRECTORY_SEPARATOR, $dir); $newName = Str::random(32) . '.' . $file->getClientOriginalExtension(); $path = Storage::disk($disk)->putFileAs($dir, $file, $newName); $url = Storage::disk($disk)->url($path); $banner = $this->bannerRepository->create([ 'name' => $newName, 'original_name' => $file->getClientOriginalName(), 'path' => $path, 'url' => $url, 'disk' => $disk, 'size' => $file->getSize() ]); return $banner; } public function handleAll(Request $request) { $this->bannerRepository->pushCriteria(new BannerCriteria($request)); $this->bannerRepository->setPresenter(BannerPresenter::class); return $this->bannerRepository->get(); } }