from fastapi import APIRouter, Request from core.constant import PermissionName from core.decorators import OperationLog from core.decorators.auth_decorators import Authorize from core.enums import BusinessTypeEnum from domain.dtos import SysUserCreateDto, SysUserUpdateDto, PageDto from domain.services import SysUserService, get_user_service user_router = APIRouter(prefix="/user", tags=["系统用户管理"]) @user_router.post("/page", summary="查询用户") @Authorize(PermissionName.SYS_USER_QUERY) async def get_users_page( request: Request, user_service: SysUserService = get_user_service(), ): page_dict = await request.json() page_dto = PageDto(**page_dict) users = await user_service.get_page_list(page_dto) return users @user_router.post("/create", summary="创建用户") @Authorize(PermissionName.SYS_USER_CREATE) @OperationLog(title="创建用户", business_type=BusinessTypeEnum.INSERT) async def create_user( request: Request, user_service: SysUserService = get_user_service(), ): user_data = await request.json() dto = SysUserCreateDto(**user_data) new_user = await user_service.create_user(dto) return new_user @user_router.post("/update", summary="更新用户") @Authorize(PermissionName.SYS_USER_UPDATE) @OperationLog(title="更新用户", business_type=BusinessTypeEnum.UPDATE) async def update_user( request: Request, user_service: SysUserService = get_user_service(), ): user_data = await request.json() dto = SysUserUpdateDto(**user_data) updated_user = await user_service.update_user(dto) return updated_user @user_router.post("/delete/{id:int}", summary="删除用户") @Authorize(PermissionName.SYS_USER_DELETE) @OperationLog(title="删除用户", business_type=BusinessTypeEnum.DELETE) async def delete_user( request: Request, user_service: SysUserService = get_user_service(), ): id = int(request.path_params.get("id")) await user_service.delete(id) @user_router.post("/reset-password", summary="重置用户密码") @Authorize(PermissionName.SYS_USER_RESET_PASSWORD) @OperationLog(title="重置用户密码", business_type=BusinessTypeEnum.UPDATE) async def reset_user_password( request: Request, user_service: SysUserService = get_user_service(), ): data = await request.json() user_id = data.get("user_id", 0) new_password = data.get("new_password", "") await user_service.reset_password(user_id, new_password) @user_router.post("/unlock/{id:int}", summary="解锁用户") @Authorize(PermissionName.SYS_USER_UNLOCK) async def unlock_user( id: int, user_service: SysUserService = get_user_service(), ): await user_service.unlock_user(id)