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->get('per_page', self::PAGE_NUM)); return Response::success($lists); } /** * 创建配置项 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException * Author: Mead */ public function storeCategory(Request $request) { $this->validate($request, [ 'name' => 'required' ]); $data = [ 'name' => $request->get('name'), 'key' => Str::random(8), 'status' => ModelStatusEnum::OK, 'type' => 1, 'admin_id' => login_admin_id() ]; $model = Category::query()->create($data); return Response::success($model); } /** * 添加 * @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['admin_id'] = login_admin_id(); $data['type'] = 2; $model = $this->repository->create($data); return Response::success($model); } catch (\Exception $e) { return $this->error($e); } } /** * 详情 * @param $id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function show($id) { $data = $this->repository->find($id); return Response::success($data); } /** * 更新 * @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 { $data = $request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_CREATE))); $model = $this->repository->update($data, $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) { $model = Category::query()->find($id); if (!$model) { return Response::fail('找不到该数据'); } if ($model->type == 1) { if (Category::query()->where('key', $model->key)->where('type', 2)->exists()) { return Response::fail('请先删除所有的配置项'); } } $model->delete(); return Response::success(null, T('successfully delete.')); } /** * 选项 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * Author: Mead */ public function selectOptions(Request $request) { $this->validate($request, [ 'key' => 'required|size:8' ]); $name = $request->get('name', false); $data = Category::query()->when($name, function ($query) use ($name) { return $query->where('name', 'like', "%{$name}%"); })->where('status', ModelStatusEnum::OK)->where('type', 2)->where('key', $request->get('key'))->select(['name', 'id'])->orderByDesc('sort')->orderByDesc('id')->get(); return Response::success($data); } }