58 lines
2.0 KiB
Python
58 lines
2.0 KiB
Python
from fastapi import APIRouter, Depends, HTTPException, Query
|
|||
|
|
from sqlalchemy.orm import Session
|
||
|
|
|
||
|
|
from dao import wl_advisor_dao
|
||
|
|
from database import get_db
|
||
|
|
from scheme.wl_advisor_scheme import AdvisorCreate, AdvisorOut, AdvisorUpdate
|
||
|
|
|
||
|
|
router = APIRouter(prefix="/advisor", tags=["顾问管理"])
|
||
|
|
|
||
|
|
|
||
|
|
# 查询顾问列表(支持姓名/手机号/区域/性别模糊筛选 + 分页)
|
||
|
|
# 注意:本路由必须写在 /{adv_id} 前面,否则 "/advisor/" 会被当成 adv_id 去解析
|
||
|
|
@router.get("/", response_model=list[AdvisorOut])
|
||
|
|
def query_list(
|
||
|
|
adv_name: str = Query(None),
|
||
|
|
adv_phone: str = Query(None),
|
||
|
|
adv_region: str = Query(None),
|
||
|
|
adv_gender: str = Query(None),
|
||
|
|
skip: int = 0,
|
||
|
|
limit: int = 100,
|
||
|
|
db: Session = Depends(get_db),
|
||
|
|
):
|
||
|
|
return wl_advisor_dao.list_advisors(
|
||
|
|
db, adv_name, adv_phone, adv_region, adv_gender, skip, limit
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
# 新增顾问
|
||
|
|
@router.post("/", response_model=AdvisorOut, status_code=201)
|
||
|
|
def add_advisor(body: AdvisorCreate, db: Session = Depends(get_db)):
|
||
|
|
return wl_advisor_dao.create_advisor(db, body)
|
||
|
|
|
||
|
|
|
||
|
|
# 根据编号查询单个顾问
|
||
|
|
@router.get("/{adv_id}", response_model=AdvisorOut)
|
||
|
|
def query_one(adv_id: int, db: Session = Depends(get_db)):
|
||
|
|
advisor = wl_advisor_dao.get_advisor_by_id(db, adv_id)
|
||
|
|
if not advisor:
|
||
|
|
raise HTTPException(status_code=404, detail="顾问不存在")
|
||
|
|
return advisor
|
||
|
|
|
||
|
|
|
||
|
|
# 修改顾问
|
||
|
|
@router.put("/{adv_id}", response_model=AdvisorOut)
|
||
|
|
def edit_advisor(adv_id: int, body: AdvisorUpdate, db: Session = Depends(get_db)):
|
||
|
|
advisor = wl_advisor_dao.update_advisor(db, adv_id, body)
|
||
|
|
if not advisor:
|
||
|
|
raise HTTPException(status_code=404, detail="顾问不存在")
|
||
|
|
return advisor
|
||
|
|
|
||
|
|
|
||
|
|
# 逻辑删除顾问
|
||
|
|
@router.delete("/{adv_id}")
|
||
|
|
def remove_advisor(adv_id: int, db: Session = Depends(get_db)):
|
||
|
|
if not wl_advisor_dao.delete_advisor(db, adv_id):
|
||
|
|
raise HTTPException(status_code=404, detail="顾问不存在")
|
||
|
|
return {"code": 200, "msg": "删除成功"}
|