from fastapi import APIRouter, HTTPException, Depends, Query from sqlalchemy import and_ from sqlalchemy.orm import Session from model.employment import Employment from dao import employment_dao from database import get_db from model.student import Student # from model.student import Student from scheme.employment_scheme import EmploymentOut, EmploymentCreate router=APIRouter() def stu_id(db:Session,stu_id:int): student=(db.query(Student).filter(Student.id==stu_id,Student.statu==1).first()) if not student: raise HTTPException(status_code=404,detail="该学生不存在") return student @router.get("/",response_model=list[EmploymentOut]) def set_employment( stu_id:int = None, name:str = None, min_salary: float = None, max_salary: float = None, db:Session = Depends(get_db), ): obj=employment_dao.set_employment(db ,stu_id ,name ,min_salary ,max_salary) emp_list=[] for i in obj: data={ "id":i.id, "stu_id":i.stu_id, "name":i.name, "employment_open_time":i.employment_open_time, "offer_time":i.offer_time, "salary":i.salary } emp_list.append(data) return emp_list @router.post("/",response_model=EmploymentCreate) def update_emp( stu_id:int = Query(...,description="学生ID"), data:EmploymentCreate=None, db:Session=Depends(get_db) ): student=(db.query(Student).filter(and_(Student.id==stu_id,Student.statu==1)).first()) if not student: raise HTTPException(status_code=404,detail="该学生不存在") try: obj=employment_dao.update_employment(db,stu_id,data) except ValueError as e: raise HTTPException(status_code=400,detail=str(e)) emp_dict={ "id":obj.id, "stu_id":obj.stu_id, "name":obj.name, "employment_open_time":obj.employment_open_time, "offer_time":obj.offer_time, "salary":obj.salary } return emp_dict @router.post("/create", response_model=EmploymentOut) def create_employment( stu_id: int = Query(..., description="学生ID"), data: EmploymentCreate = None, db: Session = Depends(get_db), ): student = ( db.query(Student) .filter(and_(Student.id == stu_id, Student.statu == 1)) .first() ) if not student: raise HTTPException(status_code=404, detail="该学生不存在") exist = employment_dao.get_by_stu_id(db, stu_id) if exist: raise HTTPException(status_code=400, detail="该学生已存在就业信息,请使用更新接口") open_time = data.employment_open_time offer_time = data.offer_time if open_time is not None and offer_time is not None: if offer_time < open_time: raise HTTPException(status_code=400, detail="offer下发时间必须晚于就业开放时间") obj = Employment() obj.stu_id = stu_id obj.name = data.name obj.employment_open_time = open_time obj.offer_time = offer_time obj.company_name = data.company_name obj.salary = data.salary db.add(obj) db.commit() db.refresh(obj) emp_dict = { "id": obj.id, "stu_id": obj.stu_id, "name": obj.name, "employment_open_time": obj.employment_open_time, "offer_time": obj.offer_time, "salary": obj.salary, } return emp_dict @router.delete("/") def delete_emp(emp_id:int,db:Session = Depends(get_db)): del_emp=employment_dao.delete_emp(db,emp_id) if not del_emp: raise HTTPException(status_code=404,detail="该就业信息不存在") return {"code":0,"message":"删除成功"}