1
This commit is contained in:
@@ -31,7 +31,7 @@ def _team_snapshot(team: Team | None) -> dict[str, Any]:
|
||||
}
|
||||
|
||||
|
||||
def _team_out_payload(team: Team, member_count: int = 0) -> dict[str, Any]:
|
||||
def _team_out_payload(team: Team, member_count: int = 0, manager_name: str | None = None) -> dict[str, Any]:
|
||||
return {
|
||||
"id": team.id,
|
||||
"name": team.name,
|
||||
@@ -42,6 +42,8 @@ def _team_out_payload(team: Team, member_count: int = 0) -> dict[str, Any]:
|
||||
"member_count": int(member_count or 0),
|
||||
"created_at": team.created_at,
|
||||
"updated_at": team.updated_at,
|
||||
"manager_id": getattr(team, "manager_id", None),
|
||||
"manager_name": manager_name,
|
||||
}
|
||||
|
||||
|
||||
@@ -112,8 +114,25 @@ async def list_teams(
|
||||
.group_by(User.team_id)
|
||||
)
|
||||
member_map = {row[0]: int(row[1] or 0) for row in member_result.all()}
|
||||
|
||||
# 批量获取管理人用户名
|
||||
manager_ids = [getattr(t, "manager_id", None) for t in teams if getattr(t, "manager_id", None)]
|
||||
manager_name_map: dict[str, str] = {}
|
||||
if manager_ids:
|
||||
mgr_result = await db.execute(
|
||||
select(User.id, User.username).where(User.id.in_(manager_ids))
|
||||
)
|
||||
manager_name_map = {row[0]: row[1] for row in mgr_result.all()}
|
||||
|
||||
return {
|
||||
"items": [_team_out_payload(team, member_map.get(team.id, 0)) for team in teams],
|
||||
"items": [
|
||||
_team_out_payload(
|
||||
team,
|
||||
member_map.get(team.id, 0),
|
||||
manager_name_map.get(getattr(team, "manager_id", None)),
|
||||
)
|
||||
for team in teams
|
||||
],
|
||||
"total": total,
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user