repository = $repository; $this->validator = $validator; } public function index() { $courses = $this->repository->paginate(request('per_page', self::PAGE_NUM)); return Response::success($courses); } 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['admin_id'] = login_admin_id(); $data['slug'] = arr2str(Pinyin::permalink($data['title']), '_'); if (!in_array('published_at', $data) || empty($data['published_at'])) { $data['published_at'] = Carbon::now(); } $information = $this->repository->create($data); return Response::success($information); } catch (\Exception $e) { return $this->errorStore($e); } } public function show($id) { $information = $this->repository->find($id); Information::query()->where('id', $information['id'])->increment('view_count'); UserMessage::query()->where('user_id', login_admin_id())->where('information_id', $information['id'])->delete(); return Response::success($information); } public function update(Request $request, $id) { $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_UPDATE)); try { $data = $request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_UPDATE))); if (in_array('title', $data)) { $data['slug'] = arr2str(Pinyin::permalink($data['title']), '_'); } if (!in_array('published_at', $data) || empty($data['published_at'])) { $data['published_at'] = Carbon::now(); } $information = $this->repository->update($data, $id); return Response::success($information); } catch (\Exception $e) { $this->errorStore($e); } } public function destroy($id) { 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); } } public function delete(Request $request) { try { $this->validate($request, [ 'ids' => 'required|array', ]); $ids = $request->get('ids'); $this->repository->whereIn('id', $ids)->delete(); return Response::success(null, T('successfully delete.')); } catch (\Exception $exception) { return Response::fail(T('Delete failed.'), ResponseCodeEnum::SERVICE_UPDATE_DATA_ERROR); } } /** * @param Request $request * Author: Mead */ public function userMessages(Request $request) { $lists = UserMessage::query()->where('user_id', login_admin_id())->where('published_at', '<=', Carbon::now())->with(['information', 'category'])->orderByDesc('id')->get(); return Response::success($lists); } public function readMessages(Request $request) { $this->validate($request, [ 'ids' => 'required|array', ]); $ids = $request->get('ids'); UserMessage::query()->whereIn('id', $ids)->where('user_id', login_admin_id())->delete(); return Response::success(null); } public function good(Request $request) { $this->validate($request, [ 'id' => 'required|integer', ]); $information_id = $request->get('id'); $admin_id = login_admin_id(); $cache = Cache::get("cache:information:good:{$information_id}:{$admin_id}"); if ($cache) { return Response::fail(T("Do not repeat operation."), ResponseCodeEnum::SYSTEM_ERROR); } Information::query()->where('id', $information_id)->increment('good_count'); Cache::put("cache:information:good:{$information_id}:{$admin_id}", 1, Carbon::now()->addHours(2)); return Response::success(null); } }