87 lines
2.8 KiB
Python
87 lines
2.8 KiB
Python
from sqlalchemy import and_
|
|
from sqlalchemy.orm import Session
|
|
|
|
from scheme import employment_scheme
|
|
from scheme.employment_scheme import EmploymentCreate
|
|
from model.employment import Employment
|
|
from model.student import Student
|
|
|
|
def update_employment(db:Session,stu_id:int,data:employment_scheme.EmploymentCreate):
|
|
obj=get_by_stu_id(db,stu_id)
|
|
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 ValueError("offer下发时间必须晚于及就业开放时间")
|
|
emp_dict={
|
|
"stu_id":stu_id,
|
|
"name":data.name,
|
|
"employment_open_time":open_time,
|
|
"offer_time":offer_time,
|
|
"company_name":data.company_name,
|
|
"salary":data.salary
|
|
}
|
|
if obj:
|
|
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
|
|
else:
|
|
obj = Employment()
|
|
obj.stu_id = stu_id
|
|
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)
|
|
return obj
|
|
def get_employment(db:Session,emp_id: int):
|
|
employment= (db.query(Employment).filter(Employment.id == emp_id, Employment.is_deleted == False).first())
|
|
return employment
|
|
def get_by_stu_id(db:Session,stu_id:int):
|
|
employment=(db.query(Employment).filter(Employment.stu_id == stu_id, Employment.is_deleted == 0).first())
|
|
return employment
|
|
def set_employment(db:Session,
|
|
stu_id: int = None,
|
|
name: str = None,
|
|
min_salary: float = None,
|
|
max_salary: float = None):
|
|
s=db.query(Employment).filter(Employment.is_deleted == False)
|
|
if stu_id is not None:
|
|
s = s.filter(Employment.stu_id == stu_id)
|
|
if name is not None:
|
|
s = s.filter(Employment.name.like(f'%{name}%'))
|
|
if min_salary is not None:
|
|
s = s.filter(Employment.salary >= min_salary)
|
|
if max_salary is not None:
|
|
s = s.filter(Employment.salary <= max_salary)
|
|
return s
|
|
def create_employment(db: Session, stu_id: int, data: EmploymentCreate):
|
|
obj = Employment()
|
|
obj.stu_id = stu_id
|
|
obj.name = data.name
|
|
obj.employment_open_time = data.employment_open_time
|
|
obj.offer_time = data.offer_time
|
|
obj.company_name = data.company_name
|
|
obj.salary = data.salary
|
|
db.add(obj)
|
|
db.commit()
|
|
return obj
|
|
def delete_emp(db:Session,emp_id:int):
|
|
obj=get_employment(db,emp_id)
|
|
if not obj:
|
|
return False
|
|
obj.is_deleted=1
|
|
db.commit()
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
|