diff --git a/backend/app/api/v1/team_management.py b/backend/app/api/v1/team_management.py index 438d9e8..7c3b163 100644 --- a/backend/app/api/v1/team_management.py +++ b/backend/app/api/v1/team_management.py @@ -28,10 +28,17 @@ async def get_accessible_team_member_ids( current_user: User, db: AsyncSession ) -> List[int]: - """获取用户可访问的团队成员ID列表""" + """获取用户可访问的团队成员ID列表(只返回未删除的用户)""" if current_user.role in ['admin', 'manager']: - # 管理员查看所有团队成员 - stmt = select(UserTeam.user_id).distinct() + # 管理员查看所有团队成员(过滤已删除用户) + stmt = select(UserTeam.user_id).join( + User, UserTeam.user_id == User.id + ).where( + and_( + User.is_deleted == False, # noqa: E712 + User.is_active == True # noqa: E712 + ) + ).distinct() result = await db.execute(stmt) return [row[0] for row in result.all()] else: @@ -44,9 +51,15 @@ async def get_accessible_team_member_ids( if not team_ids: return [] - # 2. 查询这些团队的所有成员 - stmt = select(UserTeam.user_id).where( - UserTeam.team_id.in_(team_ids) + # 2. 查询这些团队的所有成员(过滤已删除用户) + stmt = select(UserTeam.user_id).join( + User, UserTeam.user_id == User.id + ).where( + and_( + UserTeam.team_id.in_(team_ids), + User.is_deleted == False, # noqa: E712 + User.is_active == True # noqa: E712 + ) ).distinct() result = await db.execute(stmt) return [row[0] for row in result.all()]