diff --git a/PythonProject/api/cla_api.py b/PythonProject/api/cla_api.py index b002d34..e7d4da1 100644 --- a/PythonProject/api/cla_api.py +++ b/PythonProject/api/cla_api.py @@ -5,27 +5,27 @@ from dao.cla_dao import add_class_dao,get_class_dao,update_class_dao,delete_clas claAPI = APIRouter(prefix="/class", tags=["班级管理"]) -@claAPI.post("/class", summary="新增班级") +@claAPI.post("", summary="新增班级") def add_class(data: claRequest, Session = Depends(get_db)): return add_class_dao(data, Session) -@claAPI.get("/class/list", summary="查询班级") +@claAPI.get("/list", summary="查询班级") def list_class(Session = Depends(get_db)): return get_class_dao(Session) -@claAPI.put("/class/{class_id}", summary="更新班级信息") +@claAPI.put("/{class_id}", summary="更新班级信息") def update_class(class_id: int, data: claRequest, Session = Depends(get_db)): return update_class_dao(class_id, data, Session) -@claAPI.get("/class/{class_id}", summary="逻辑删除班级信息") +@claAPI.delete("/{class_id}", summary="逻辑删除班级信息") def delete_class(class_id: int, Session = Depends(get_db)): return delete_class_dao(class_id, Session) -@claAPI.get("/class/delete/check/{class_id}", summary="硬删除前查询") +@claAPI.get("/delete/check/{class_id}", summary="硬删除前查询") def check_delete(class_id: int, Session = Depends(get_db)): return get_class_for_delete(class_id, Session) -@claAPI.delete("/class/delete/confirm/{class_id}", summary="删除班级信息") +@claAPI.delete("/delete/confirm/{class_id}", summary="删除班级信息") def confirm_delete(class_id: int, Session = Depends(get_db)): return hard_delete_class(class_id, Session) diff --git a/PythonProject/api/statistics_api.py b/PythonProject/api/statistics_api.py index f934c21..f9538fd 100644 --- a/PythonProject/api/statistics_api.py +++ b/PythonProject/api/statistics_api.py @@ -1,7 +1,7 @@ from fastapi import APIRouter,Depends -from dao.statistics_dao import select_all,select_age,select_score,select_avg_score,select_salary,select_days +from dao.statistics_dao import * from schema.student_schema import StudentResponse -from schema.statistics_schema import AllStuResponse,AvgDayResponse,AcgScoreResponse +from schema.statistics_schema import * from util.database import get_db StatisticsAPI = APIRouter() @@ -35,3 +35,9 @@ def get_scores(db=Depends(get_db)): def get_days(db=Depends(get_db)): l = select_days(db) return l + + +@StatisticsAPI.get('/emp',response_model=AllEmpResponse,tags=['统计分析模块'],summary='统计每个学生的就业时长') +def get_emp(db=Depends(get_db)): + l= select_days2(db) + return l \ No newline at end of file diff --git a/PythonProject/api/teacher_api.py b/PythonProject/api/teacher_api.py index c0ba4fb..15741d1 100644 --- a/PythonProject/api/teacher_api.py +++ b/PythonProject/api/teacher_api.py @@ -2,18 +2,21 @@ from fastapi import APIRouter,HTTPException,Depends from schema.teacher_schema import Teacher_ResponseModel, Teacher_RequestModel from dao.teacher_dao import add_teacher from util.database import get_db +from dao.teacher_dao import update_teacher +from dao.teacher_dao import delete_teacher +from dao.teacher_dao import get_teacher teacher_api=APIRouter() @teacher_api.post("/teachers",response_model=Teacher_ResponseModel,tags=['教师基本信息管理模块'],summary='新增教师接口') -def get_teacher(x1:Teacher_RequestModel,session=Depends(get_db)): +def add_teacher1(x1:Teacher_RequestModel,session=Depends(get_db)): y=add_teacher(x1.model_dump(),session) if not y: raise HTTPException(status_code=500,detail='添加异常!') return x1 @teacher_api.get("/teachers",tags=['教师基本信息管理模块'],summary='查询教师接口') -def get_teacher(teacid:int, session=Depends(get_db)): +def get_teacher1(teacid:int, session=Depends(get_db)): # r = get_teacher(id=id,session=session) # if not r: # raise HTTPException(status_code=500, detail='查询异常!') @@ -24,17 +27,17 @@ def get_teacher(teacid:int, session=Depends(get_db)): raise HTTPException(status_code=500,detail='数据库查询异常!') -@teacher_api.put("/teachers",response_model=Teacher_ResponseModel,tags=['教师基本信息管理模块'],summary='更新教师接口') -def update_teacher(id:int,teacher:Teacher_RequestModel,session=Depends(get_db)): - d=teacher.model_dump() - r=update_teacher(id=id,req=d,session=session) +@teacher_api.put("/teachers/{t_id}",tags=['教师基本信息管理模块'],summary='更新教师接口') +def update_teacher1(t_id:int,teacher:Teacher_RequestModel,session=Depends(get_db)): + d=teacher.model_dump(exclude_unset=True) + r=update_teacher(id=t_id,req=d,session=session) if not r: raise HTTPException(status_code=500, detail='更新异常!') - return {'code': 200, 'totals': r, 'detail': '更新成功'} + return {'code':200,'detail':'cg'} @teacher_api.delete("/teachers",response_model=Teacher_ResponseModel,tags=['教师基本信息管理模块'],summary='删除教师接口') -def delete_teacher(id:int,session=Depends(get_db)): +def delete_teacher1(id:int,session=Depends(get_db)): r=delete_teacher(id=id,session=session) if not r: raise HTTPException(status_code=500,detail='删除异常!') diff --git a/PythonProject/dao/statistics_dao.py b/PythonProject/dao/statistics_dao.py index 52658c8..726c60d 100644 --- a/PythonProject/dao/statistics_dao.py +++ b/PythonProject/dao/statistics_dao.py @@ -91,3 +91,21 @@ def select_days(db): except Exception: raise HTTPException(status_code=500, detail="查询异常") +#统计每个学⽣的就业时⻓ +def select_days2(db): + try: + l2 =db.query( + Employment_info.stu_id + ,Employment_info.employment_opening_date + ,Employment_info.offer_issuance_date + ,func.datediff( + Employment_info.offer_issuance_date + ,Employment_info.employment_opening_date + ) + .label("employment_duration_day") + ).filter( + Employment_info.delete_status == 0 + ).all() + return l2 + except Exception: + raise HTTPException(status_code=500, detail="查询异常") \ No newline at end of file diff --git a/PythonProject/dao/teacher_dao.py b/PythonProject/dao/teacher_dao.py index cfb3eed..16f0057 100644 --- a/PythonProject/dao/teacher_dao.py +++ b/PythonProject/dao/teacher_dao.py @@ -6,11 +6,8 @@ def add_teacher(teacher,session): try: print(teacher) x=Teacher_Model(**teacher) - print(1) session.add(x) - print(2) session.commit() - print(3) return teacher except: session.rollback() @@ -25,13 +22,16 @@ def get_teacher(id,session): else: raise HTTPException(status_code=404,detail='该老师不存在!') -def update_teacher(teac_id:int,req:Teacher_RequestModel,session): +def update_teacher(id:int,req,session): try: - session.query(Teacher_Model).filter(Teacher_Model.teac_id==id)\ - .filter(Teacher_Model.delete_status==0).update(req.model_dump(exclude_unset=True)) - session.commit() + r=session.query(Teacher_Model).filter(Teacher_Model.teac_id==id) \ + .filter(Teacher_Model.delete_status==0).update(req) except: - raise HTTPException(status_code=500,detail="更新异常!") + session.rollback() + return False + else: + session.commit() + return r def delete_teacher(id:int,session): try: diff --git a/PythonProject/schema/statistics_schema.py b/PythonProject/schema/statistics_schema.py index ab8e87b..2b76ae4 100644 --- a/PythonProject/schema/statistics_schema.py +++ b/PythonProject/schema/statistics_schema.py @@ -1,4 +1,6 @@ -from pydantic import BaseModel +from pydantic import BaseModel,Field +from datetime import date +from typing import List, Optional class AllStuResponse(BaseModel): class_id: int @@ -13,3 +15,17 @@ class AvgDayResponse(BaseModel): class_id: int avg_days: str | None +class EmpRequest(BaseModel): + stu_id: int + +class EmpItem(BaseModel): + stu_id: int + employment_opening_date:date | None + offer_issuance_date:date | None + employment_duration_day: int | None + +class AllEmpResponse(BaseModel): + code: int + msg: str + data: List[EmpItem] +