首次
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException, Query
|
||||
from sqlalchemy.orm import Session
|
||||
from database import get_db
|
||||
from scheme.wl_student_scheme import StudentCreate, StudentUpdate, StudentOut
|
||||
from dao import wl_student_dao
|
||||
|
||||
router = APIRouter(prefix="/students", tags=["学生管理"])
|
||||
|
||||
|
||||
@router.get("", response_model=list[StudentOut])
|
||||
def list_students(
|
||||
stu_no: str = Query(None),
|
||||
stu_name: str = Query(None),
|
||||
class_id: int = Query(None),
|
||||
advisor_id: int = Query(None, description="按顾问筛选该顾问名下的学生"),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
return wl_student_dao.search_students(db, stu_no, stu_name, class_id, advisor_id)
|
||||
|
||||
|
||||
@router.post("", response_model=StudentOut)
|
||||
def create_student(data: StudentCreate, db: Session = Depends(get_db)):
|
||||
# 和 wl_emp_api 的写法保持一致:学号生成失败(没选班级/班级不存在)
|
||||
# 属于参数问题,转成 400,否则会冒成 500
|
||||
try:
|
||||
return wl_student_dao.create_student(db, data)
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
|
||||
@router.get("/{stu_no}", response_model=StudentOut)
|
||||
def get_student(stu_no: str, db: Session = Depends(get_db)):
|
||||
stu = wl_student_dao.get_student_by_no(db, stu_no)
|
||||
if not stu:
|
||||
raise HTTPException(404, "学生不存在")
|
||||
return stu
|
||||
|
||||
|
||||
@router.put("/{stu_no}", response_model=StudentOut)
|
||||
def update_student(stu_no: str, data: StudentUpdate, db: Session = Depends(get_db)):
|
||||
stu = wl_student_dao.update_student(db, stu_no, data)
|
||||
if not stu:
|
||||
raise HTTPException(404, "学生不存在")
|
||||
return stu
|
||||
|
||||
|
||||
@router.delete("/{stu_no}")
|
||||
def delete_student(stu_no: str, db: Session = Depends(get_db)):
|
||||
if not wl_student_dao.delete_student(db, stu_no):
|
||||
raise HTTPException(404, "学生不存在")
|
||||
return {"msg": "删除成功"}
|
||||
Reference in New Issue
Block a user