2026-09-21 15:07:50 +08:00
|
|
|
|
2026-09-22 12:28:06 +08:00
|
|
|
from stu_jiuye.model import Employments,Address,Company
|
2026-09-20 21:20:12 +08:00
|
|
|
|
|
|
|
|
|
2026-09-21 17:05:10 +08:00
|
|
|
def add_employment_dao(o,db): #新增就业信息函数
|
2026-09-20 21:20:12 +08:00
|
|
|
try:
|
2026-09-21 17:05:10 +08:00
|
|
|
# r = db.query(Employments).filter(Employments.id == o['id'] ).all() #
|
|
|
|
|
o.pop('id', None) #摘除id字段,自增字段无需手动添加
|
2026-09-22 10:48:49 +08:00
|
|
|
o.pop('create_time', None)
|
|
|
|
|
o.pop('update_time', None)
|
|
|
|
|
o.pop('is_deleted', None)
|
2026-09-21 17:05:10 +08:00
|
|
|
o1 = Employments( **o) #实例化参数
|
|
|
|
|
db.add(o1) #添加数据进入表
|
2026-09-20 21:20:12 +08:00
|
|
|
|
2026-09-21 17:05:10 +08:00
|
|
|
except Exception as e: #失败返回
|
2026-09-20 21:20:12 +08:00
|
|
|
print(f'添加失败,{e}')
|
2026-09-21 17:05:10 +08:00
|
|
|
db.rollback() #回滚数据
|
2026-09-20 21:20:12 +08:00
|
|
|
return False
|
|
|
|
|
else:
|
2026-09-21 17:05:10 +08:00
|
|
|
db.commit() #提交事务,永久保存
|
2026-09-20 21:20:12 +08:00
|
|
|
return True
|
|
|
|
|
|
2026-09-21 17:05:10 +08:00
|
|
|
def add_company_dao(o,db): #添加公司信息函数
|
2026-09-21 11:44:09 +08:00
|
|
|
try:
|
2026-09-21 17:05:10 +08:00
|
|
|
o.pop('id', None) #摘除id字段,自增字段无需手动添加
|
2026-09-22 11:42:27 +08:00
|
|
|
o.pop('create_time', None)
|
|
|
|
|
o.pop('update_time', None)
|
|
|
|
|
o.pop('is_deleted', None)
|
2026-09-21 17:05:10 +08:00
|
|
|
o1 = Company( **o) #实例化参数
|
|
|
|
|
db.add(o1) #添加数据进入表
|
|
|
|
|
except Exception as e: #失败返回
|
2026-09-21 11:44:09 +08:00
|
|
|
print(f'添加失败,{e}')
|
2026-09-21 17:05:10 +08:00
|
|
|
db.rollback() #回滚数据
|
2026-09-21 11:44:09 +08:00
|
|
|
return False
|
|
|
|
|
else:
|
2026-09-21 17:05:10 +08:00
|
|
|
db.commit() #提交事务,永久保存
|
2026-09-21 11:44:09 +08:00
|
|
|
return True
|
2026-09-21 17:05:10 +08:00
|
|
|
def add_address_dao(o,db): #添加地址区域信息函数
|
2026-09-21 11:44:09 +08:00
|
|
|
try:
|
2026-09-21 17:05:10 +08:00
|
|
|
o.pop('id', None) #摘除id字段,自增字段无需手动添加
|
2026-09-22 11:42:27 +08:00
|
|
|
o.pop('create_time', None)
|
|
|
|
|
o.pop('update_time', None)
|
|
|
|
|
o.pop('is_deleted', None)
|
2026-09-21 17:05:10 +08:00
|
|
|
o1 = Address( **o) #实例化参数
|
2026-09-21 21:33:17 +08:00
|
|
|
db.add(o1) #添加数据进入表
|
2026-09-21 17:05:10 +08:00
|
|
|
except Exception as e: #失败返回
|
2026-09-21 11:44:09 +08:00
|
|
|
print(f'添加失败,{e}')
|
2026-09-21 17:05:10 +08:00
|
|
|
db.rollback() #回滚数据
|
2026-09-21 11:44:09 +08:00
|
|
|
return False
|
|
|
|
|
else:
|
2026-09-21 17:05:10 +08:00
|
|
|
db.commit() #提交事务,永久保存
|
2026-09-21 11:44:09 +08:00
|
|
|
return True
|
2026-09-20 21:20:12 +08:00
|
|
|
|
|
|
|
|
|
2026-09-21 17:05:10 +08:00
|
|
|
def update_emp_dao(id,update_data,db): #更新数据函数
|
|
|
|
|
try:
|
|
|
|
|
rows = db.query( Employments )\
|
|
|
|
|
.filter( Employments.id == id )\
|
|
|
|
|
.update( update_data ) #更新条件匹配id
|
2026-09-21 15:07:50 +08:00
|
|
|
except Exception as e:
|
2026-09-21 17:05:10 +08:00
|
|
|
print(f'更新失败,{e}') #返回失败信息
|
|
|
|
|
db.rollback() #数据回滚
|
2026-09-22 11:42:27 +08:00
|
|
|
return 0
|
2026-09-20 21:20:12 +08:00
|
|
|
else:
|
2026-09-21 17:05:10 +08:00
|
|
|
db.commit() #提交事务,永久保存
|
2026-09-20 21:20:12 +08:00
|
|
|
return rows
|
|
|
|
|
|
2026-09-21 17:05:10 +08:00
|
|
|
def get_emp_dao( #获取学生就业信息函数
|
2026-09-20 21:20:12 +08:00
|
|
|
# stuid,
|
2026-09-21 21:33:17 +08:00
|
|
|
sname
|
|
|
|
|
,class_num
|
|
|
|
|
,employment_company
|
2026-09-21 17:24:14 +08:00
|
|
|
,min_salary
|
|
|
|
|
,max_salary
|
|
|
|
|
,somewhere
|
2026-09-22 15:19:43 +08:00
|
|
|
,employment_open_start
|
|
|
|
|
,employment_open_end
|
|
|
|
|
,offer_recived_start
|
|
|
|
|
,offer_recived_end
|
2026-09-21 17:24:14 +08:00
|
|
|
,db
|
|
|
|
|
|
2026-09-20 21:20:12 +08:00
|
|
|
# ,page
|
|
|
|
|
# ,page_size
|
2026-09-21 17:05:10 +08:00
|
|
|
): #根据选择条件获取信息
|
2026-09-21 21:33:17 +08:00
|
|
|
q = db.query(Employments,Company.employment_company,Address.somewhere)\
|
2026-09-22 11:42:27 +08:00
|
|
|
.outerjoin(Company,Employments.company_id==Company.id)\
|
|
|
|
|
.outerjoin(Address,Company.address_id==Address.id)\
|
2026-09-21 17:05:10 +08:00
|
|
|
.filter(Employments.is_deleted == 0) #连接公司表和地址表,筛选未被删除信息
|
2026-09-20 21:20:12 +08:00
|
|
|
# if stuid:
|
|
|
|
|
# q = q.filter( Employments.id == stuid )
|
2026-09-21 11:44:09 +08:00
|
|
|
|
2026-09-21 21:33:17 +08:00
|
|
|
if sname: #根据学生姓名筛选
|
|
|
|
|
q = q.filter( Employments.sname == sname )
|
|
|
|
|
if class_num:
|
|
|
|
|
q = q.filter(Employments.class_num == class_num)
|
2026-09-21 17:24:14 +08:00
|
|
|
if somewhere:
|
|
|
|
|
q = q.filter(Address.somewhere.like(f'%{somewhere}%'))
|
2026-09-21 21:33:17 +08:00
|
|
|
if employment_company: #根据公司姓名筛选
|
|
|
|
|
q=q.filter(Company.employment_company.like(f'%{employment_company}%'))
|
2026-09-20 21:20:12 +08:00
|
|
|
# r = q.offset( (page-1)*page_size ).limit( page_size ).all()
|
2026-09-21 17:05:10 +08:00
|
|
|
if min_salary is not None: #根据最小薪资筛选
|
2026-09-21 21:33:17 +08:00
|
|
|
q = q.filter(Employments.employment_salary >= min_salary)
|
2026-09-21 17:05:10 +08:00
|
|
|
if max_salary is not None: ##根据最大薪资筛选
|
2026-09-21 21:33:17 +08:00
|
|
|
q = q.filter(Employments.employment_salary <= max_salary)
|
2026-09-22 15:19:43 +08:00
|
|
|
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)
|
|
|
|
|
|
2026-09-20 21:20:12 +08:00
|
|
|
r= q.all()
|
|
|
|
|
if r:
|
|
|
|
|
return [ {"id": i.id,
|
2026-09-21 21:33:17 +08:00
|
|
|
'学生姓名':i.sname,
|
|
|
|
|
'学生班级编号':i.class_num,
|
2026-09-22 11:42:27 +08:00
|
|
|
"公司": employment_company or '未就业',
|
|
|
|
|
"公司区域":somewhere or '-',
|
2026-09-21 15:07:50 +08:00
|
|
|
# "company_id": i.company_id,
|
2026-09-22 11:42:27 +08:00
|
|
|
"薪资":i.employment_salary or '-',
|
2026-09-21 15:07:50 +08:00
|
|
|
# "address_id": i.address_id,
|
2026-09-22 15:19:43 +08:00
|
|
|
"就业开放时间":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,employment_company,somewhere in r ] #返回信息列表
|
2026-09-20 21:20:12 +08:00
|
|
|
|
|
|
|
|
|
2026-09-21 17:05:10 +08:00
|
|
|
def delete_emp_dao(id,db): #删除函数
|
|
|
|
|
try:
|
|
|
|
|
rows = db.query(Employments)\
|
2026-09-22 11:42:27 +08:00
|
|
|
.filter(Employments.id == id,Employments.is_deleted == 0)\
|
2026-09-21 17:05:10 +08:00
|
|
|
.update( {'is_deleted':1} ) #软删除,is_deleted返回1
|
2026-09-21 12:22:26 +08:00
|
|
|
|
2026-09-21 17:05:10 +08:00
|
|
|
except Exception as e: #失败返回信息
|
2026-09-20 21:20:12 +08:00
|
|
|
print(f'删除失败,{e}')
|
2026-09-21 17:05:10 +08:00
|
|
|
db.rollback() #数据回滚
|
|
|
|
|
rows = 0 #返回0
|
2026-09-20 21:20:12 +08:00
|
|
|
else:
|
2026-09-21 17:05:10 +08:00
|
|
|
db.commit() #提交事务,永久保存
|
2026-09-20 21:20:12 +08:00
|
|
|
return rows
|