Files
2026-09-21 17:39:16 +08:00

67 lines
2.4 KiB
Python

from datetime import datetime
from fastapi import APIRouter, HTTPException
from fastapi.params import Depends
from sqlalchemy.orm import Session
from dao.teachers_dao import add_teachers, del_teachers, update_teachers, search_teachers, \
search_teachers_by_id, get_teacher_classes
from database import get_db
from schemas.req import AddTeacher, DeleteTeacher, UpdateTeacher
router=APIRouter(prefix="/teacher",tags=["老师管理"])
@router.post("/teachers")
async def create_teacher(tea:AddTeacher,db:Session=Depends(get_db)):
date_obj=datetime.strptime(tea.t_created,"%Y-%m-%d") # 将字符串转时间
data={
"t_name":tea.t_name,
"t_gender":tea.t_gender,
"t_phone":tea.t_phone,
"t_subject":tea.t_subject,
"t_created":date_obj
}
res=add_teachers(db, data["t_name"],data["t_gender"],data["t_phone"],data["t_subject"],data["t_created"])
return {"msg":"新增成功","data":res}
@router.delete("/{t_id}")
def delete_teacher(dele:DeleteTeacher,db:Session=Depends(get_db)):
res=del_teachers(db,t_id=dele.t_id,t_name=dele.t_name)
if res.get("msg") == "没找到老师信息":
raise HTTPException(404, detail="老师不存在")
return {"msg": "删除成功"}
@router.put("/{t_id}")
async def update_tea(t_id:int,update:UpdateTeacher,db:Session=Depends(get_db)):
date_obj = datetime.strptime(update.t_created, "%Y-%m-%d")
res=update_teachers(db,t_id=t_id,
new_name=update.t_name,
new_gender=update.t_gender,
new_phone=update.t_phone,
new_subject=update.t_subject,
new_created=date_obj
)
if res.get("msg")=="没找到老师信息":
raise HTTPException(404,detail="老师不存在")
return {"msg":"修改成功","data":res}
@router.get("/list")
def list_teachers(db:Session=Depends(get_db),page:int=1,size:int=3):
res=search_teachers(db,page,size)
return res
@router.get("/{t_id}")
def get_one(t_id:int, db:Session=Depends(get_db)):
tea = search_teachers_by_id(db, t_id)
if not tea:
raise HTTPException(404,detail="老师不存在")
return {"data":tea}
@router.get("/{t_id}/classes")
async def get_classes(t_id:int, db:Session=Depends(get_db)):
data=get_teacher_classes(db, t_id)
if not data:
raise HTTPException(404,detail="老师不存在")
return {"data":data}