增加前端增删改查

This commit is contained in:
cjw
2026-03-15 13:50:23 +08:00
parent 191ac77d15
commit e13104e792
4 changed files with 777 additions and 101 deletions
+40 -2
View File
@@ -4,17 +4,19 @@
提供供应商信息的管理功能,包括:
- 供应商列表查询(支持分页、搜索)
- 创建新供应商(自动生成供应商编码)
- 更新供应商信息
- 删除供应商(软删除)
路由前缀: /api/suppliers
"""
from fastapi import APIRouter, Depends, Query
from fastapi import APIRouter, Depends, Query, HTTPException
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import select
from typing import Optional, List
from datetime import datetime
from database.database import get_db_session
from services.auth_service import get_current_active_user
from services.auth_service import get_current_active_user, get_current_admin_user
from models.database import User, Supplier
from .schemas import SupplierCreate, SupplierResponse
@@ -52,3 +54,39 @@ async def create_supplier(
await db_session.commit()
await db_session.refresh(supplier)
return SupplierResponse.from_orm(supplier)
@router.put("/{supplier_id}", response_model=SupplierResponse)
async def update_supplier(
supplier_id: int,
supplier_data: SupplierCreate,
db_session: AsyncSession = Depends(get_db_session),
current_user: User = Depends(get_current_active_user)
):
result = await db_session.execute(select(Supplier).where(Supplier.id == supplier_id))
supplier = result.scalar_one_or_none()
if not supplier:
raise HTTPException(status_code=404, detail="供应商不存在")
for key, value in supplier_data.dict().items():
setattr(supplier, key, value)
await db_session.commit()
await db_session.refresh(supplier)
return SupplierResponse.from_orm(supplier)
@router.delete("/{supplier_id}")
async def delete_supplier(
supplier_id: int,
db_session: AsyncSession = Depends(get_db_session),
current_user: User = Depends(get_current_admin_user)
):
result = await db_session.execute(select(Supplier).where(Supplier.id == supplier_id))
supplier = result.scalar_one_or_none()
if not supplier:
raise HTTPException(status_code=404, detail="供应商不存在")
supplier.is_active = False
await db_session.commit()
return {"message": "供应商已删除"}