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'=>'审核失败']; } } }