diff --git a/PythonProject/api/employment_api.py b/PythonProject/api/employment_api.py index 58a14d3..3e4a380 100644 --- a/PythonProject/api/employment_api.py +++ b/PythonProject/api/employment_api.py @@ -1,25 +1,44 @@ from fastapi import APIRouter,Depends,HTTPException - from dao import employment_dao -from dao.employment_dao import get_employment_dao -from schema.employment_schema import EmploymentResponse -from model.all_model import ClassManagement,Employment_info +from dao.employment_dao import get_emp_dao, add_emp_dao, check_stu_dao, update_emp_dao, delete_emp_dao +from schema.employment_schema import EmploymentRequest,EmploymentResponse from util.database import get_db emp_api = APIRouter(tags=['学生就业管理系统']) @emp_api.get('/employment/students/{stu_id}',response_model=EmploymentResponse,summary='获取学生就业信息') def get_emp_info1(stu_id: int,db=Depends(get_db)): if stu_id: - return employment_dao.get_employment_dao(stu_id=stu_id,db=db) + return [employment_dao.get_emp_dao(stu_id=stu_id,db=db)] raise HTTPException(status_code=404, detail='该学生就业信息不存在') @emp_api.get('/employment/class/{class_id}',response_model=EmploymentResponse,summary='获取班级学生就业信息') def get_emp_info2(class_id: int,db=Depends(get_db)): if class_id: - return employment_dao.get_employment_dao(class_id=class_id,db=db) + return employment_dao.get_emp_dao(class_id=class_id,db=db) raise HTTPException(status_code=404, detail='该班级就业信息不存在') -# @emp_api.post('/employment/students/{stu_id}') -# def create_emp_info(stu_id: int,db=Depends(get_db),response_model=EmploymentResponse): -# if stu_id: -# -# return employment_dao. +@emp_api.post('/employment/students/{stu_id}',response_model=EmploymentResponse,summary='新增学生就业信息') +def create_emp_info(stu_id:int,emp:EmploymentRequest,db=Depends(get_db)): + if not check_stu_dao(stu_id,db): + raise HTTPException(status_code=404, detail='该学生不存在,无法添加就业信息') + emp.stu_id = stu_id + exist = db.query(employment_dao.Employment_info).filter(employment_dao.Employment_info.stu_id == stu_id,employment_dao.Employment_info.delete_status == 0).first() + if exist: + raise HTTPException(status_code=409,detail='该学生已有就业信息,请勿重复增加!') + d=emp.model_dump(exclude_unset=False) + r=add_emp_dao(d,db) + if not r: + raise HTTPException(status_code=500,detail='服务器繁忙,请稍后添加!') + return r + +@emp_api.put('/employment/students/{stu_id}',response_model=EmploymentResponse,summary='更新学生就业信息') +def update_emp_info(emp_id:int,emp:EmploymentRequest,db=Depends(get_db)): + d = emp.model_dump(exclude_unset=True) + r = update_emp_dao(emp_id,d,db) + if not r: + raise HTTPException(status_code=500,detail='更新失败!') + return {'code':200,'totals':r,'detail':'更新成功!'} + +@emp_api.delete('/employment/{emp_id}',summary='删除学生就业信息') +def delete_emp_info(emp_id:int,db=Depends(get_db)): + delete_emp_dao(emp_id,db) + return {'code':200,'detail':'删除成功!'} diff --git a/PythonProject/dao/employment_dao.py b/PythonProject/dao/employment_dao.py index e7a27c0..b3ef67c 100644 --- a/PythonProject/dao/employment_dao.py +++ b/PythonProject/dao/employment_dao.py @@ -1,9 +1,8 @@ from fastapi import HTTPException from model.all_model import Employment_info, ClassManagement, Student_Model -from util.database import get_db -from schema.employment_schema import EmploymentRequest -def get_employment_dao(stu_id,class_id,db): + +def get_emp_dao(stu_id,class_id,db): try: q = db.query(Employment_info).\ join(Student_Model,Employment_info.stu_id == Student_Model.stu_id).\ @@ -19,8 +18,8 @@ def get_employment_dao(stu_id,class_id,db): if r: return [{'emp_id':i.emp_id ,'stu_id': i.stu_id - ,'stu_name':i.stu_name - ,'class_id':i.class_id + ,'stu_name':i.Student_Model.stu_name + ,'class_id':i.Student_Model.class_id ,'email':i.email ,'employment_opening_date':i.employment_opening_date ,'offer_issuance_date':i.offer_issuance_date @@ -32,14 +31,39 @@ def get_employment_dao(stu_id,class_id,db): except: raise HTTPException(status_code=404,detail='信息不存在!') -def add_employment_dao(e:EmploymentRequest,db): +def add_emp_dao(o,db): try: - d = e.model_dump() - e1 = Employment_info(**d) + e1 = Employment_info(**o) db.add(e1) - except: - db.rollback() - raise HTTPException(status_code=404, detail='信息不存在!') - else: db.commit() return e1 + except Exception as e: + db.rollback() + raise HTTPException(status_code=500, detail=f'新增就业信息失败: {e}') + +def check_stu_dao(stu_id,db): + stu = db.query(Student_Model).filter(Student_Model.stu_id == stu_id,Student_Model.delete_status == 0).first() + return stu + +def check_emp_dao(stu_id=): + + +def update_emp_dao(emp_id,o,db): + try: + rows = db.query(Employment_info).filter(Employment_info.emp_id == emp_id,Employment_info.delete_status == 0).first() + db.commit() + return rows + except: + db.rollback() + raise HTTPException(status_code=404,detail='该就业记录已存在') + + +def delete_emp_dao(emp_id,db): + try: + rows = db.query(Employment_info).filter(Employment_info.emp_id == emp_id,Employment_info.delete_status == 0).delete() + db.commit() + except: + db.rollback() + rows = 0 + finally: + return rows