Files
zcglxt/backend/app/api/v1/brands_suppliers.py

135 lines
4.1 KiB
Python

"""
品牌和供应商API路由
"""
from typing import List, Optional, Dict, Any
from fastapi import APIRouter, Depends, HTTPException, status, Query
from sqlalchemy.orm import Session
from app.core.deps import get_sync_db, get_current_user
from app.schemas.brand_supplier import (
BrandCreate,
BrandUpdate,
BrandResponse,
SupplierCreate,
SupplierUpdate,
SupplierResponse
)
from app.services.brand_supplier_service import brand_service, supplier_service
router = APIRouter()
# ===== 品牌管理 =====
@router.get("/brands", response_model=Dict[str, Any])
def get_brands(
skip: int = Query(0, ge=0, description="跳过条数"),
limit: int = Query(20, ge=1, le=100, description="返回条数"),
status: Optional[str] = Query(None, description="状态筛选"),
keyword: Optional[str] = Query(None, description="搜索关键词"),
db: Session = Depends(get_sync_db),
current_user = Depends(get_current_user)
):
"""获取品牌列表"""
items, total = brand_service.get_brands(db, skip, limit, status, keyword)
return {"items": items, "total": total}
@router.get("/brands/{brand_id}", response_model=BrandResponse)
def get_brand(
brand_id: int,
db: Session = Depends(get_sync_db),
current_user = Depends(get_current_user)
):
"""获取品牌详情"""
return brand_service.get_brand(db, brand_id)
@router.post("/brands", response_model=BrandResponse, status_code=status.HTTP_201_CREATED)
def create_brand(
obj_in: BrandCreate,
db: Session = Depends(get_sync_db),
current_user = Depends(get_current_user)
):
"""创建品牌"""
return brand_service.create_brand(db, obj_in, current_user.id)
@router.put("/brands/{brand_id}", response_model=BrandResponse)
def update_brand(
brand_id: int,
obj_in: BrandUpdate,
db: Session = Depends(get_sync_db),
current_user = Depends(get_current_user)
):
"""更新品牌"""
return brand_service.update_brand(db, brand_id, obj_in, current_user.id)
@router.delete("/brands/{brand_id}", status_code=status.HTTP_204_NO_CONTENT)
def delete_brand(
brand_id: int,
db: Session = Depends(get_sync_db),
current_user = Depends(get_current_user)
):
"""删除品牌"""
brand_service.delete_brand(db, brand_id, current_user.id)
return None
# ===== 供应商管理 =====
@router.get("/suppliers", response_model=Dict[str, Any])
def get_suppliers(
skip: int = Query(0, ge=0, description="跳过条数"),
limit: int = Query(20, ge=1, le=100, description="返回条数"),
status: Optional[str] = Query(None, description="状态筛选"),
keyword: Optional[str] = Query(None, description="搜索关键词"),
db: Session = Depends(get_sync_db),
current_user = Depends(get_current_user)
):
"""获取供应商列表"""
items, total = supplier_service.get_suppliers(db, skip, limit, status, keyword)
return {"items": items, "total": total}
@router.get("/suppliers/{supplier_id}", response_model=SupplierResponse)
def get_supplier(
supplier_id: int,
db: Session = Depends(get_sync_db),
current_user = Depends(get_current_user)
):
"""获取供应商详情"""
return supplier_service.get_supplier(db, supplier_id)
@router.post("/suppliers", response_model=SupplierResponse, status_code=status.HTTP_201_CREATED)
def create_supplier(
obj_in: SupplierCreate,
db: Session = Depends(get_sync_db),
current_user = Depends(get_current_user)
):
"""创建供应商"""
return supplier_service.create_supplier(db, obj_in, current_user.id)
@router.put("/suppliers/{supplier_id}", response_model=SupplierResponse)
def update_supplier(
supplier_id: int,
obj_in: SupplierUpdate,
db: Session = Depends(get_sync_db),
current_user = Depends(get_current_user)
):
"""更新供应商"""
return supplier_service.update_supplier(db, supplier_id, obj_in, current_user.id)
@router.delete("/suppliers/{supplier_id}", status_code=status.HTTP_204_NO_CONTENT)
def delete_supplier(
supplier_id: int,
db: Session = Depends(get_sync_db),
current_user = Depends(get_current_user)
):
"""删除供应商"""
supplier_service.delete_supplier(db, supplier_id, current_user.id)
return None