1
This commit is contained in:
@@ -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),
|
||||
|
||||
@@ -57,6 +57,7 @@ async def create_invitation(
|
||||
)
|
||||
db.add(invitation)
|
||||
await db.flush()
|
||||
await db.refresh(invitation)
|
||||
return invitation
|
||||
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ async def set_team_manager(db: AsyncSession, team_id: str, user_id: str | None)
|
||||
if user_id is None:
|
||||
team.manager_id = None
|
||||
await db.flush()
|
||||
await db.refresh(team)
|
||||
return team
|
||||
|
||||
# 验证用户存在、是前台用户、属于该团队
|
||||
@@ -43,6 +44,7 @@ async def set_team_manager(db: AsyncSession, team_id: str, user_id: str | None)
|
||||
|
||||
team.manager_id = user_id
|
||||
await db.flush()
|
||||
await db.refresh(team)
|
||||
return team
|
||||
|
||||
|
||||
|
||||
@@ -164,6 +164,7 @@ async def create_team(db: AsyncSession, req: TeamCreate) -> Team:
|
||||
)
|
||||
db.add(team)
|
||||
await db.flush()
|
||||
await db.refresh(team)
|
||||
return team
|
||||
|
||||
|
||||
@@ -190,6 +191,7 @@ async def update_team(db: AsyncSession, team_id: str, req: TeamUpdate) -> tuple[
|
||||
team.status = req.status or TeamStatus.ACTIVE.value
|
||||
team.sort_order = req.sort_order or 0
|
||||
await db.flush()
|
||||
await db.refresh(team)
|
||||
|
||||
after = {
|
||||
"id": team.id,
|
||||
|
||||
Reference in New Issue
Block a user