2026-09-21 22:06:10 +08:00
|
|
|
|
from datetime import date
|
|
|
|
|
|
from fastapi import APIRouter,Depends,HTTPException,Query
|
2026-09-22 12:31:52 +08:00
|
|
|
|
from class_management.dao.class_management_dao import add_class_dao, update_class_dao, get_class_dao, delete_class_dao
|
|
|
|
|
|
from class_management.database import get_db
|
|
|
|
|
|
from class_management.schema.class_management_request import ClassCreate, ClassResponse, ClassUpdate
|
2026-09-21 22:06:10 +08:00
|
|
|
|
|
2026-09-22 13:44:05 +08:00
|
|
|
|
class_api = APIRouter(prefix='/classes')
|
|
|
|
|
|
# ,tags=['班级管理模块']
|
2026-09-21 22:06:10 +08:00
|
|
|
|
|
2026-09-22 13:38:28 +08:00
|
|
|
|
|
2026-09-22 12:31:52 +08:00
|
|
|
|
@class_api.post("",summary='新增班级')
|
2026-09-21 22:06:10 +08:00
|
|
|
|
def add_class(cla:ClassCreate,db=Depends(get_db)):
|
|
|
|
|
|
c_dict = cla.model_dump()
|
|
|
|
|
|
r = add_class_dao(c=c_dict,db=db)
|
|
|
|
|
|
if not r:
|
|
|
|
|
|
raise HTTPException(status_code=500,detail='服务器繁忙,请稍后添加!')
|
|
|
|
|
|
return ClassResponse(totals=1,data=c_dict)
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-09-22 12:31:52 +08:00
|
|
|
|
@class_api.get('/{id}',summary='根据id查询班级')
|
|
|
|
|
|
def get_one_class(id:int,db=Depends(get_db)):
|
|
|
|
|
|
res = get_class_dao(c={'id':id},db=db)
|
2026-09-21 22:06:10 +08:00
|
|
|
|
if not res:
|
|
|
|
|
|
raise HTTPException(status_code=404, detail="该班级不存在或已删除")
|
2026-09-22 18:23:13 +08:00
|
|
|
|
return ClassResponse(totals=1,data=res[0])
|
2026-09-21 22:06:10 +08:00
|
|
|
|
|
2026-09-22 12:31:52 +08:00
|
|
|
|
@class_api.get('',summary='多字段查询班级')
|
|
|
|
|
|
def get_some_classes( num:str|None = Query(None,description='班级编号')
|
|
|
|
|
|
,name:str|None = Query(None,description='班级名称')
|
|
|
|
|
|
,head_teacher_id:int|None = Query(None,description='班主任')
|
|
|
|
|
|
,coach_teacher_id:int|None = Query(None,description='授课老师')
|
|
|
|
|
|
,tutor_teacher_id:int|None = Query(None,description='助教老师')
|
2026-09-21 22:06:10 +08:00
|
|
|
|
,class_start_time:date|None = Query(None, description="开班日期,格式YYYY‑MM‑DD")
|
|
|
|
|
|
,class_end_time: date|None = Query(None, description="结课日期,格式YYYY‑MM‑DD")
|
|
|
|
|
|
,page:int = Query(1,ge=1,description='页码,从1开始')
|
|
|
|
|
|
,page_size:int = Query(5,ge=1,le=50,description='每页信息条数')
|
|
|
|
|
|
,db=Depends(get_db)
|
|
|
|
|
|
):
|
2026-09-22 12:31:52 +08:00
|
|
|
|
|
|
|
|
|
|
c_dict = {
|
|
|
|
|
|
'num': num,
|
|
|
|
|
|
'name': name,
|
|
|
|
|
|
'head_teacher_id': head_teacher_id,
|
|
|
|
|
|
'coach_teacher_id': coach_teacher_id,
|
|
|
|
|
|
'tutor_teacher_id': tutor_teacher_id,
|
|
|
|
|
|
'class_start_time': class_start_time,
|
|
|
|
|
|
'class_end_time': class_end_time,
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-09-21 22:06:10 +08:00
|
|
|
|
c_dict={k:v for k,v in c_dict.items() if v is not None}#过滤掉值为None的key
|
|
|
|
|
|
|
|
|
|
|
|
res = get_class_dao(c=c_dict,db=db)
|
|
|
|
|
|
total = len(res)
|
|
|
|
|
|
|
|
|
|
|
|
#内存分页
|
|
|
|
|
|
start_index = (page-1)*page_size
|
|
|
|
|
|
page_data = res[start_index:start_index + page_size]
|
|
|
|
|
|
|
2026-09-22 12:31:52 +08:00
|
|
|
|
return ClassResponse(totals=total,data=page_data)
|
2026-09-21 22:06:10 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-09-22 12:31:52 +08:00
|
|
|
|
@class_api.put("/{class_id}",summary='修改班级信息')
|
|
|
|
|
|
def update_class(class_id:int
|
|
|
|
|
|
,update_info:ClassUpdate
|
|
|
|
|
|
,db=Depends(get_db)
|
|
|
|
|
|
):
|
2026-09-21 22:06:10 +08:00
|
|
|
|
update_dict=update_info.model_dump(exclude_unset=True)
|
|
|
|
|
|
if not update_dict:
|
|
|
|
|
|
raise HTTPException(status_code=400, detail="没有传入要修改的字段")
|
|
|
|
|
|
row_count = update_class_dao(cid=class_id, update_data=update_dict, db=db)
|
|
|
|
|
|
if row_count <= 0:
|
|
|
|
|
|
raise HTTPException(status_code=404, detail="班级不存在,修改失败")
|
2026-09-22 12:31:52 +08:00
|
|
|
|
return ClassResponse(detail="修改成功", data={"class_id": id})
|
2026-09-21 22:06:10 +08:00
|
|
|
|
|
|
|
|
|
|
|
2026-09-22 12:31:52 +08:00
|
|
|
|
@class_api.delete('/{id}',summary='逻辑删除班级')
|
|
|
|
|
|
def remove_class(id:int,db=Depends(get_db)):
|
|
|
|
|
|
del_rows = delete_class_dao(id,db)
|
2026-09-21 22:06:10 +08:00
|
|
|
|
if del_rows <= 0:
|
|
|
|
|
|
raise HTTPException(status_code=404, detail="班级不存在,删除失败")
|
2026-09-22 12:31:52 +08:00
|
|
|
|
return ClassResponse(detail='删除成功',data={'id':id})
|