fix: 修复用户更新接口正确接收JSON请求体,数据库正确更新
This commit is contained in:
parent
e7939abbbe
commit
514b592983
|
|
@ -25,7 +25,7 @@ Base = declarative_base()
|
|||
|
||||
def get_db():
|
||||
"""获取数据库会话"""
|
||||
db = SessionLocal()
|
||||
db = SessionLocal(expire_on_commit=False)
|
||||
try:
|
||||
yield db
|
||||
finally:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
# ============ 管理员用户管理 ============
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
# Version Configuration for Zodiac Collection Management System
|
||||
|
||||
# 当前版本号 (语义化版本:主版本。次版本.修订版)
|
||||
VERSION=1.1.1
|
||||
VERSION=1.1.2
|
||||
|
||||
# 版本代号 (可选)
|
||||
VERSION_CODENAME="新生"
|
||||
|
|
|
|||
Loading…
Reference in New Issue