Files
README_hlddz_md/classinfo_api.py
T

75 lines
3.0 KiB
Python
Raw Normal View History

2026-09-21 21:12:25 +08:00
# ============================================================
# api/classinfo_api.py —— 班级模块路由层(Controller)
# 职责:定义班级相关的所有 HTTP 接口,调用 dao 层完成业务处理
# 统一前缀:/classinfo(在 main.py 中挂载)
# ============================================================
# 路由接口
from typing import List
from fastapi import APIRouter,Depends,HTTPException
from database import get_db # 数据库会话依赖
from dao.classinfo_dao import create_class, get_class, get_all_class, update_class, delete_class, \
get_class_all_teachers, get_class_all_students # 班级数据访问层函数
from scheme.classinfo_scheme import ClassCreate,ClassUpdate,ClassIn # 班级请求/响应模型
router=APIRouter()
# 新增班级(POST /classinfo/)
@router.post("/",response_model=ClassIn)
def add_class(class_data:ClassCreate,db=Depends(get_db)):
return create_class(db=db,obj=class_data)
# 条件查询班级(GET /classinfo/search):可按 id 或名称筛选
@router.get("/search",response_model=List[ClassIn])
def get_cls(class_id:int=None,class_name:str=None,db=Depends(get_db)):
res_list=get_class(db=db,class_id=class_id,class_name=class_name)
# 如果指定class_id但是查不到,才抛出404
if class_id is not None and len(res_list)==0:
raise HTTPException(status_code=404, detail="班级不存在")
return res_list
# 查询全部班级(GET /classinfo/)
@router.get("/",response_model=List[ClassIn])
def get_all(db=Depends(get_db)):
return get_all_class(db=db)
# 修改班级(PUT /classinfo/{class_id})
@router.put("/{class_id}",response_model=ClassIn)
def up_class(class_id:int,class_data:ClassUpdate,db=Depends(get_db)):
res=update_class(db=db,class_id=class_id, obj=class_data)
if not res:
raise HTTPException(status_code=404, detail="班级不存在")
return res
# 逻辑删除班级(DELETE /classinfo/{class_id})
@router.delete("/{class_id}")
def del_class(class_id:int,db=Depends(get_db)):
res=delete_class(db=db,class_id=class_id)
if not res:
raise HTTPException(status_code=404,detail="班级不存在")
return {"msg": "逻辑删除成功"}
# 1. 查询班级下全部老师(GET /classinfo/{class_id}/teachers)
@router.get("/{class_id}/teachers")
def get_class_teacher_list(class_id:int, db=Depends(get_db)):
teacher_list = get_class_all_teachers(db, class_id)
if teacher_list is None:
raise HTTPException(status_code=404, detail="班级不存在")
return {
"class_id": class_id,
"teacher_list": teacher_list
}
# 2. 查询班级下全部学生(GET /classinfo/{class_id}/students)
@router.get("/{class_id}/students")
def get_class_student_list(class_id:int, db=Depends(get_db)):
student_list = get_class_all_students(db, class_id)
if student_list is None:
raise HTTPException(status_code=404, detail="班级不存在")
return {
"class_id": class_id,
"student_list": student_list
}