- get_accessible_team_member_ids 增加 is_deleted=False 和 is_active=True 过滤 - 避免统计已离职/删除的用户导致数量不准
This commit is contained in:
@@ -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()]
|
||||
|
||||
Reference in New Issue
Block a user