from fastapi import APIRouter, HTTPException from typing import List from ..schemas.user_info import ( UserRangeQueryRequest, UserInfo, UserDeleteRequest, UserUpdateRequest, TotalNumberOfUsers, UserQueryRequest, UserPasswordUpdateRequest, UserPointsUpdateRequest ) from ..services.admin_user_service import ( query_user, query_users_by_range, delete_user_by_token, update_user, get_total_of_users, update_user_password, update_user_points ) router = APIRouter() @router.post("/users/query", response_model=List[UserInfo]) def query_users(request: UserRangeQueryRequest): """ 管理员查询范围内的用户信息 """ users = query_users_by_range( token=request.token, start=request.start, end=request.end ) return users @router.post("/users/del") def delete_user(request: UserDeleteRequest): """ 管理员删除用户 """ result = delete_user_by_token(token=request.token, uid=request.uid) return result @router.post("/users/update") def update_user_route(request: UserUpdateRequest): """ 管理员修改用户信息 """ result = update_user( token=request.token, uid=request.uid, username=request.username, email=request.email, phone_number=request.phone_number, gender=request.gender, user_type=request.user_type ) return {"message": result} @router.post("/users/sum") def get_total_users(request: TotalNumberOfUsers): """ 获取用户总数 """ result = get_total_of_users( token=request.token ) return {"message": result} @router.post("/users/search") def query_user_api(request: UserQueryRequest): """ 管理员通过 `phone_number` / `email` / `username` / `uid` 查询用户信息 """ result = query_user( token=request.token, query_mode=request.query_mode, query_value=request.query_value ) return result @router.post("/users/update_password") def update_user_password_route(request: UserPasswordUpdateRequest): """ 管理员修改用户密码 """ result = update_user_password( token=request.token, uid=request.uid, new_password=request.new_password ) return {"message": result} @router.post("/users/update_points") def update_points_route(request: UserPointsUpdateRequest): """ 管理员调整用户积分 """ result = update_user_points( token=request.token, uid=request.uid, points=request.points, reason=request.reason ) return {"message": result}