From 514b5929836bcd570612cd4390a095b4068aa312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8F=9C=E9=B8=9F=E7=94=9F=E4=BA=A7?= Date: Wed, 18 Mar 2026 13:32:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8E=A5=E5=8F=A3=E6=AD=A3=E7=A1=AE=E6=8E=A5?= =?UTF-8?q?=E6=94=B6JSON=E8=AF=B7=E6=B1=82=E4=BD=93=EF=BC=8C=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E6=AD=A3=E7=A1=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/core/database.py | 2 +- backend/app/routers/users.py | 53 ++++++++++++++++-------------------- config/VERSION | 2 +- 3 files changed, 26 insertions(+), 31 deletions(-) diff --git a/backend/app/core/database.py b/backend/app/core/database.py index a86b607..789c23c 100644 --- a/backend/app/core/database.py +++ b/backend/app/core/database.py @@ -25,7 +25,7 @@ Base = declarative_base() def get_db(): """获取数据库会话""" - db = SessionLocal() + db = SessionLocal(expire_on_commit=False) try: yield db finally: diff --git a/backend/app/routers/users.py b/backend/app/routers/users.py index 6236bf9..edfbde9 100644 --- a/backend/app/routers/users.py +++ b/backend/app/routers/users.py @@ -5,7 +5,7 @@ from sqlalchemy.orm import Session from app.core.database import get_db from app.core.auth import get_current_user from app.models.models import User, Collection -from app.schemas.schemas import UserResponse +from app.schemas.schemas import UserResponse, UserUpdate router = APIRouter(prefix="/api", tags=["用户"]) @@ -29,47 +29,42 @@ def get_current_user_info( "f99_93_updated_at": current_user.f99_93_updated_at.isoformat() if current_user.f99_93_updated_at else None } -@router.put("/users/me") +@router.put("/users/me", response_model=UserResponse) def update_current_user( - username: Optional[str] = None, - email: Optional[str] = None, - phone: Optional[str] = None, - avatar: Optional[str] = None, - address: Optional[str] = None, - bio: Optional[str] = None, + user_update: UserUpdate, current_user: User = Depends(get_current_user), db: Session = Depends(get_db) ): """更新当前用户信息""" - # 通过user_id重新获取用户,确保在当前session中 - user = db.query(User).filter(User.f99_90_id == current_user.f99_90_id).first() + import logging + logger = logging.getLogger(__name__) + + # 获取用户ID + user_id = current_user.f99_90_id + logger.info(f"Updating user {user_id}, data={user_update.model_dump()}") + + # 在当前session中重新查询用户 + user = db.query(User).filter(User.f99_90_id == user_id).first() if not user: raise HTTPException(status_code=404, detail="用户不存在") # 更新字段 - if username: - user.f01_01_name = username - if email: - user.email = email - if phone: - user.phone = phone - if avatar: - user.avatar = avatar - if address: - user.address = address - if bio: - user.bio = bio + update_data = user_update.model_dump(exclude_unset=True) + for field, value in update_data.items(): + if field == 'f01_01_name': + user.f01_01_name = value + elif field == 'username': + pass # skip, already handled as f01_01_name + elif hasattr(user, field): + setattr(user, field, value) + # 强制刷新以确保更新被提交 + db.flush() db.commit() db.refresh(user) + logger.info(f"After commit, user email={user.email}") - return { - "id": user.f99_90_id, - "username": user.f01_01_name, - "email": user.email, - "phone": user.phone, - "role": user.role - } + return user # ============ 管理员用户管理 ============ diff --git a/config/VERSION b/config/VERSION index 5732dde..b36f410 100644 --- a/config/VERSION +++ b/config/VERSION @@ -2,7 +2,7 @@ # Version Configuration for Zodiac Collection Management System # 当前版本号 (语义化版本:主版本。次版本.修订版) -VERSION=1.1.1 +VERSION=1.1.2 # 版本代号 (可选) VERSION_CODENAME="新生"