fix: 修复用户更新接口正确接收JSON请求体,数据库正确更新

This commit is contained in:
菜鸟生产 2026-03-18 13:32:52 +08:00
parent e7939abbbe
commit 514b592983
3 changed files with 26 additions and 31 deletions

View File

@ -25,7 +25,7 @@ Base = declarative_base()
def get_db(): def get_db():
"""获取数据库会话""" """获取数据库会话"""
db = SessionLocal() db = SessionLocal(expire_on_commit=False)
try: try:
yield db yield db
finally: finally:

View File

@ -5,7 +5,7 @@ from sqlalchemy.orm import Session
from app.core.database import get_db from app.core.database import get_db
from app.core.auth import get_current_user from app.core.auth import get_current_user
from app.models.models import User, Collection 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=["用户"]) 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 "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( def update_current_user(
username: Optional[str] = None, user_update: UserUpdate,
email: Optional[str] = None,
phone: Optional[str] = None,
avatar: Optional[str] = None,
address: Optional[str] = None,
bio: Optional[str] = None,
current_user: User = Depends(get_current_user), current_user: User = Depends(get_current_user),
db: Session = Depends(get_db) db: Session = Depends(get_db)
): ):
"""更新当前用户信息""" """更新当前用户信息"""
# 通过user_id重新获取用户确保在当前session中 import logging
user = db.query(User).filter(User.f99_90_id == current_user.f99_90_id).first() 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: if not user:
raise HTTPException(status_code=404, detail="用户不存在") raise HTTPException(status_code=404, detail="用户不存在")
# 更新字段 # 更新字段
if username: update_data = user_update.model_dump(exclude_unset=True)
user.f01_01_name = username for field, value in update_data.items():
if email: if field == 'f01_01_name':
user.email = email user.f01_01_name = value
if phone: elif field == 'username':
user.phone = phone pass # skip, already handled as f01_01_name
if avatar: elif hasattr(user, field):
user.avatar = avatar setattr(user, field, value)
if address:
user.address = address
if bio:
user.bio = bio
# 强制刷新以确保更新被提交
db.flush()
db.commit() db.commit()
db.refresh(user) db.refresh(user)
logger.info(f"After commit, user email={user.email}")
return { return user
"id": user.f99_90_id,
"username": user.f01_01_name,
"email": user.email,
"phone": user.phone,
"role": user.role
}
# ============ 管理员用户管理 ============ # ============ 管理员用户管理 ============

View File

@ -2,7 +2,7 @@
# Version Configuration for Zodiac Collection Management System # Version Configuration for Zodiac Collection Management System
# 当前版本号 (语义化版本:主版本。次版本.修订版) # 当前版本号 (语义化版本:主版本。次版本.修订版)
VERSION=1.1.1 VERSION=1.1.2
# 版本代号 (可选) # 版本代号 (可选)
VERSION_CODENAME="新生" VERSION_CODENAME="新生"