fix: 修复用户更新接口正确接收JSON请求体,数据库正确更新
This commit is contained in:
parent
e7939abbbe
commit
514b592983
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
}
|
|
||||||
|
|
||||||
# ============ 管理员用户管理 ============
|
# ============ 管理员用户管理 ============
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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="新生"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue