From 99c4ac547344dce1c168645cc93a89d50a42b4bc Mon Sep 17 00:00:00 2001 From: yuliang_guo Date: Sat, 31 Jan 2026 19:01:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=9B=A2=E9=98=9F=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E5=8F=AA=E8=AE=A1=E7=AE=97=E6=9C=AA=E5=88=A0=E9=99=A4=E7=9A=84?= =?UTF-8?q?=E6=B4=BB=E8=B7=83=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - get_accessible_team_member_ids 增加 is_deleted=False 和 is_active=True 过滤 - 避免统计已离职/删除的用户导致数量不准 --- backend/app/api/v1/team_management.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) 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()]