第一次提交
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException, Query
|
||||
from sqlalchemy.orm import Session
|
||||
from typing import Optional
|
||||
|
||||
|
||||
from database import get_db # 按你项目实际路径改
|
||||
from dao.class_dao import ClassDAO
|
||||
from schemas.class_scheme import (
|
||||
ClassCreate,
|
||||
ClassUpdateBase,
|
||||
ClassHeadTeacherUpdate,
|
||||
ClassTeachersUpdate,
|
||||
ClassDelete,
|
||||
ClassDetail,
|
||||
ClassPageResult,
|
||||
BatchDeleteResult,
|
||||
)
|
||||
|
||||
router = APIRouter(prefix="/api/classes", tags=["班级管理"])
|
||||
|
||||
|
||||
@router.post("", response_model=ClassDetail, summary="新增班级")
|
||||
def create_class(req: ClassCreate, db: Session = Depends(get_db)):
|
||||
try:
|
||||
return ClassDAO.create(db, req)
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
|
||||
|
||||
@router.get("", response_model=ClassPageResult, summary="分页查询班级列表")
|
||||
def list_classes(
|
||||
page_num: int = Query(1, ge=1),
|
||||
page_size: int = Query(10, ge=1, le=100),
|
||||
class_name: Optional[str] = None,
|
||||
head_teacher_id: Optional[int] = None,
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
total, rows = ClassDAO.list_page(
|
||||
db, page_num, page_size, class_name, head_teacher_id
|
||||
)
|
||||
return ClassPageResult(total=total, items=rows)
|
||||
|
||||
|
||||
|
||||
@router.put(
|
||||
"/batch-delete",
|
||||
response_model=BatchDeleteResult,
|
||||
summary="批量逻辑删除/恢复班级",
|
||||
)
|
||||
def batch_delete(req: ClassDelete, db: Session = Depends(get_db)):
|
||||
count = ClassDAO.batch_toggle_delete(db, req)
|
||||
return BatchDeleteResult(affected_count=count)
|
||||
|
||||
|
||||
|
||||
@router.get("/{class_id}", response_model=ClassDetail, summary="查询班级详情")
|
||||
def get_class(class_id: int, db: Session = Depends(get_db)):
|
||||
data = ClassDAO.get_by_id(db, class_id)
|
||||
if not data:
|
||||
raise HTTPException(status_code=404, detail="班级不存在或已删除")
|
||||
return data
|
||||
|
||||
|
||||
|
||||
@router.put(
|
||||
"/{class_id}/base",
|
||||
response_model=ClassDetail,
|
||||
summary="更新班级基础信息",
|
||||
)
|
||||
def update_class_base(
|
||||
class_id: int, req: ClassUpdateBase, db: Session = Depends(get_db)
|
||||
):
|
||||
try:
|
||||
data = ClassDAO.update_base(db, class_id, req)
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
if not data:
|
||||
raise HTTPException(status_code=404, detail="班级不存在或已删除")
|
||||
return data
|
||||
|
||||
|
||||
|
||||
@router.put(
|
||||
"/{class_id}/head-teacher",
|
||||
response_model=ClassDetail,
|
||||
summary="调整班主任",
|
||||
)
|
||||
def update_head_teacher(
|
||||
class_id: int, req: ClassHeadTeacherUpdate, db: Session = Depends(get_db)
|
||||
):
|
||||
try:
|
||||
data = ClassDAO.update_head_teacher(db, class_id, req)
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
if not data:
|
||||
raise HTTPException(status_code=404, detail="班级不存在或已删除")
|
||||
return data
|
||||
|
||||
|
||||
@router.put(
|
||||
"/{class_id}/teachers",
|
||||
response_model=ClassDetail,
|
||||
summary="更新授课老师",
|
||||
)
|
||||
def update_teachers(
|
||||
class_id: int, req: ClassTeachersUpdate, db: Session = Depends(get_db)
|
||||
):
|
||||
try:
|
||||
data = ClassDAO.update_teachers(db, class_id, req)
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
if not data:
|
||||
raise HTTPException(status_code=404, detail="班级不存在或已删除")
|
||||
return data
|
||||
Reference in New Issue
Block a user