File size: 1,388 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 | """Client 企业信息预填 API。"""
from __future__ import annotations
from typing import Any
from ninja import Router
from apps.client.schemas import EnterpriseClientPrefillOut, EnterpriseCompanySearchOut
from apps.client.services.client_enterprise_prefill_service import ClientEnterprisePrefillService
from apps.core.exceptions import ValidationException
router = Router(tags=["客户管理"])
def _get_prefill_service() -> ClientEnterprisePrefillService:
return ClientEnterprisePrefillService()
@router.get("/clients/enterprise/search", response=EnterpriseCompanySearchOut)
def search_enterprise_companies(
request: Any,
keyword: str,
provider: str | None = None,
limit: int = 8,
) -> EnterpriseCompanySearchOut:
if limit < 1 or limit > 20:
raise ValidationException(message="limit 必须在 1 到 20 之间", code="INVALID_LIMIT")
payload = _get_prefill_service().search_companies(keyword=keyword, provider=provider, limit=limit)
return EnterpriseCompanySearchOut(**payload)
@router.get("/clients/enterprise/prefill", response=EnterpriseClientPrefillOut)
def get_enterprise_prefill(
request: Any,
company_id: str,
provider: str | None = None,
) -> EnterpriseClientPrefillOut:
payload = _get_prefill_service().build_prefill(company_id=company_id, provider=provider)
return EnterpriseClientPrefillOut(**payload)
|