This commit is contained in:
2026-07-06 14:06:25 +08:00
parent 0aa47f455a
commit 14e0fd8b25
4 changed files with 14 additions and 7 deletions
+9 -7
View File
@@ -9,7 +9,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
from app.dependencies import get_admin_user, get_db
from app.models.team import Team
from app.models.user import User
from app.schemas.team import TeamCreate, TeamListOut, TeamOptionOut, TeamOut, TeamUpdate
from app.schemas.team import TeamCreate, TeamListOut, TeamOptionOut, TeamUpdate
from app.schemas.team_manager import SetManagerRequest
from app.services.operation_log import log_operation
from app.services.team_manager_service import set_team_manager
@@ -74,7 +74,7 @@ async def list_admin_team_options(
return await list_team_options(db, include_disabled=include_disabled)
@router.post("", response_model=TeamOut)
@router.post("", )
async def create_admin_team(
req: TeamCreate,
admin: User = Depends(get_admin_user),
@@ -93,7 +93,7 @@ async def create_admin_team(
return await _team_detail_payload(db, team)
@router.put("/{team_id}", response_model=TeamOut)
@router.put("/{team_id}", )
async def update_admin_team(
team_id: str,
req: TeamUpdate,
@@ -113,7 +113,7 @@ async def update_admin_team(
return await _team_detail_payload(db, team)
@router.put("/{team_id}/manager", response_model=TeamOut)
@router.put("/{team_id}/manager", )
async def set_team_manager_endpoint(
team_id: str,
req: SetManagerRequest = Body(...),
@@ -122,16 +122,18 @@ async def set_team_manager_endpoint(
):
team = await set_team_manager(db, team_id, req.user_id)
manager_name = None
if team.manager_id:
# 使用 req.user_id 避免访问 team.manager_id 触发懒加载
if req.user_id:
mgr = await db.execute(
select(User.username).where(User.id == team.manager_id).limit(1)
select(User.username).where(User.id == req.user_id).limit(1)
)
manager_name = mgr.scalar_one_or_none()
team_name = team.name
await log_operation(
db,
admin.id,
admin.username,
f"设置团队管理人 {team.name}: {manager_name or '取消'}",
f"设置团队管理人 {team_name}: {manager_name or '取消'}",
"PUT",
f"/admin/teams/{team_id}/manager",
detail=json.dumps({"manager_id": req.user_id}, ensure_ascii=False),