Merge branch 'main' into zhangyi

# Conflicts:
#	models/class_teacher.py
#	models/teacher.py
This commit is contained in:
2026-09-21 19:23:33 +08:00
24 changed files with 558 additions and 19 deletions
+25
View File
@@ -0,0 +1,25 @@
from fastapi import APIRouter,Depends,HTTPException
from schemas.class_schema import *
from core.database import get_db
from dao.class_dao import *
classes_router = APIRouter()
@classes_router.post('/',response_model=ClassResponse)
def post_classes(classes:ClassCreate,db=Depends(get_db)):
c = classes.model_dump()
r = post_classes_dao( c , db )
if r :
return ClassResponse( total=1,data=c )
else :
raise HTTPException(status_code=500,detail='添加失败,服务器繁忙,请稍后添加!')
@classes_router.put('/{id}',response_model=ClassResponse)
def put_classes(id:int,classes:ClassUpdate,db=Depends(get_db)):
updates = classes.model_dump( exclude_unset=True )
r = update_classes_dao( id , db , updates )
if r :
return ClassResponse( total=1,data=updates )
else :
raise HTTPException(status_code=500, detail='更新失败,该班级已不存在或服务器繁忙,请稍后更新!')
+65
View File
@@ -0,0 +1,65 @@
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from core.database import get_db
from schemas.consultant import ConsultantCreate, ConsultantUpdate, ConsultantResponse
from dao import consultant as dao_consultant
router = APIRouter()
@router.get(
path="/consultants",
tags=['顾问管理模块']
)
def read_consultants(
db: Session = Depends(get_db),
page:int=1,
page_size:int=20,
name:str|None=None,
phone:str|None=None
):
return dao_consultant.get_consultant_list(db, page, page_size, name, phone)
@router.post("/consultants", response_model=ConsultantResponse,tags=['顾问管理模块'])
def create_consultant(
obj_in: ConsultantCreate,
db: Session = Depends(get_db)
):
return dao_consultant.create_consultant(db, obj_in)
@router.get("/consultants/{id}", response_model=ConsultantResponse,tags=['顾问管理模块'])
def read_consultant(id: int, db: Session = Depends(get_db)):
res = dao_consultant.get_consultant_by_id(db, cid=id)
if res is None:
raise HTTPException(status_code=404, detail="顾问不存在或已删除")
return res
@router.put(
path="/consultants/{id}",
response_model=ConsultantResponse,
tags=['顾问管理模块']
)
def update_consultant(
id: int,
obj_in: ConsultantUpdate,
db: Session = Depends(get_db)
):
# model_dump 排除为None的字段,只更新前端传过来的字段
update_dict = obj_in.model_dump(exclude_none=True)
res = dao_consultant.update_consultant(db, cid=id, update_data=update_dict)
if res is None:
raise HTTPException(status_code=404, detail="顾问不存在或已删除")
return res
@router.delete("/consultants/{id}", response_model=ConsultantResponse,tags=['顾问管理模块'])
def delete_consultant(id: int, db: Session = Depends(get_db)):
res = dao_consultant.delete_consultant(db, cid=id)
if res is None:
raise HTTPException(status_code=404, detail="顾问不存在或已删除")
return res
+28
View File
@@ -0,0 +1,28 @@
from fastapi import APIRouter,HTTPException,Depends
from DoubaoTeam.core.database import get_db
from DoubaoTeam.models.student import Student
from DoubaoTeam.models.score import Score
from DoubaoTeam.dao.statistics import *
from DoubaoTeam.schemas.common import SuccessResponse
from sqlalchemy.orm import Session
statistics_router=APIRouter()
@statistics_router.get("/scores/age-over-30",response_model=SuccessResponse)
def api_age_over_thirty(db:Session=Depends(get_db)):
try:
age_over_thirty_list=age_over_thirty(Student,db)
return SuccessResponse(status_code=200,msg=age_over_thirty_list)
except NoExist as e:
raise HTTPException(status_code=404,detail=str(e))
# 这边功能函数返回的是一个字典
@statistics_router.get("/classes/gender-count",response_model=SuccessResponse)
def api_gender_count(db:Session=Depends(get_db)):
try:
result = gender_count(Student,db)
return SuccessResponse(status_code=200,msg=result)
except NoExist as e:
raise HTTPException(status_code=404,detail=str(e))
+14
View File
@@ -0,0 +1,14 @@
from fastapi import APIRouter,Depends,HTTPException
from sqlalchemy.orm import Session
from dao.student import *
from schemas.student import StudentCreate
student_router = APIRouter()
@student_router.post("/student")
def create_student(request:StudentCreate,db:Session,create = Depends(create_students)):
d = request.model_dump()
r = create_students(d,db)
if not r:
raise HTTPException(status_code=500,detail='服务器繁忙,请稍后添加!')
return {'code':200,'detail':"添加学生成功"}