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="新生"