就业get次昂管的dao层和api接口

This commit is contained in:
2026-09-21 22:51:45 +08:00
parent e53e0fd764
commit 7216922d8d
2 changed files with 66 additions and 23 deletions
+30 -11
View File
@@ -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':'删除成功!'}
+36 -12
View File
@@ -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