File size: 1,977 Bytes
b4f2238 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | """
团队 API
负责请求/响应处理,所有业务逻辑委托给 TeamService
"""
from __future__ import annotations
from django.http import HttpRequest
from ninja import Router
from apps.core.security.auth import JWTOrSessionAuth
from apps.organization.api.utils_api import get_request_user
from apps.organization.dtos import TeamUpsertDTO
from apps.organization.schemas import TeamIn, TeamOut
from apps.organization.services import TeamService
router = Router(auth=JWTOrSessionAuth())
def _get_team_service() -> TeamService:
"""工厂函数:获取团队服务实例"""
return TeamService()
_team_service = _get_team_service()
@router.get("/teams", response=list[TeamOut])
def list_teams(request: HttpRequest, law_firm_id: int | None = None, team_type: str | None = None) -> list[TeamOut]:
return list(_team_service.list_teams(law_firm_id=law_firm_id, team_type=team_type, user=get_request_user(request)))
@router.post("/teams", response=TeamOut)
def create_team(request: HttpRequest, payload: TeamIn) -> TeamOut:
dto = TeamUpsertDTO(name=payload.name, team_type=payload.team_type, law_firm_id=payload.law_firm_id)
return _team_service.create_team(data=dto, user=get_request_user(request))
@router.get("/teams/{team_id}", response=TeamOut)
def get_team(request: HttpRequest, team_id: int) -> TeamOut:
return _team_service.get_team(team_id=team_id, user=get_request_user(request))
@router.put("/teams/{team_id}", response=TeamOut)
def update_team(request: HttpRequest, team_id: int, payload: TeamIn) -> TeamOut:
dto = TeamUpsertDTO(name=payload.name, team_type=payload.team_type, law_firm_id=payload.law_firm_id)
return _team_service.update_team(team_id=team_id, data=dto, user=get_request_user(request))
@router.delete("/teams/{team_id}")
def delete_team(request: HttpRequest, team_id: int) -> dict[str, bool]:
_team_service.delete_team(team_id=team_id, user=get_request_user(request))
return {"success": True}
|