diff --git a/video-gen-api/app/api/admin/team.py b/video-gen-api/app/api/admin/team.py index 91338631..424411a5 100644 --- a/video-gen-api/app/api/admin/team.py +++ b/video-gen-api/app/api/admin/team.py @@ -9,7 +9,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from app.dependencies import get_admin_user, get_db from app.models.team import Team from app.models.user import User -from app.schemas.team import TeamCreate, TeamListOut, TeamOptionOut, TeamOut, TeamUpdate +from app.schemas.team import TeamCreate, TeamListOut, TeamOptionOut, TeamUpdate from app.schemas.team_manager import SetManagerRequest from app.services.operation_log import log_operation from app.services.team_manager_service import set_team_manager @@ -74,7 +74,7 @@ async def list_admin_team_options( return await list_team_options(db, include_disabled=include_disabled) -@router.post("", response_model=TeamOut) +@router.post("", ) async def create_admin_team( req: TeamCreate, admin: User = Depends(get_admin_user), @@ -93,7 +93,7 @@ async def create_admin_team( return await _team_detail_payload(db, team) -@router.put("/{team_id}", response_model=TeamOut) +@router.put("/{team_id}", ) async def update_admin_team( team_id: str, req: TeamUpdate, @@ -113,7 +113,7 @@ async def update_admin_team( return await _team_detail_payload(db, team) -@router.put("/{team_id}/manager", response_model=TeamOut) +@router.put("/{team_id}/manager", ) async def set_team_manager_endpoint( team_id: str, req: SetManagerRequest = Body(...), @@ -122,16 +122,18 @@ async def set_team_manager_endpoint( ): team = await set_team_manager(db, team_id, req.user_id) manager_name = None - if team.manager_id: + # 使用 req.user_id 避免访问 team.manager_id 触发懒加载 + if req.user_id: mgr = await db.execute( - select(User.username).where(User.id == team.manager_id).limit(1) + select(User.username).where(User.id == req.user_id).limit(1) ) manager_name = mgr.scalar_one_or_none() + team_name = team.name await log_operation( db, admin.id, admin.username, - f"设置团队管理人 {team.name}: {manager_name or '取消'}", + f"设置团队管理人 {team_name}: {manager_name or '取消'}", "PUT", f"/admin/teams/{team_id}/manager", detail=json.dumps({"manager_id": req.user_id}, ensure_ascii=False), diff --git a/video-gen-api/app/services/team_invitation_service.py b/video-gen-api/app/services/team_invitation_service.py index ba182b87..d0f2cd61 100644 --- a/video-gen-api/app/services/team_invitation_service.py +++ b/video-gen-api/app/services/team_invitation_service.py @@ -57,6 +57,7 @@ async def create_invitation( ) db.add(invitation) await db.flush() + await db.refresh(invitation) return invitation diff --git a/video-gen-api/app/services/team_manager_service.py b/video-gen-api/app/services/team_manager_service.py index a5cfc535..6fbc5219 100644 --- a/video-gen-api/app/services/team_manager_service.py +++ b/video-gen-api/app/services/team_manager_service.py @@ -27,6 +27,7 @@ async def set_team_manager(db: AsyncSession, team_id: str, user_id: str | None) if user_id is None: team.manager_id = None await db.flush() + await db.refresh(team) return team # 验证用户存在、是前台用户、属于该团队 @@ -43,6 +44,7 @@ async def set_team_manager(db: AsyncSession, team_id: str, user_id: str | None) team.manager_id = user_id await db.flush() + await db.refresh(team) return team diff --git a/video-gen-api/app/services/team_service.py b/video-gen-api/app/services/team_service.py index 7b15e2af..ab3e98ec 100644 --- a/video-gen-api/app/services/team_service.py +++ b/video-gen-api/app/services/team_service.py @@ -164,6 +164,7 @@ async def create_team(db: AsyncSession, req: TeamCreate) -> Team: ) db.add(team) await db.flush() + await db.refresh(team) return team @@ -190,6 +191,7 @@ async def update_team(db: AsyncSession, team_id: str, req: TeamUpdate) -> tuple[ team.status = req.status or TeamStatus.ACTIVE.value team.sort_order = req.sort_order or 0 await db.flush() + await db.refresh(team) after = { "id": team.id,