# ============================================================ # 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 }