Files

115 lines
3.8 KiB
Python

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":"删除成功"}