repository = $repository; $this->validator = $validator; } /** * 创建 * @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 { $model = $this->repository->create($request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_CREATE)))); return Response::success($model); } catch (\Exception $e) { return $this->error($e); } } /** * 更新 * @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)); try { $model = $this->repository->update($request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_UPDATE))), $id); return Response::success($model); } catch (\Exception $e) { $this->error($e); } } /** * 删除 * @param $id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function destroy($id) { $re = $this->repository->where('parent_id', '>', 0)->where('id', $id)->delete(); if ($re) { return Response::success(null, T('successfully delete.')); } return Response::fail(T('Delete failed.'), ResponseCodeEnum::SERVICE_UPDATE_DATA_ERROR); } /** * 配置列表 * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function tree() { $departments = $this->repository->orderByDesc('sort')->get()->append('parent_name')->toArray(); return Response::success(toTree($departments)); } /** * 获取某个配置 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function setting(Request $request) { $key = $request->get('key'); $setting = Setting::query()->where('key', strtoupper($key))->first(); return Response::success($setting); } }