from stu_jiuye.model import Employments,Address,Company from students.model.students_model import * from class_management.model.class_management_model import * def add_employment_dao(o,db): #新增就业信息函数 try: # r = db.query(Employments).filter(Employments.id == o['id'] ).all() # o.pop('id', None) #摘除id字段,自增字段无需手动添加 o.pop('create_time', None) o.pop('update_time', None) o.pop('is_deleted', None) o1 = Employments( **o) #实例化参数 db.add(o1) #添加数据进入表 except Exception as e: #失败返回 print(f'添加失败,{e}') db.rollback() #回滚数据 return False else: db.commit() #提交事务,永久保存 db.refresh(o1) return True def add_company_dao(o,db): #添加公司信息函数 try: o.pop('id', None) #摘除id字段,自增字段无需手动添加 o.pop('create_time', None) o.pop('update_time', None) o.pop('is_deleted', None) o1 = Company( **o) #实例化参数 db.add(o1) #添加数据进入表 except Exception as e: #失败返回 print(f'添加失败,{e}') db.rollback() #回滚数据 return False else: db.commit() #提交事务,永久保存 db.refresh(o1) return True def add_address_dao(o,db): #添加地址区域信息函数 try: o.pop('id', None) #摘除id字段,自增字段无需手动添加 o.pop('create_time', None) o.pop('update_time', None) o.pop('is_deleted', None) o1 = Address( **o) #实例化参数 db.add(o1) #添加数据进入表 except Exception as e: #失败返回 print(f'添加失败,{e}') db.rollback() #回滚数据 return False else: db.commit() #提交事务,永久保存 db.refresh(o1) return True def update_emp_dao(id,update_data,db): #更新数据函数 try: rows = db.query( Employments )\ .filter( Employments.id == id )\ .update( update_data ) #更新条件匹配id except Exception as e: print(f'更新失败,{e}') #返回失败信息 db.rollback() #数据回滚 return 0 else: db.commit() #提交事务,永久保存 return rows def get_emp_dao( #获取学生就业信息函数 # stuid, sname ,class_id ,employment_company ,min_salary ,max_salary ,somewhere ,employment_open_start ,employment_open_end ,offer_recived_start ,offer_recived_end ,db # ,page # ,page_size ): #根据选择条件获取信息 q = (db.query(Employments,Company.employment_company,Address.somewhere) .outerjoin(Students, Students.id == Employments.stuid) .outerjoin(ClassInfo, ClassInfo.id == Employments.class_id) .outerjoin(Company,Employments.company_id==Company.id) .outerjoin(Address,Employments.address_id==Address.id) .filter(Employments.is_deleted == 0)) #连接公司表和地址表,筛选未被删除信息 # if stuid: # q = q.filter( Employments.id == stuid ) if sname: #根据学生姓名筛选 q = q.filter( Students.name == sname ) if class_id: q = q.filter(Employments.class_id == class_id) if somewhere: q = q.filter(Address.somewhere.like(f'%{somewhere}%')) if employment_company: #根据公司姓名筛选 q=q.filter(Company.employment_company.like(f'%{employment_company}%')) if min_salary is not None: #根据最小薪资筛选 q = q.filter(Employments.employment_salary >= min_salary) if max_salary is not None: ##根据最大薪资筛选 q = q.filter(Employments.employment_salary <= max_salary) if employment_open_start: q = q.filter(Employments.employment_open_time >= employment_open_start) if employment_open_end: q = q.filter(Employments.employment_open_time <= employment_open_end) if offer_recived_start: q = q.filter(Employments.offer_recived_time >= offer_recived_start) if offer_recived_end: q = q.filter(Employments.offer_recived_time <= offer_recived_end) r= q.all() if r: return [ {"id": i.id, '学生姓名':sname, '学生班级编号':i.class_id, "公司": employment_company or '未就业', "公司区域":somewhere or '-', "薪资":i.employment_salary or '-', "就业开放时间":i.employment_open_time.strftime('%Y-%m-%d') , "offer下发时间":i.offer_recived_time.strftime('%Y-%m-%d') # , "创建时间": i.create_time, # "更新时间": i.update_time, # "是否删除":i.is_deleted } for i,sname,employment_company,somewhere in r ] #返回信息列表 return {"code": 200, "totals": len(r), "data": r} def delete_emp_dao(id,db): #删除函数 try: rows = db.query(Employments)\ .filter(Employments.id == id,Employments.is_deleted == 0)\ .update( {'is_deleted':1} ) #软删除,is_deleted返回1 except Exception as e: #失败返回信息 print(f'删除失败,{e}') db.rollback() #数据回滚 rows = 0 #返回0 else: db.commit() #提交事务,永久保存 return rows