2026-09-21 08:41:49 +08:00
|
|
|
# students_api所有students的api路由、接口
|
|
|
|
|
|
|
|
|
|
from fastapi import APIRouter , Depends , HTTPException
|
|
|
|
|
from students.dao.students_dao import *
|
|
|
|
|
from students.model.students_model import *
|
|
|
|
|
from students.schema.students_request import *
|
|
|
|
|
from students.databases import *
|
|
|
|
|
|
|
|
|
|
students_api = APIRouter()
|
|
|
|
|
|
2026-09-21 12:20:53 +08:00
|
|
|
@students_api.get("/students"
|
2026-09-21 08:41:49 +08:00
|
|
|
,summary='学生资料查询'
|
2026-09-22 10:08:56 +08:00
|
|
|
,description=f'筛选条件全为空即查询所有学生资料,输入薪资会查询大于输入薪资以上的学生。\n '
|
|
|
|
|
f'时间格式:YYYY-MM-DD'
|
2026-09-21 12:20:53 +08:00
|
|
|
,response_model=list[StudentsQuery]
|
2026-09-21 08:41:49 +08:00
|
|
|
)
|
|
|
|
|
def get_students( stu:StudentsQuery = Depends()
|
|
|
|
|
, db=Depends(get_db)
|
|
|
|
|
):
|
2026-09-21 12:20:53 +08:00
|
|
|
s_dict = stu.model_dump(exclude_unset=True) # 没值的不要
|
|
|
|
|
result = get_student_dao( s=s_dict , db=db )
|
2026-09-21 08:41:49 +08:00
|
|
|
if result:
|
|
|
|
|
return result
|
|
|
|
|
raise HTTPException(status_code=404, detail="没有找到符合条件的学生")
|
|
|
|
|
|
|
|
|
|
|
2026-09-21 12:20:53 +08:00
|
|
|
@students_api.post("/students"
|
2026-09-21 08:41:49 +08:00
|
|
|
,summary='新增学生资料'
|
2026-09-22 10:08:56 +08:00
|
|
|
,description=f'学生ID自动分配,学生姓名、学生手机号和班级是必填项,不能为空。\n '
|
|
|
|
|
f'时间格式:YYYY-MM-DD'
|
2026-09-21 08:41:49 +08:00
|
|
|
,response_model=StudentsResponse )
|
|
|
|
|
def add_student( stu:StudentsResponse = Depends()
|
|
|
|
|
, db=Depends(get_db)
|
|
|
|
|
):
|
2026-09-21 12:20:53 +08:00
|
|
|
s_dict = stu.model_dump(exclude_unset=True)
|
|
|
|
|
result = add_student_dao( s=s_dict , db=db )
|
2026-09-21 08:41:49 +08:00
|
|
|
if not result:
|
2026-09-21 12:20:53 +08:00
|
|
|
raise HTTPException(status_code=500, detail='手机号已有学生使用或必填项为空。')
|
2026-09-21 08:41:49 +08:00
|
|
|
return result
|
|
|
|
|
|
2026-09-21 12:20:53 +08:00
|
|
|
@students_api.put("/students"
|
2026-09-21 08:41:49 +08:00
|
|
|
,summary='学生资料更新'
|
2026-09-22 10:08:56 +08:00
|
|
|
,description=f'请输入需要更新信息的学生ID,学生手机号不可重复,填写即更新,为空即不更新。\n '
|
|
|
|
|
f'时间格式:YYYY-MM-DD'
|
2026-09-21 08:41:49 +08:00
|
|
|
,response_model=StudentsUpdate )
|
|
|
|
|
def get_students( stu:StudentsUpdate = Depends()
|
|
|
|
|
, db=Depends(get_db)
|
|
|
|
|
):
|
2026-09-21 12:20:53 +08:00
|
|
|
s_dict = stu.model_dump(exclude_unset=True)
|
|
|
|
|
result = update_student_dao( s=s_dict , db=db )
|
|
|
|
|
if not result:
|
|
|
|
|
raise HTTPException(status_code=500, detail='手机号已有学生使用。')
|
|
|
|
|
return result
|
2026-09-21 08:41:49 +08:00
|
|
|
|
2026-09-21 12:20:53 +08:00
|
|
|
@students_api.delete("/students"
|
2026-09-21 08:41:49 +08:00
|
|
|
,summary='删除学生资料'
|
2026-09-22 10:08:56 +08:00
|
|
|
,description=f'输入需要删除的学生信息,删除条件任选,但不可全为空,工资筛选能删除大于等于输入工资的所有人。\n '
|
|
|
|
|
f'时间格式:YYYY-MM-DD'
|
2026-09-21 12:20:53 +08:00
|
|
|
,response_model=list[StudentsDelete] ) # 逻辑删除/软删除
|
2026-09-21 08:41:49 +08:00
|
|
|
def delete_students( stu:StudentsDelete = Depends()
|
|
|
|
|
, db=Depends(get_db)
|
2026-09-22 10:08:56 +08:00
|
|
|
):
|
2026-09-21 12:20:53 +08:00
|
|
|
s_dict = stu.model_dump(exclude_unset=True)
|
2026-09-21 18:07:01 +08:00
|
|
|
result = delete_student_dao(s=s_dict, db=db)
|
|
|
|
|
return result
|