From 02c8d7f8babf5f2d4e3fb5176bf6bd9085f1146c Mon Sep 17 00:00:00 2001 From: aaron <> Date: Tue, 15 Apr 2025 18:31:27 +0800 Subject: [PATCH] update --- app/api/v1/person_images.py | 17 ++++++++++++++++- app/schemas/user.py | 2 +- app/services/person_image.py | 14 +++++++++++++- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/app/api/v1/person_images.py b/app/api/v1/person_images.py index 7a9b3d6..5a6831c 100644 --- a/app/api/v1/person_images.py +++ b/app/api/v1/person_images.py @@ -79,4 +79,19 @@ async def delete_person_image( ) await person_image_service.delete_person_image(db=db, image_id=image_id) - return StandardResponse(code=200, message="删除人物形象成功") \ No newline at end of file + return StandardResponse(code=200, message="删除人物形象成功") + + +# 设置默认人物形象 +@router.put("/{image_id}/set_default", tags=["person_images"]) +async def set_default_person_image( + *, + db: AsyncSession = Depends(deps.get_db), + current_user: User = Depends(deps.get_current_user), + image_id: int +): + """设置默认人物形象""" + image = await person_image_service.set_default_person_image(db=db, image_id=image_id, user_id=current_user.id) + if not image: + return BusinessError(code=400, message="设置默认人物形象失败") + return StandardResponse(code=200, message="设置默认人物形象成功", data=PersonImage.model_validate(image)) \ No newline at end of file diff --git a/app/schemas/user.py b/app/schemas/user.py index ed2f508..8115fbb 100644 --- a/app/schemas/user.py +++ b/app/schemas/user.py @@ -16,7 +16,7 @@ class UserCreate(UserBase): """创建用户请求模型""" pass -class UserUpdate(UserBase): +class UserUpdate(BaseModel): """更新用户请求模型""" avatar: Optional[str] = None nickname: Optional[str] = None diff --git a/app/services/person_image.py b/app/services/person_image.py index 5ce5618..dfa974d 100644 --- a/app/services/person_image.py +++ b/app/services/person_image.py @@ -91,4 +91,16 @@ async def get_default_image(db: AsyncSession, user_id: int): select(PersonImage) .filter(PersonImage.user_id == user_id, PersonImage.is_default == True) ) - return result.scalars().first() \ No newline at end of file + return result.scalars().first() + +async def set_default_person_image(db: AsyncSession, image_id: int, user_id: int): + """设置默认人物形象""" + db_image = await get_person_image(db, image_id) + if not db_image: + return None + # 先重置用户所有形象为非默认 + await reset_default_images(db, user_id) + db_image.is_default = True + await db.commit() + await db.refresh(db_image) + return db_image \ No newline at end of file