""" 用户管理API """ from typing import Dict, Any, List from httpx import AsyncClient, Response from .base_api import BaseAPI class UserAPI(BaseAPI): """用户管理API""" def __init__(self, client: AsyncClient): super().__init__(client, "/api/users") async def create_user(self, user_data: Dict[str, Any]) -> Response: """创建用户""" return await self.post("", json=user_data) async def get_user_by_id(self, user_id: int) -> Response: """根据ID获取用户""" return await self.get(f"/{user_id}") async def get_all_users(self, include_deleted: bool = False) -> Response: """获取所有用户""" return await self.get("", params={"includeDeleted": include_deleted}) async def update_user(self, user_id: int, user_data: Dict[str, Any]) -> Response: """更新用户""" return await self.put(f"/{user_id}", json=user_data) async def delete_user(self, user_id: int) -> Response: """删除用户""" return await self.delete(f"/{user_id}") async def logical_delete_user(self, user_id: int) -> Response: """逻辑删除用户""" return await self.delete(f"/{user_id}/logical") async def logical_delete_users(self, user_ids: List[int]) -> Response: """批量逻辑删除用户""" return await self.post("/logical-delete", json=user_ids) async def restore_user(self, user_id: int) -> Response: """恢复用户""" return await self.post(f"/{user_id}/restore") async def restore_users(self, user_ids: List[int]) -> Response: """批量恢复用户""" return await self.post("/restore", json=user_ids) async def check_username_exists(self, username: str) -> Response: """检查用户名是否存在""" return await self.get("/check/username", params={"username": username}) async def check_email_exists(self, email: str) -> Response: """检查邮箱是否存在""" return await self.get("/check/email", params={"email": email}) async def get_users_by_page(self, page: int = 0, size: int = 10, sort: str = "id", order: str = "asc", keyword: str = None) -> Response: """分页获取用户""" params = {"page": page, "size": size, "sort": sort, "order": order} if keyword: params["keyword"] = keyword return await self.get("/page", params=params) async def get_user_count(self) -> Response: """获取用户总数""" return await self.get("/count")