jobfairRepository = $jobfairRepository;
$this->jobfairFloorplanStandRepository = $jobfairFloorplanStandRepository;
$this->jobfairCompanyRepository = $jobfairCompanyRepository;
$this->jobfairPutJobRepository = $jobfairPutJobRepository;
$this->jobfairJobRepository = $jobfairJobRepository;
$this->smsService = $smsService;
$this->emailService = $emailService;
}
public function getJobfairExhibitors($com_ids, $data)
{
$whereIn = [];
if ($com_ids) {
$ids = explode(',',$com_ids);
$whereIn['company_id'] = $ids;
}
$order_by = 'FIELD(audit, 2,1,3), updated_at desc';
$limit = array_has($data, 'limit')?$data['limit']:'';
$offset = array_has($data, 'offset')?$data['offset']:'';
$rst = $this->jobfairCompanyRepository->getCrmJobfairExhibitors([], $whereIn, $order_by, $offset, $limit);
$list = [];
if ($rst->isNotEmpty()) {
foreach ($rst->toArray() as $k => $v) {
$v['jobfair_title'] = '';
$v['eaddtime'] = strtotime($v['created_at']);
if ($v['jobfair']) {
$v['jobfair_title'] = $v['jobfair']['title'];
}
$v['companyname'] = '';
$v['company_audit'] = '';
if ($v['companys']) {
$v['companyname'] = $v['companys']['companyname'];
$v['company_audit'] = $v['companys']['audit'];
}
$list[$k] = $v;
}
}
return $list;
}
public function getJobfairExhibitorNums($data)
{
$com_ids = array_has($data, 'com_id')?$data['com_id']:0;
$whereIn = [];
if ($com_ids) {
$ids = explode(',',$com_ids);
$whereIn['company_id'] = $ids;
}
$rst = $this->jobfairCompanyRepository->getCrmExhibitorNum([], $whereIn);
if ($rst === false) {
return ['status'=>0,'msg'=>'查询失败!'];
} else {
return ['status'=>1,'msg'=>['total'=>$rst]];
}
}
//审核招聘会参会企业
public function auditExhibitors($data)
{
$id = array_has($data, 'id')?$data['id']:'';
$audit = array_has($data, 'audit')?$data['audit']:'';
$auditusername = array_has($data, 'auditusername')?$data['auditusername']:'CRM系统用户';
$note = array_has($data, 'note')?$data['note']:'';
if($audit==3){
$note = ' ';
}
$arr = array_filter(explode(',', $id));
if (empty($arr)) {
return ['status'=>0, 'msg'=>'请选择参会企业'];
}
$arr_id = [];
$JobfairCompany = JobfairCompany::whereHas('jobfair',function ($query){
$query->where('holddate_end', '>', time());
})->whereIn('id', $arr)->get();
if($JobfairCompany->isEmpty()){
return ['status'=>0, 'msg'=>'招聘会已过期'];
}
\DB::beginTransaction();
try {
foreach ($JobfairCompany as $key => $val) {
if ($audit==1) { //预订成功
if ($val->audit==2) {
$arr_id[] = $val->id;
if($val->companys->mobile && $val->companys->mobile_audit == 1){
$this->smsService->sendSms(
$val->companys->mobile,
Smser::TEMPLATE_JOBFAIR_APPLY_OK,
[
'jobfair_name'=>$val->jobfair->title,
'jobfair_time'=>date('Y-m-d H:i',$val->jobfair->holddate_start),
'jobfair_addr'=>$val->jobfair->address,
'position'=>$val->jobfairFloorPlanStands->name,
]);
}
if($val->companys->email && $val->companys->email_audit == 1){
$this->emailService->sendMail($val->companys->email, EmailService::TEMPLATE_JOBFAIR_APPLY_OK,
['title'=>'招聘会预订成功'],
[
'jobfair_name'=>$val->jobfair->title,
'jobfair_time'=>date('Y-m-d H:i',$val->jobfair->holddate_start),
'jobfair_addr'=>$val->jobfair->address,
'position'=>$val->jobfairFloorPlanStands->name,
]
);
}
}
} else { //审核未通过。
if ($val->audit==2 || $val->audit==1) {
$arr_id[] = $val->id;
if($val->companys->mobile && $val->companys->mobile_audit == 1){
$this->smsService->sendSms($val->companys->mobile, Smser::TEMPLATE_JOBFAIR_APPLY_ERROR, ['jobfair_name'=>$val->jobfair->title]);
}
if($val->companys->email && $val->companys->email_audit == 1){
$this->emailService->sendMail($val->companys->email, EmailService::TEMPLATE_JOBFAIR_APPLY_ERROR, ['title'=>'招聘会预订失败'], ['jobfair_name'=>$val->jobfair->title]);
}
}
if ($val->jobfair) {
if ($val->pay_type==1) {//场次
MembersSetmeal::where('uid', $val->company_id)->where('utype', 1)->increment('jobfair_num', $val->jobfair->jobsfair_num);
} elseif ($val->pay_type==2) { //积分
MembersPoint::where('uid', $val->company_id)->where('utype', 1)->increment('points', $val->jobfair->predetermined_point);
MembersHandsel::create([
'uid'=>$val->company_id,
'utype'=>1,
'htype_cn'=>'返还预定招聘会的积分',
'operate'=>1,
'points'=>$val->jobfair->predetermined_point
]);
}
}
}
}
if ($arr_id) {
$newReult = JobfairCompany::with(['jobfair','companys'])->whereHas('jobfair')->whereHas('companys')->whereIn('id', $arr_id)->get();
foreach ($newReult as $key => $val) {
if ($val->jobfair && $val->companys) {
$newDate[$key]['utype'] = $val->companys->utype;
$newDate[$key]['msgtype'] = 2;
$newDate[$key]['msgfromuid'] = 0;
$newDate[$key]['msgfrom'] = $auditusername;
$newDate[$key]['msgtoname'] = $val->companys->username;
$newDate[$key]['msgtouid'] = $val->companys->id;
$title = strstr($val->jobfair->title, '招聘会') ? $val->jobfair->title : $val->jobfair->title.'招聘会';
if ($audit==1) {
$newDate[$key]['message'] = '您申请的'.$title.''.$val->position.'展位已审核通过,请尽快提交招聘会职位。';
} else {
$newDate[$key]['message'] = '您申请的'.$title.''.$val->position.'展位已审核失败,请尽快查收。';
}
$newDate[$key]['created_at'] = date('Y-m-d H:i:s');
$newDate[$key]['updated_at'] = date('Y-m-d H:i:s');
}
}
if ($newDate) {
Pms::insert($newDate);
}
JobfairCompany::whereIn('id', $arr_id)->update(['audit'=>$audit,'note'=>$note]);
}else{
return ['status'=>0, 'msg'=>'不能审核审核未通过的预定信息'];
}
\DB::commit();
return ['status'=>1, 'msg'=>'审核成功'];
} catch (\Exception $e) {
\DB::rollback();
return ['status'=>0, 'msg'=>'审核失败'];
}
}
//获取招聘会职位
public function getJobs($data)
{
$map = [];
$whereIn =[];
$company_id = array_has($data, 'com_uid')?$data['com_uid']:0;
$audit = array_has($data, 'audit')?$data['audit']:0;
if ($company_id) {
$company_ids = array_filter(explode(',', $company_id));
$whereIn['company_id'] = $company_ids;
}
if ($audit) {
$map[] = ['audit', '=', $audit];
}
$map[] = ['type', '=', 1];
$limit = array_has($data, 'limit')?$data['limit']:'';
$offset = array_has($data, 'offset')?$data['offset']:'';
$order_by = 'FIELD(audit, 2,1,3), updated_at desc';
$rst = $this->jobfairJobRepository->getCrmJobs($map, $whereIn, $order_by, $offset, $limit);
if ($rst->isNotempty()) {
foreach ($rst as $k => $v) {
$rst[$k]->company_audit = $v->company->audit;
$rst[$k]->minwage = $v->wage_min;
$rst[$k]->addtime = strtotime($v->created_at);
$rst[$k]->companyname = $v->company_name;
}
}
return $rst;
}
//获取招聘会职位数量
public function getJobNums($map, $whereIn)
{
$where[] = ['type', '=', 1];
$rst = $this->jobfairJobRepository->getCrmJobCount($where, $whereIn);
return $rst;
}
//获取招聘会详细信息
public function getJobfairInfo($where)
{
$rst = $this->jobfairRepository->getOneOpenJobfair($where);
if ($rst) {
$rst->c_name = '';
if ($rst->jobfair_type == 1) {
$rst->c_name = '现场招聘会';
} elseif ($rst->jobfair_type == 2) {
$rst->c_name = '赴外招聘';
} elseif ($rst->jobfair_type == 3) {
$rst->c_name = '高校专场';
}
if ($rst->is_commonweal == 3) {
$rst->predetermined_point = '';
$rst->jobsfair_num = '';
}
}
return $rst;
}
//获取招聘会职位详细信息
public function getJobInfo($id)
{
$info = $this->jobfairJobRepository->getCrmInfo(['id'=>$id]);
if (!$info) {
return ['status'=>0, 'msg'=>'没有找到对应的职位!'];
}
$info->companyname = $info->company_name;
if ($info->company) {
$info->companyname = $info->company->companyname;
}
$info->user = $info->company;
$info->contents = $info->jobs_content;
$info->addtime = strtotime($info->created_at);
$info->refreshtime = strtotime($info->updated_at);
if ($info->wage == -1) {
$info->negotiable = 1;
}
$info->minwage = $info->wage_min;
$info->maxwage = $info->wage_max;
//职位类别
$category_cn = '';
if ($info->subclass) {
$category_cn = get_job_category($info->subclass);
} elseif ($info->category) {
$category_cn = get_job_category($info->category);
}
$info->category_cn = $category_cn;
$info->education_cn = $info->education_cn?$info->education_cn:'不限'; //学历要求
$info->experience_cn = $info->experience_cn?$info->experience_cn:'不限'; //工作经验
//年龄要求
$info->minage = 0;
$info->maxage = 0;
$age = explode('-', $info->age);
if ($age[0]) {
$info->minage = $age[0];
}
if (count($age)>1 && $age[1]) {
$info->maxage = $age[1];
}
//处理固定电话
$tels =[];
if ($info->contact) {
$info->contact->telephone = $info->contact->mobile;
$tel_arr = explode('-', $info->contact->landline_tel);
if ($tel_arr) {
if (implode('', $tel_arr)) {
foreach ($tel_arr as $k => $v) {
if ($v == '') {
unset($tel_arr[$k]);
}
}
}
$tels = $tel_arr;
}
}
$info->telarray = $tels;
return ['status'=>1, 'msg'=>$info];
}
public function auditJobs($data)
{
$ids = '';
if (array_has($data, 'id')) {
$ids = $data['id'];
}
if (!$ids) {
return ['status'=>0,'msg'=>'请选择要审核的职位'];
}
$audit = array_has($data, 'audit')?$data['audit']:2;
$remark = '';
$auditusername = array_has($data, 'auditusername')?$data['auditusername']:'CRM业务员';
$arr = array_filter(explode(',', $ids));
$result = JobfairJob::whereIn('id', $arr)->update(['audit'=>$audit]);
//审核成功后同步参展职位
if($audit == 1){
$put_jobs = JobfairPutJob::whereHas('jobfairs',function ($query){
$query->where('holddate_end','>=',time());
})->whereIn('job_id',$arr)->get();
if($put_jobs->isNotEmpty()){
foreach ($put_jobs as $val){
$jobfairJob = JobfairJob::find($val->job_id);
$val['jobs_name'] = $jobfairJob['jobs_name'];
$val['company_id'] = $jobfairJob['company_id'];
$val['company_name'] = $jobfairJob['company_name'];
$val['company_audit'] = $jobfairJob['company_audit'];
$val['stick'] = $jobfairJob['stick'];
$val['nature'] = $jobfairJob['nature'];
$val['nature_cn'] = $jobfairJob['nature_cn'];
$val['sex'] = $jobfairJob['sex'];
$val['sex_cn'] = $jobfairJob['sex_cn'];
$val['age'] = $jobfairJob['age'];
$val['amount'] = $jobfairJob['amount'];
$val['topclass'] = $jobfairJob['topclass'];
$val['category'] = $jobfairJob['category'];
$val['subclass'] = $jobfairJob['subclass'];
$val['category_cn'] = $jobfairJob['category_cn'];
$val['trade'] = $jobfairJob['trade'];
$val['trade_cn'] = $jobfairJob['trade_cn'];
$val['scale'] = $jobfairJob['scale'];
$val['scale_cn'] = $jobfairJob['scale_cn'];
$val['district'] = $jobfairJob['district'];
$val['district_cn'] = $jobfairJob['district_cn'];
$val['tag'] = $jobfairJob['tag'];
$val['tag_cn'] = $jobfairJob['tag_cn'];
$val['education'] = $jobfairJob['education'];
$val['education_cn'] = $jobfairJob['education_cn'];
$val['experience'] = $jobfairJob['experience'];
$val['experience_cn'] = $jobfairJob['experience_cn'];
$val['wage'] = $jobfairJob['wage'];
$val['wage_min'] = $jobfairJob['wage_min'];
$val['wage_max'] = $jobfairJob['wage_max'];
$val['wage_cn'] = $jobfairJob['wage_cn'];
$val['negotiable'] = $jobfairJob['negotiable'];
$val['audit'] = $jobfairJob['audit'];
$val['display'] = $jobfairJob['display'];
$val['click'] = $jobfairJob['click'];
$val['robot'] = $jobfairJob['robot'];
$val['map_x'] = $jobfairJob['map_x'];
$val['map_y'] = $jobfairJob['map_y'];
$val['map_zoom'] = $jobfairJob['map_zoom'];
$val['add_mode'] = $jobfairJob['add_mode'];
$val['is_entrust'] = $jobfairJob['is_entrust'];
$val['department'] = $jobfairJob['department'];
$val['major'] = $jobfairJob['major'];
$val['major_cn'] = $jobfairJob['major_cn'];
$val['zcid'] = $jobfairJob['zcid'];
$val['zc_cn'] = $jobfairJob['zc_cn'];
$val['zc_name'] = $jobfairJob['zc_name'];
$val->save();
}
}
$cache_jobs = JobfairPutJob::whereIn('job_id', $arr)->whereHas('jobfairs',function ($query){
$query->where([['holddate_start', '<', strtotime("+60 minute")], ['holddate_end', '>', time()]]);
})->get();
foreach ($cache_jobs as $v){
Cache::put($v->jobfair_id.'-'.$v->company_id, time(),72000);
}
}
$data=[];
foreach ($arr as $k => $v) {
$data[$k]['type'] = 11;
$data[$k]['type_id'] = $v;
$data[$k]['status'] = $audit;
$data[$k]['reason'] = $remark;
$data[$k]['audit_man'] = $auditusername;
$data[$k]['created_at'] = date('Y-m-d H:i:s', time());
$data[$k]['updated_at'] = date('Y-m-d H:i:s', time());
}
AuditReason::insert($data);
if ($audit==3) {
$stat='审核不通过';
} elseif ($audit==1) {
$stat = '审核通过';
} else {
$stat='待审核';
}
$reus=JobfairJob::whereIn('id', $arr)->get();
$ds = [];
foreach ($reus as $k => $v) {
$ds[$k]['utype'] = 1;
$ds[$k]['msgtype'] = 1;
$ds[$k]['msgfromuid'] = 0;
$ds[$k]['msgfrom'] = $auditusername;
$ds[$k]['msgtoname'] = $v->company_name ? $v->company_name : 'admin';
$ds[$k]['msgtouid'] = $v->company_id ? $v->company_id : 0;
$ds[$k]['message'] = $remark ? '招聘会职位(id:'.array_values($arr)[$k].')'.$stat.'<备注:'.$remark.'>' : '招聘会职位(id:'.array_values($arr)[$k].')'.$stat;
$ds[$k]['created_at'] = date('Y-m-d H:i:s', time());
$ds[$k]['updated_at'] = date('Y-m-d H:i:s', time());
}
Pms::insert($ds);
//TODO 邮件通知、短信通知、管理员操作日志
if ($result) {
return ['status'=>1,'msg'=>'审核成功'];
} else {
return ['status'=>0,'msg'=>'审核失败'];
}
}
}