from fastapi import APIRouter,Query,Depends,HTTPException from util.database import get_db from dao import employment_dao 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 from typing import Optional emp_api = APIRouter(tags=['学生就业管理系统']) @emp_api.get('/employment/students/{stu_id}',response_model=EmploymentResponse,summary='获取学生就业信息') def get_emp_info1(stu_id: Optional[int]=Query(None,description='学生编号') ,company_name: Optional[str]=Query(None,description='公司名称') ,min_salary: Optional[float]=Query(None,description='最低工资') ,max_salary: Optional[float]=Query(None,description='最高工资') ,db=Depends(get_db)): if stu_id or company_name or min_salary or max_salary: 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: Optional[int],db=Depends(get_db)): if class_id: 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}',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(stu_id:int,emp:EmploymentRequest,db=Depends(get_db)): d = emp.model_dump(exclude_unset=True) r = update_emp_dao(stu_id,d,db) if not r: raise HTTPException(status_code=500,detail='更新失败!') return {'code':200,'totals':r,'detail':'更新成功!'} @emp_api.delete('/employment/{stu_id}',summary='删除学生就业信息') def delete_emp_info(stu_id:int,db=Depends(get_db)): rows = delete_emp_dao(stu_id, db) if not rows: raise HTTPException(status_code=500, detail='没有删除!') return {'code':200,'detail':'删除成功!'}