Files
README_hlddz_md/classinfo_api.py
T
2026-09-21 21:12:25 +08:00

75 lines
3.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ============================================================
# 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
}