responseService = $responseService; $this->AdminUserModelService = $AdminUsersService; } /** * @param Request $request * @return JsonResponse */ public function index(Request $request): JsonResponse { try { $query = AdminUsers::query(); // 关键词搜索 if ($request->has('keyword')) { $keyword = $request->input('keyword'); $query->where('name', 'like', "%{$keyword}%"); } // 分页 $page = $request->input('page', 1); $perPage = $request->input('per_page', 10); $total = $query->count(); $items = $query->latest()->forPage($page, $perPage)->get()->each( function ($item) { return $this->AdminUserModelService->optionItem($item); } ); return $this->responseService->success([ 'items' => $items, 'total' => $total, 'page' => $page, 'per_page' => $perPage, 'last_page' => ceil($total / $perPage), ]); } catch (Exception $e) { $m_prefix = __('exception.get_user_info_list_failed'); return $this->responseService->systemError( $m_prefix . ':' . $e->getMessage() ); } } /** * Show the form for creating a new resource. */ public function create(): JsonResponse { try { $data = [ 'roles_list' => AdminRoles::getRolesList(), 'packing_list' => $this->getPackingList() ]; return $this->responseService->success($data); } catch (Exception $e) { return $this->responseService->systemError( __('exception.get_data_failed') . ':' . $e->getMessage() ); } } protected function getPackingList(): array { return [ [ 'id' => 1, 'name' => '停车场1' ], [ 'id' => 2, 'name' => '停车场1' ] ]; } /** * @param Request $request * @return JsonResponse * @throws CustomException * @throws ValidationException */ public function store(Request $request): JsonResponse { try { $this->saveValidator($request->all()); $this->AdminUserModelService->createModel($request->all()); return $this->responseService->success( null, __('admin.save_succeeded') ); } catch (ValidationException|CustomException $e) { throw $e; } catch (Exception $e) { return $this->responseService->systemError( __('exception.admin_user.create_failed') . ':' . $e->getMessage( ) ); } } /** * @param array $data * @param int $id * @return void * @throws ValidationException */ private function saveValidator(array $data, int $id = 0): void { $rules = [ 'username' => 'required|alpha_num|between:4,20', 'role_id' => 'required|numeric', 'packing_id' => 'required|numeric', 'password' => 'required|between:12,30', 'email' => 'email' ]; $messages = [ 'username.required' => __('validation.admin_user.l_a_empty'), 'username.alpha_num' => __('validation.admin_user.l_a_alpha_num'), 'username.between' => __('validation.admin_user.l_a_between'), 'role_id.required' => __('validation.admin_user.r_empty'), 'packing_id.required' => __('validation.admin_user.s_p_empty'), 'password.required' => __('validation.admin_user.p_empty'), 'password.between' => __('validation.admin_user.p_between'), 'email.email' => __('validation.admin_user.email'), ]; if ($id) { $this->validateId($id, AdminUsers::class); $rules['status'] = 'required|in:0,1'; $messages['status.required'] = __('validation.admin_user.s_empty'); $messages['status.in'] = __('validation.admin_user.s_in'); } $validator = Validator::make($data, $rules, $messages); if ($validator->fails()) { throw new ValidationException($validator); } } /** * Display the specified resource. */ public function show(string $id): JsonResponse { try { $this->validateId($id, AdminUsers::class); $model = AdminUsers::findOrFail($id); $item = $this->AdminUserModelService->optionItem($model); return $this->responseService->success($item); } catch (Exception $e) { return $this->responseService->systemError( __('exception.get_data_failed') . ':' . $e->getMessage() ); } } /** * Show the form for editing the specified resource. */ public function edit(string $id): JsonResponse { try { $item = AdminUsers::findOrFail($id); $item = $this->AdminUserModelService->optionItem($item, 1); $data = [ 'item' => $item, 'role_list' => AdminRoles::getRolesList(), 'packing_list' => $this->getPackingList() ]; return $this->responseService->success($data); } catch (Exception $e) { return $this->responseService->systemError( __('exception.get_data_failed') . ':' . $e->getMessage() ); } } /** * @param Request $request * @param string $id * @return JsonResponse * @throws CustomException * @throws ValidationException */ public function update(Request $request, string $id): JsonResponse { try { $this->saveValidator($request->all(), $id); $this->AdminUserModelService->updateModel($request->all(), $id); return $this->responseService->success( null, __('admin.update_succeeded') ); } catch (ValidationException|CustomException $e) { throw $e; } catch (Exception $e) { return $this->responseService->systemError( __('exception.admin_user.update_failed') . ':' . $e->getMessage( ) ); } } /** * @param string $id * @return JsonResponse * @throws CustomException */ public function destroy(string $id): JsonResponse { try { $this->AdminUserModelService->deleteModel($id); return $this->responseService->success( null, __('admin.delete_succeeded') ); } catch (CustomException $e) { throw $e; } catch (Exception $e) { return $this->responseService->systemError( '删除数据模型失败:' . $e->getMessage() ); } } /** * @return JsonResponse * @throws InvalidArgumentException */ public function rule(): JsonResponse { try { return $this->responseService->success($this->methodShow('users')); } catch (Exception $e) { return $this->responseService->systemError( __('exception.get_data_failed') . ':' . $e->getMessage() ); } } }