repository = $repository; $this->validator = $validator; } /** * 列表 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function index(Request $request) { $lists = $this->repository->paginate(request('per_page', self::PAGE_NUM)); return Response::success($lists); } /** * 创建 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource|void * @throws \Illuminate\Validation\ValidationException * Author: Mead */ public function store(Request $request) { $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_CREATE)); try { $data = $request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_CREATE))); $data['user_id'] = login_user_id(); $data['slug'] = Str::random(); $model = $this->repository->create($data); return Response::success($model); } catch (\Exception $e) { return $this->errorStore($e); } } /** * 详情 * @param $slug * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function show($slug) { $model = $this->repository->where('slug', $slug)->first(); if (!$model) { return $this->error('找不到该资源'); } Note::query()->where('id', $model->id)->increment('view_count'); $model = $this->repository->parserResult($model); return Response::success($model); } /** * 修改 * @param Request $request * @param $id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException * Author: Mead */ public function update(Request $request, $id) { $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_UPDATE)); // if (!Note::query()->where('id', $id)->where('user_id', login_user_id())->exists()) { // return $this->error('找不到该资源!'); // } try { $data = $request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_UPDATE))); $model = $this->repository->update($data, $id); return Response::success($model); } catch (\Exception $e) { $this->errorStore($e); } } /** * 修改 * @param $id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function destroy($id) { // if (!Note::query()->where('id', $id)->where('user_id', login_user_id())->exists()) { // return Response::fail('您暂无删除权限!'); // } try { $this->repository->delete($id); return Response::success(null, T('successfully delete.')); } catch (\Exception $exception) { return Response::fail(T('Delete failed.'), ResponseCodeEnum::SERVICE_UPDATE_DATA_ERROR); } } /** * 点赞 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException * Author: Mead */ public function good(Request $request) { $this->validate($request, [ 'slug' => 'required', ]); $slug = $request->get('slug'); $user_id = login_user_id(); $cache = Cache::get("cache:note:good:{$slug}:{$user_id}"); if ($cache) { return Response::fail(T("Do not repeat operation."), ResponseCodeEnum::SYSTEM_ERROR); } Note::query()->where('slug', $slug)->increment('good_count'); Cache::put("cache:note:good:{$slug}:{$user_id}", 1, Carbon::now()->addHours(2)); return Response::success(null); } }