service = $service; } /** * 列表 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function index(Request $request) { $data = $this->service->handleAll($request); return $this->response->success($data); } /** * 新增 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function store(Request $request) { $data = $this->validateData($request, [ 'course_id' => 'required|integer', 'course_video_id' => 'required|integer', 'name' => 'required', 'path' => 'required|integer', 'sort' => 'required|integer', 'status' => 'required|integer' ], [ 'course_id' => '课程id', 'course_video_id' => '视频 id', 'name' => '名称', 'path' => '文件路径', 'sort' => '排序', 'status' => '状态', ]); $model = $this->service->handleStore($data); return $this->response->created($model, '创建成功'); } /** * 详情 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException */ public function show(Request $request) { $this->validate($request, ['id' => 'required|integer']); $model = $this->service->handleProfile($request->get('id')); return $this->response->success($model); } /** * 编辑 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function update(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', // 'course_id' => 'required|integer', 'course_video_id' => 'required|integer', 'name' => 'required', 'path' => 'required|integer', 'sort' => 'required|integer', 'status' => 'required|integer' ], [ 'course_id' => '课程id', 'course_video_id' => '视频 id', 'name' => '名称', 'path' => '文件路径', 'sort' => '排序', 'status' => '状态', ]); $model = $this->service->handleUpdate($data); return $this->response->success($model, '创建成功'); } /** * 删除 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function destroy(Request $request) { $this->validate($request, ['id' => 'required|integer']); $re = $this->service->handleDelete($request->get('id')); if ($re) { return $this->response->ok('删除成功'); } return $this->response->fail('删除失败'); } /** * 批量删除 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function batchDelete(Request $request) { $ids = $this->validateData($request, ['ids' => 'required|array']); $re = $this->service->handleBatchDelete($ids); if ($re) { return $this->response->ok('删除成功'); } return $this->response->fail('删除失败'); } /** * 选项 * @must * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function selectOptions(Request $request) { $lists = $this->service->handleSelectOptions($request); return $this->response->success($lists); } /** * 下载 * @param $id * @return \Illuminate\Http\JsonResponse|\Symfony\Component\HttpFoundation\BinaryFileResponse */ public function download(Request $request) { $data = $this->validateData($request, ['course_id' => 'required|integer', 'id' => 'required|integer']); $attach = Attach::query()->where('course_id', $data['course_id'])->where('id', '=', (int)$data['id'])->first(); if ($attach) { $attach->download_times++; $attach->save(); $resource = Resource::query()->find($attach->path); return response()->download(Storage::disk($resource->disk)->path($resource->path), $resource->name, [ 'Access-Control-Allow-Origin' => '*', 'Access-Control-Allow-Methods' => '*', 'Access-Control-Allow-Headers' => 'Content-Type, Authorization, X-Requested-With', 'Access-Control-Expose-Headers' => 'Content-Disposition', 'Content-type' => 'application/octet-stream', 'Content-Disposition' => 'attachment; filename=' . $resource->name, ]); } return $this->errorFail(); } }