middleware('checkUserPermission', ['except' => 'configs']); $this->dictService = $dictService; $this->dictDetailService = $dictDetailService; } /** * 列表 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function index(Request $request) { $dicts = $this->dictService->handleList($request); return $this->response->success($dicts); } /** * 创建 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function store(Request $request) { $data = $this->validateData($request, [ 'name' => 'required', 'code' => [ 'required', 'alpha_dash', function ($attribute, $value, $fail) use ($request) { if (Dict::checkCodeIsUnique($value, $request->get('id'))) { $fail('字典代码 已存在'); } }, ], ], [ 'name' => '字典名称', 'code' => '字典代码', ]); $dict = $this->dictService->handleStore($data); return $this->response->created($dict, '创建成功'); } /** * 详情 * @param int $id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function show(Request $request) { $this->validate($request, ['id' => 'required|integer']); $dict = $this->dictService->handleProfile($request->get('id')); return $this->response->success($dict); } /** * 修改 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function update(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', 'name' => 'required', 'code' => [ 'required', 'alpha_dash', function ($attribute, $value, $fail) use ($request) { if (Dict::checkCodeIsUnique($value, $request->get('id'))) { $fail('字典代码 已存在'); } }, ], ], [ 'name' => '字典名称', 'code' => '字典编码', ]); $dict = $this->dictService->handleUpdate($data); return $this->response->success($dict, '更新成功'); } /** * 删除 * * @param int $id */ public function destroy(Request $request) { $this->validate($request, ['id' => 'required|integer']); $re = $this->dictService->handleDelete($request->get('id')); if ($re) { return $this->response->ok('删除成功'); } return $this->response->fail('删除失败'); } /** * 获取系统配置参数 * @must * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function configs(Request $request) { $this->validate($request, ['keys' => 'required|array']); $dicts = $this->dictService->handleConfigs($request->get('keys')); return $this->response->success(compact('dicts')); } /** * 获取单个配置 * @must * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function config(Request $request) { $this->validate($request, ['key' => 'required']); $dict = $this->dictService->handleConfig($request->get('key')); $options = Arr::get($dict, 'detail'); return $this->response->success($options); } }