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}