dingdanquanliucheng/backend/app/api/customers.py
2026-05-14 13:51:06 +08:00

66 lines
2.1 KiB
Python

from fastapi import APIRouter, Depends, Query
from sqlalchemy.orm import Session
from backend.app.core.error_codes import ErrorCode
from backend.app.core.exceptions import AppException
from backend.app.db import get_db_session
from backend.app.schemas.common import success_payload
from backend.app.schemas.customers import CreateCustomerRequest
from backend.app.services.customer_service import customer_service
router = APIRouter(prefix="/api/customers", tags=["customers"])
@router.get("")
def list_customers(
customer_name: str | None = Query(default=None),
mobile: str | None = Query(default=None),
customer_type: str | None = Query(default=None),
settlement_type: str | None = Query(default=None),
salesman_id: int | None = Query(default=None),
page_no: int = Query(default=1),
page_size: int = Query(default=20),
session: Session = Depends(get_db_session),
) -> dict:
result = customer_service.list_customers(
session,
{
"customer_name": customer_name,
"mobile": mobile,
"customer_type": customer_type,
"settlement_type": settlement_type,
"salesman_id": salesman_id,
},
)
start = max(page_no - 1, 0) * page_size
result["list"] = result["list"][start : start + page_size]
result["page_no"] = page_no
result["page_size"] = page_size
return success_payload(result)
@router.post("")
def create_customer(
payload: CreateCustomerRequest,
session: Session = Depends(get_db_session),
) -> dict:
return success_payload(
customer_service.create_customer(
session=session,
payload=payload.model_dump(),
)
)
@router.get("/{customer_id}")
def get_customer(customer_id: int, session: Session = Depends(get_db_session)) -> dict:
customer = customer_service.get_customer(customer_id, session)
if not customer:
raise AppException(code=ErrorCode.NOT_FOUND, message="客户不存在", status_code=404)
return success_payload(customer)
@router.post("/import")
def import_customers() -> dict:
return success_payload(customer_service.import_customers())