- 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,
|
current_user: User,
|
||||||
db: AsyncSession
|
db: AsyncSession
|
||||||
) -> List[int]:
|
) -> List[int]:
|
||||||
"""获取用户可访问的团队成员ID列表"""
|
"""获取用户可访问的团队成员ID列表(只返回未删除的用户)"""
|
||||||
if current_user.role in ['admin', 'manager']:
|
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)
|
result = await db.execute(stmt)
|
||||||
return [row[0] for row in result.all()]
|
return [row[0] for row in result.all()]
|
||||||
else:
|
else:
|
||||||
@@ -44,9 +51,15 @@ async def get_accessible_team_member_ids(
|
|||||||
if not team_ids:
|
if not team_ids:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
# 2. 查询这些团队的所有成员
|
# 2. 查询这些团队的所有成员(过滤已删除用户)
|
||||||
stmt = select(UserTeam.user_id).where(
|
stmt = select(UserTeam.user_id).join(
|
||||||
UserTeam.team_id.in_(team_ids)
|
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()
|
).distinct()
|
||||||
result = await db.execute(stmt)
|
result = await db.execute(stmt)
|
||||||
return [row[0] for row in result.all()]
|
return [row[0] for row in result.all()]
|
||||||
|
|||||||
Reference in New Issue
Block a user