增加前端增删改查

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/customers
"""
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, Customer
from .schemas import CustomerCreate, CustomerResponse
@@ -52,3 +54,39 @@ async def create_customer(
await db_session.commit()
await db_session.refresh(customer)
return CustomerResponse.from_orm(customer)
@router.put("/{customer_id}", response_model=CustomerResponse)
async def update_customer(
customer_id: int,
customer_data: CustomerCreate,
db_session: AsyncSession = Depends(get_db_session),
current_user: User = Depends(get_current_active_user)
):
result = await db_session.execute(select(Customer).where(Customer.id == customer_id))
customer = result.scalar_one_or_none()
if not customer:
raise HTTPException(status_code=404, detail="客户不存在")
for key, value in customer_data.dict().items():
setattr(customer, key, value)
await db_session.commit()
await db_session.refresh(customer)
return CustomerResponse.from_orm(customer)
@router.delete("/{customer_id}")
async def delete_customer(
customer_id: int,
db_session: AsyncSession = Depends(get_db_session),
current_user: User = Depends(get_current_admin_user)
):
result = await db_session.execute(select(Customer).where(Customer.id == customer_id))
customer = result.scalar_one_or_none()
if not customer:
raise HTTPException(status_code=404, detail="客户不存在")
customer.is_active = False
await db_session.commit()
return {"message": "客户已删除"}