115 lines
3.8 KiB
Python
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":"删除成功"}
|
|
|
|
|