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": "删除成功"}