personalJobsApplyRepository = $personalJobsApplyRepository; $this->taskService = $taskService; $this->jobsRepository = $jobsRepository; $this->companyDownResumeRepository = $companyDownResumeRepository; $this->resumeRepository = $resumeRepository; $this->companyRepository = $companyRepository; $this->companyInterviewRepository = $companyInterviewRepository; $this->memberSetmealRepository = $memberSetmealRepository; $this->resumeEducationRepository = $resumeEducationRepository; $this->resumeWorkRepository = $resumeWorkRepository; $this->resumeTrainRepository = $resumeTrainRepository; $this->memberRepository = $memberRepository; $this->jobsContactRepository = $jobsContactRepository; $this->memberPointRepository = $memberPointRepository; $this->companyService = $companyService; $this->jobsfairPutJobService = $jobsfairPutJobService; $this->jobfairPutJobRepository = $jobfairPutJobRepository; $this->smsRepository = $smsRepository; $this->smsRuleRepository = $smsRuleRepository; $this->smsService = $smsService; $this->ResumeLanguageRepository = $ResumeLanguageRepository; $this->ResumeCredentRepository = $ResumeCredentRepository; $this->memberLogRepository=$memberLogRepository; $this->serviceService=$serviceService; $this->emailService=$emailService; $this->wechatService=$wechatService; } public function resumeApply($request, $user) { $jobs_id = isset($request['jobs_id']) ? $request['jobs_id'] : ''; $stop = isset($request['stop']) ? $request['stop'] : 0; $state = isset($request['state']) ? $request['state'] : 0; $is_reply = isset($request['is_reply']) ? $request['is_reply'] : 0; $is_apply = isset($request['is_apply']) ? $request['is_apply'] : 0; $settr = isset($request['settr']) ? $request['settr'] : 0; $where['company_id'] = $user->id; if ($is_reply == 0) { $where['is_reply'] = 0; } else { $where[] = ['is_reply', '>', 0]; } if ($jobs_id) { $where['jobs_id'] = $jobs_id; } if ($is_apply) { $where['is_apply'] = $is_apply; } if ($settr) { $where[] = ['created_at', '>=', date('Y-m-d H:i:s', strtotime("-{$settr} day"))]; } $condition['company_id'] = $user->id; if (!$stop) { $condition[] = ['valid', '=', 1]; $condition[] = ['display', '=', 1]; } if (!$stop && config('aix.companyset.comset.show_set.jobs_display') == 1) { $condition = ['audit' => 1]; } $jobs = $this->jobsRepository->applyJobs($condition, $user->id); $jobs_list = array_column($jobs, 'jobs_name', 'id'); $param_array = array('jobs_id', 'stop', 'state', 'is_reply', 'settr'); $params = array(); if ($request) { foreach ($request as $k => $v) { if (in_array($k, $param_array)) { $params[$k] = $v; } } } if ($state) { $where['is_reply'] = $state; } $page = 10; $apply_list = $this->personalJobsApplyRepository->getResume($where, $page); //是否回复(1:企业未查看,2:待反馈,3:合适,4:不合适,5:待定,6:未接通) $state_arr = ['1' => '合适', '2' => '不合适', '3' => '待定', '4' => '未接通']; $date1 = time(); $date2 = $date1 - 3600 * 24 * 14; //近两周收到的简历 $count1 = $this->personalJobsApplyRepository->twoWeeksTotal($user->id); //近两周处理收到的简历 $count2 = $this->personalJobsApplyRepository->twoWeeksReplyTotal($user->id); //处理率 $count = $count1 ? (round($count2 / $count1, 2) * 100) : 0; $count = $count2 ? $count : 0; $hasget=0; if ($params) { $hasget = 1; } $this->serviceService->freeSetmealIsOver($user); $res = [ 'is_reply' => $is_reply, 'is_apply' => $is_apply, 'stop' => $stop, 'state' => $state, 'result' => $apply_list, 'state_arr' => $state_arr, 'jobs_id' => $jobs_id, 'jobs_list' => $jobs_list, 'date' => date('Y/m/d', $date2), 'params' => $params, 'count1' => $count1, 'count2' => $count2, 'count' => $count, 'hasget' => $hasget, 'current_url' => \Illuminate\Support\Facades\Request::getRequestUri(), ]; return $res; } public function resumeApplyMobile($request, $user) { $jobs_id = isset($request['jobs_id']) ? $request['jobs_id'] : ''; $stop = isset($request['stop']) ? $request['stop'] : 0; $state = isset($request['state']) ? $request['state'] : 0; $is_reply = isset($request['is_reply']) ? $request['is_reply'] : 0; $is_apply = isset($request['is_apply']) ? $request['is_apply'] : 0; $settr = isset($request['settr']) ? $request['settr'] : 0; $where['company_id'] = $user->id; if ($jobs_id) { $where['jobs_id'] = $jobs_id; } if ($is_apply) { $where['is_apply'] = $is_apply; } if ($settr) { $where[] = ['created_at', '>=', date('Y-m-d H:i:s', strtotime("-{$settr} day"))]; } $condition['company_id'] = $user->id; if (!$stop) { $condition[] = ['valid', '=', 1]; $condition[] = ['display', '=', 1]; } if (!$stop && config('aix.companyset.comset.show_set.jobs_display') == 1) { $condition = ['audit' => 1]; } $jobs = $this->jobsRepository->applyJobs($condition, $user->id); $jobs_list = array_column($jobs, 'jobs_name', 'id'); $param_array = array('jobs_id', 'stop', 'state', 'is_reply', 'settr'); $params = array(); if ($request) { foreach ($request as $k => $v) { if (in_array($k, $param_array)) { $params[$k] = $v; } } } if ($state) { $where['is_reply'] = $state; } $page = 10; $apply_list = $this->personalJobsApplyRepository->getResume($where, $page); //是否回复(1:企业未查看,2:待反馈,3:合适,4:不合适,5:待定,6:未接通) $state_arr = ['1' => '合适', '2' => '不合适', '3' => '待定', '4' => '未接通']; $date1 = time(); $date2 = $date1 - 3600 * 24 * 14; //近两周收到的简历 $count1 = $this->personalJobsApplyRepository->twoWeeksTotal($user->id); //近两周处理收到的简历 $count2 = $this->personalJobsApplyRepository->twoWeeksReplyTotal($user->id); //处理率 $count = $count1 ? (round($count2 / $count1, 2) * 100) : 0; $count = $count2 ? $count : 0; $hasget=0; if ($params) { $hasget = 1; } $res = [ 'is_reply' => $is_reply, 'is_apply' => $is_apply, 'stop' => $stop, 'state' => $state, 'result' => $apply_list, 'state_arr' => $state_arr, 'jobs_id' => $jobs_id, 'jobs_list' => $jobs_list, 'date' => date('Y/m/d', $date2), 'params' => $params, 'count1' => $count1, 'count2' => $count2, 'count' => $count, 'hasget' => $hasget, 'current_url' => \Illuminate\Support\Facades\Request::getRequestUri(), ]; return $res; } public function labelApply($id, $state, $user) { if (!$id) { return response()->json(['status' => 0, 'msg' => '请选择简历!']); } $old_info = $this->personalJobsApplyRepository->find($id); DB::beginTransaction();//检查数据库事务 try { $r = ['code'=>0]; $data = [ 'is_reply' => $state, 'personal_look' => 2, 'reply_time' => time() ]; if (false == $this->personalJobsApplyRepository->companyLabelResume($id, $data)) { throw new \Exception('标记失败!'); } if ($old_info && ((time() - strtotime($old_info->created_at)) <= 86400 * 3)) { $r = $this->taskService->doTask(28, $user->id, $user->utype); } //添加日志 DB::commit(); $this->memberLogRepository->createLog($user,1029,[$id,$state]); return response()->json(['status' => 1, 'msg' => '标记成功', 'data' => $r]); } catch (\Exception $e) { DB::rollback(); return response()->json(['status' => 0, 'msg' => $e->getMessage()]); } } /** * 删除简历申请 * @param $request * @return \Illuminate\Http\JsonResponse * @param $user */ public function delJobsApply($request,Company $user) { $id = isset($request['id']) ? $request['id'] : 0; if (!$id) { return response()->json(['status' => 0, 'msg' => '参数错误!']); } $ids = is_array($id) ? $id : explode(',', $id); if (!$this->personalJobsApplyRepository->delJobsApply($ids,$user->id)) { return response()->json(['status' => 0, 'msg' => '删除失败!']); } return response()->json(['status' => 1, 'msg' => '删除成功!']); } /** * 返回面试邀请模态框 * @param $request * @return \Illuminate\Http\JsonResponse * @throws \Throwable */ public function getApply($request, $user) { $mySetmeal = $this->memberSetmealRepository->findWhere(['uid'=>$user->id]); if (config('aix.companyset.audit.checkset.login_com_audit_certificate') == 1) { if ($user->audit != 1) { return response()->json(['status' => 0, 'msg' => "请上传企业营业执照或审核通过后,再进行其他操作"]); } } //正确的套餐,已经过期,不免费,过期时间不为0 if ($mySetmeal[0]->setmeal_id > 0 && $mySetmeal[0]->expire ==1 && $mySetmeal[0]->is_free == 0 && $mySetmeal[0]->endtime!=0) { return response()->json(['status' => 0, 'msg' => "会员套餐已到期,请续费"]); } //20200217 zmw 去掉单位性质 和产业类别 //if (!$user->nature || !$user->scale || !$user->organization_code || !$user->unit_character || !$user->industry || !$user->economy || !$user->district || !$user->trade || !$user->contents) { if (!$user->nature || !$user->scale || !$user->organization_code || !$user->district || !$user->trade || !$user->contents) { return response()->json(['status' => 0, 'msg' => "请完善企业基本信息后,再进行其他操作"]); } $is_apply = 2; $resume_id = isset($request['resume_id'])?$request['resume_id']:0; if (!$resume_id) { return response()->json(['status' => 0, 'msg' => "请先下载简历!"]); } $jobs_id = isset($request['jobs_id'])?$request['jobs_id']:0; if ($jobs_id) { $contatin[] = ['jobs_id', '=', $jobs_id]; } $contatin = [ ['resume_id', '=', $resume_id], ['company_id', '=', $user->id], ]; $apply = $this->personalJobsApplyRepository->getOne($contatin); if ($apply) { $is_apply = 1; } if (config('aix.personal_set.per_set.contact_set.show_resume_contact') == 2) { $downData = [ 'resume_id' => $resume_id, 'company_uid' => $user->id, ]; if (!$apply) { $apply = $this->companyDownResumeRepository->getDownResume($downData); $is_apply = 2; } if (!$apply) { return response()->json(['status' => 0, 'msg' => "请先下载简历!"]); } } elseif (!$apply) { $apply = $this->resumeRepository->find($resume_id, ['id as resume_id', 'uid as resume_uid', 'fullname as resume_name']); if ($apply) { $is_apply = 2; } } if ($apply) { $apply = $apply->toArray(); } $companyInfo = $this->companyRepository->findWhere(['id' => $user->id], ['district', 'contact', 'mobile', 'landline_tel', 'address'])->toArray(); $apply = array_merge($apply, $companyInfo[0]); $apply['fullname'] = $this->resumeRepository->find($resume_id, ['fullname']); $jobs_map['company_id'] = $user->id; if (config('aix.companyset.comset.show_set.jobs_display') == 1) { $jobs_map['audit'] = 1; } $jobs_map['valid'] = 1; $jobs = $this->jobsRepository->jobsList($jobs_map); if ($jobs) { $jobs = $jobs->toArray(); $jobs_idarr = array_column($jobs, 'id'); if (!isset($apply['jobs_id']) || !in_array($apply['jobs_id'], $jobs_idarr)) { $is_apply = 2; } foreach ($jobs as $key => $val) { $jobslist[$val['id']] = $val; } } else { $jobslist = []; $is_apply = 2; } if (isset($jobslist)) { $temp = current($jobslist); $default_jobs['jobs_id'] = $temp['id']; $default_jobs['jobs_name'] = $temp['jobs_name']; } else { return response()->json(['status' => 0, 'msg' => '您还没有发布职位或没有审核通过的职位']); } $data = [ 'jobs' => $jobslist, 'default_jobs' => $default_jobs, 'is_apply' => $is_apply, 'apply' => $apply, ]; return response()->json(['status' => 1, 'msg' => '获取数据成功!', 'data' => view('app.company.ajax.ajax_interview', $data)->render()]); } public function saveApply($request,$user) { $data['jobs_id'] = $request->jobs_id ? $request->jobs_id : 0; $data['resume_id'] = $request->resume_id ? $request->resume_id : 0; $data['personal_jobs_id'] = $request->personal_jobs_id ? $request->personal_jobs_id : 0; //重复投递的功能,带上投递ID $date = $request->date ? $request->date : ''; $type = $request->type; //验证这个简历我是否下载过和是否收到过 $this->isCanInterview($data['resume_id'],$user->id); //职位状态是未发布中的。 $jobs_map['company_id'] = auth('web-company')->user()->id; if (config('aix.companyset.comset.show_set.jobs_display') == 1) { $jobs_map['audit'] = 1; } $jobs_map['valid'] = 1; $jobs_map['display'] = 1; $jobs = $this->jobsRepository->jobsList($jobs_map); if ($jobs) { $jobs = $jobs->toArray(); } $jobs_idarr = array_column($jobs, 'id'); if (!in_array($data['jobs_id'], $jobs_idarr)) { return response()->json(['status' => 0, 'msg' => '求职者投递的职位状态为未发布,请确认职位状态']); } if (!$date) { return response()->json(['status' => 0, 'msg' => '请选择面试日期']); } $ap = ($request->ap == 2 ? 0 : 1) ? "AM" : 'PM'; $time = $request->time ? $request->time : 0; if (!$time) { return response()->json(['status' => 0, 'msg' => '请选择面试时间']); } $data['interview_time'] = strtotime($date . ' ' . $time . ":00:00" . $ap); if ($data['interview_time'] < time()) { return response()->json(['status' => 0, 'msg' => '面试时间不能早于当前时间']); } $data['address'] = $request->address ? $request->address : ''; if(!$data['address']){ return response()->json(['status' => 0, 'msg' => '面试地址不能为空!']); } $data['contact'] = $request->contact ? $request->contact : ''; if(!$data['contact']){ return response()->json(['status' => 0, 'msg' => '联系人不能为空!']); } $data['telephone'] = $request->telephone ? $request->telephone : ''; if(!$data['telephone']){ return response()->json(['status' => 0, 'msg' => '联系电话不能为空!']); } $data['notes'] = $request->notes ? $request->notes : ''; $data['sms_notice'] = $request->sms_notice ? $request->sms_notice : 0; $res = $this->addInterview($data, auth('web-company')->user(),$type); $user = auth('web-company')->user(); // if($res['status']){ // if($data['resume_id']){ // $resume = Resume::find($data['resume_id']); // if($resume){ // $member = Member::find($resume->uid); // $this->wechatService->sendTemplateMessage($member, 'set_invite',[ // 'job'=>[$res['jobs_name'],'#0000ff'], // 'company'=>[$user->companyname,'#0000ff'], // 'time'=>[date('Y-m-d H:i:s',$data['interview_time']),'#0000ff'], // 'address'=>[$data['address'],'#0000ff'], // 'contact'=>[$data['contact'],'#0000ff'], // 'tel'=>[$data['telephone'],'#0000ff'] // ], route('mobile.person.jobs_interview')); // } // } // } if (!$this->memberLogRepository->createLog($user,1010,[$data['jobs_id'],$data['resume_id']])) { throw new \Exception('日志记录失败'); } return response()->json(['status' => $res['status'], 'msg' => $res['msg']]); } /** * 是否可以邀请面试 * @param $resume_id * @param $company_id */ public function isCanInterview($resume_id,$company_id){ $isOk_person=$this->personalJobsApplyRepository->findJobsApply($resume_id,$company_id); $isOK_down=$this->companyDownResumeRepository->findWhere(["company_uid"=>$company_id,'resume_id'=>$resume_id])->first(); if (empty($isOK_down) && empty($isOk_person)){ throw new ResponseException(AjaxError("没有下载或者没有收到过改简历")); } } public function addInterview($data, $user,$type) { $sms_notice = $data['sms_notice']; unset($data['sms_notice']); if ($user->user_status == 2) { return ['status' => 0, 'msg' => '您的账号处于暂停状态,请联系管理员设为正常后进行操作']; } if (!$data['resume_id']) { return ['status' => 0, 'msg' => '请选择简历']; } $user_jobs = $this->jobsRepository->countAuditJobsNum(); if (!$user_jobs) { return ['status' => 0, 'msg' => '邀请失败,你没有发布招聘信息或者信息没有审核通过']; } if ($this->companyInterviewRepository->checkInterview($data['resume_id'], $user->id, $data['jobs_id'],$data['personal_jobs_id'])) { return ['status' => 0, 'msg' => '您已对该简历进行过面试邀请,不能重复邀请']; } $setmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype); $resume = $this->resumeRepository->getResumeMemInfo($data['resume_id']); $pass = false; //检测是否申请过职位 // $has = $this->personalJobsApplyRepository->checkJobsApply($data['resume_id'], $user->id, $data['jobs_id']); /**职位要是申请过的,而且还得当前id的,咱才能改变是否查看 下载简历也用到了邀请面试,personal_jobs_id就为0 查不到就不需要改变状态直接添加邀请记录就可以了 **/ $has=$this->personalJobsApplyRepository->getPersonalJobByID($data['personal_jobs_id']); $has && $pass = true; if ($setmeal->show_apply_contact == 0 && $pass == true) { $pass = false; } if (config('aix.personal_set.per_set.contact_set.show_resume_contact') == 2) { if ($pass == false && $user->id) { $where['resume_id'] = $data['resume_id']; $where['company_uid'] = $user->id; $info = $this->companyDownResumeRepository->getDownResume($where); $info && $pass = true; } if (false == $pass && $setmeal->show_apply_contact == 0) { //如果套餐是免费查看的不提示!! return ['status' => 0, 'msg' => '请先下载简历!']; } } $jobInfo = $this->jobsRepository->getAuditJobsOne(['id' => $data['jobs_id']]); $_resume_fullname = $resume->fullname; if ($resume->display_name == 0) { $data['resume_name'] = "N" . str_pad($resume->id, 7, "0", STR_PAD_LEFT); } elseif ($resume->display_name == 3) { if ($resume->sex == 1) { $data['resume_name'] = cut_str($resume->fullname, 1, 0, "先生"); } elseif ($resume->sex == 2) { $data['resume_name'] = cut_str($resume->fullname, 1, 0, "女士"); } } else { $data['resume_name'] = $resume['fullname']; } $data['resume_addtime'] = strtotime($resume->created_at); $data['resume_uid'] = $resume->uid; $data['jobs_name'] = $jobInfo->jobs_name; $data['company_id'] = $user->id; $data['jobs_addtime'] = strtotime($jobInfo->created_at); $data['company_name'] = $user->companyname; $data['company_addtime'] = strtotime($user->created_at); $data['interview_addtime'] = time(); $data['explan'] = time();//注解字段 DB::beginTransaction();//检查数据库事务 try { if (false === $this->companyInterviewRepository->create($data)) { throw new \Exception('邀请面试失败!'); } if($type==1){ }else{ CompanyDownResume::where(['resume_id'=>$resume->id,'company_uid'=>$user->id])->update(['is_reply'=>1]); } // $map['resume_id'] = $data['resume_id']; // $map['jobs_id'] = $data['jobs_id']; // $map['company_id'] = $user->id; $map['id'] = $data['personal_jobs_id']; if ($has) { if (!$this->personalJobsApplyRepository->updateApply($map)) { throw new \Exception('状态修改失败,邀请面试失败!'); } } //短信 if ($sms_notice) { $this->smsService->setCallback('App\Services\Company\CompanyService', 'sendSMSCallBack',[$user->id]) ->sendSms($resume->memberInfos->phone, Smser::TEMPLATE_JOB_INVITE, ['sitename'=>subsite_config('aix.system.site.site.site_name'),'companyname'=>$user->companyname,'sitedomain'=>config('aix.system.site.site.site_domain')]); } //发送邮件邀请 if($resume->memberInfos){ if($resume->memberInfos->email){ $this->emailService->sendMail($resume->memberInfos->email,EmailService::TEMPLATE_INVITE_INTERVIEWS,['companyname'=>$user->companyname], ['companyname'=>$user->companyname,'sitedomain'=>route('person.index')]); } } DB::commit(); } catch (\Exception $e) { DB::rollback(); return ['status' => 0, 'msg' => $e->getMessage()]; } return array('status' => 1, 'msg' => '邀请面试成功','jobs_name'=>$jobInfo->jobs_name);//增加面试邀请 } public function saveAsDoc($id, $model) { switch ($model) { case 'personaljobsapply': $needModel = $this->personalJobsApplyRepository; break; case 'downresume': $needModel = $this->companyDownResumeRepository; break; } $idArr = $needModel->getResumeId($id); $resume_ids = array_column($idArr, 'resume_id'); array_unique($resume_ids); if (false == $resumeList = $this->resumeRepository->getResumeList($resume_ids)) { return false; } $list = array(); foreach ($resumeList as $key) { $resume = $key; $resume->education_list = $this->resumeEducationRepository->getResumeEducationByResumeId($resume->id); $resume->work_list = $this->resumeWorkRepository->getResumeWorkByResumeId($resume->id); $resume->training_list = $this->resumeTrainRepository->getResumeTrainByResumeId($resume->id); $resume->language_list = $this->ResumeLanguageRepository->getResumeLanByResumeId($resume->id); //语言能力 $resume->credent_list = $this->ResumeCredentRepository->getResumeCredentByResumeId($resume->id); //获得证书 $resume->age = date('Y') - $resume->memberInfos->birthday; $resume->tagcn = preg_replace("/\d+/", '', $resume->tag); $resume->tagcn = preg_replace("/\,/", '', $resume->tagcn); $resume->tagcn = preg_replace("/\|/", '', $resume->tagcn); //最近登录时间 $last_login_time = $this->memberRepository->getFields($resume->uid, ['last_login_time']); $resume->last_login_time = date('Y-m-d', $last_login_time['last_login_time']); if ($resume->display_name == '3') { if ($resume->sex == 1) { $resume->fullname = cut_str($resume->fullname, 1, 0, "先生"); } elseif ($resume->sex == 2) { $resume->fullname = cut_str($resume->fullname, 1, 0, "女士"); } } $resume->has_down = false; $resume->is_apply = false; $resume->label_id = 0; $resume->contact = $this->getShowContact($resume, auth('web-company')->user()); if ($resume->show_contact === false) { $resume->telephone = contact_hide($resume->telephone, 2); $resume->email = contact_hide($resume->email, 3); } $avatar_default = $resume->sex == 1 ? "data/upload/resource/no_photo_male.png" : "data/upload/resource/no_photo_female.png"; if ($resume->memberInfos->photo == 1 && ($resume->memberInfos->photo_audit == 2 || config('aix.personal_set.per_set.show_set.resume_img_display') == 2)) { $resume->photosrc = upload_asset($resume->memberInfos->images); } else { $resume->photosrc = asset($avatar_default); } $list[] = $resume; } //压缩文件路径 $zip_path = Storage::disk('public')->path('down_resume/' . auth('web-company')->user()->id.'.zip'); if (file_exists($zip_path)) { Storage::disk('public')->delete('down_resume/' . auth('web-company')->user()->id.'.zip'); } $zipper = new Zipper(); $zipper->make($zip_path); foreach ($list as $key => $val) { $html = view('app.company.resume.tpl_word_resume', ['resume' => $val])->render(); $zipper->addString(($key+1).'_'.$val->fullname.'的简历.doc', $html); } $zipper->close(); return ['status' => 1, 'msg' => '下载成功!', 'path' => $zip_path]; } /** * 是否显示联系方式 */ protected function getShowContact(&$val, $user) { $show_contact = false; //情景1:游客访问 if (!$user) { if (config('aix.personal_set.per_set.contact_set.show_resume_contact') == 0) { $show_contact = true; } } else if ($user->utype == 2 && $user->id == $val->uid) { //情景2:个人会员访问并且是该简历发布者 $show_contact = true; } elseif ($user->utype == 1) { //情景3:企业会员访问 //情景3-1:其他企业会员 if (config('aix.personal_set.per_set.contact_set.show_resume_contact') == 1) { $show_contact = true; } //情景3-2:下载过该简历 $data['resume_id'] = $val->id; $data['company_uid'] = $user->id; $down_resume = $this->companyDownResumeRepository->getDownResume($data); if ($down_resume) { $val->label_id = $down_resume->is_reply; $show_contact = true; $val->has_down = true; } //情景3-3:该简历申请过当前企业发布的职位 $jobs_apply = $this->personalJobsApplyRepository->checkJobsApply($val->id, $user->id); $setmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype); if ($jobs_apply && $setmeal->show_apply_contact == '0') { $show_contact = true; } } return $show_contact; } /* * 申请职位 */ //判断是否可以申请职位 public function ifJobApply($jobs_id, $user = array()) { //获取当天已投递的职位数量,判断当天是否可以还可以投递简历 $today_time = date('Y-m-d H:i:s', strtotime(date('Y-m-d', time()))); $apply_where = array( array('personal_uid', '=', $user->id), array('created_at', '>=', $today_time) ); $applyJobs = $this->personalJobsApplyRepository->applyJobs($apply_where); $allow_count = config('aix.personal_set.per_set.per_set.apply_jobs_max'); if ($allow_count < count($applyJobs) + count($jobs_id)) { throw new ResponseException("您每天可以投递" . $allow_count . "个职位,今天已投递了" . count($applyJobs) . "个"); } //判断是否有可以投递的简历 $resume_audit = config('aix.personal_set.per_set.show_set.resume_display'); $resume_where = array(array('uid', '=', $user->id)); if (config('aix.personal_set.per_set.show_set.resume_display') == '1') { $resume_where[] = array('audit', '=', '2'); } else { $resume_where[] = array('audit', '<>', '0'); } $resumes = $this->resumeRepository->getResumes($resume_where); if (count($resumes) == 0) { //判断是否有简历 $user_resumes = $this->resumeRepository->getResumes(array('uid' => auth('web-member')->user()->id)); if ($user_resumes->toArray()) { throw new ResponseException("您没有审核通过的简历!"); } else { throw new ResponseException("请您先填写一份简历!"); } } else if (count($resumes) == 1) { //直接进入投递环节 $resumes_arr = $resumes->toArray(); return $this->applyJobs($jobs_id, $resumes_arr[0]['id'], $user); } else { //获取默认简历信息 $def_resume = array(); foreach ($resumes as $k => $v) { if ($v->def == '1') { $def_resume = $v; } } if (!$def_resume) { $def_resume = $resumes[0]; } //提示用户选择需要投递的简历 return array('status' => 2, 'resumes' => $resumes, 'def_resume' => $def_resume); } } //申请职位 public function applyJobs($jobs_id, $resume_id = '', $user) { //判断简历是否存在 if ($resume_id) { $resume_where = array('uid' => $user->id, 'id' => $resume_id); } else { $resume_where = array('uid' => $user->id, 'def' => 1); } $resume_info = $this->resumeRepository->getResumeInfo($resume_where); if (!$resume_info) { throw new ResponseException("选择的简历不存在!"); } //判断简历是否要求通过审核 if (config('aix.personal_set.per_set.show_set.resume_display') == '1') { if ($resume_info->audit != 2) { throw new ResponseException("您选择投递的简历尚未审核通过!"); } } else { if ($resume_info->audit == 0) { throw new ResponseException("您选择投递的简历尚未审核通过!"); } } //检测职位匹配的简历完整度要求 if (config('aix.personal_set.per_set.per_set.apply_job_min_percent')) { if ($resume_info->complete_percent < config('aix.personal_set.per_set.per_set.apply_job_min_percent')) { return array('status' => 0, 'error' => '您的简历完整度只有 ' . $resume_info->complete_percent . '%,该公司要求达到 ' . config('aix.personal_set.per_set.per_set.apply_job_min_percent') . '% 才可以申请,请继续完善吧~', 'complete' => array('id' => $resume_info->id, 'percent' => $resume_info->complete_percent), 'resume_id' => $resume_info->id); } } //获取简历的工作经历、教育经历 $work_where = array( 'uid' => $user->id, 'resume_id' => $resume_info->id ); $works = $this->resumeWorkRepository->getResumeWorks($work_where); if ($works->toArray()) { $resume_info->work = $works; } $edu_where = $work_where; $educations = $this->resumeEducationRepository->getResumeEducations($edu_where); if ($educations->toArray()) { $resume_info->educations = $educations; } //获取职位信息 $job_where_in = $jobs_id; $jobs_res = $this->jobsRepository->getJobs($job_where_in); $jobs = $this->dealJobsInfo($jobs_res); $com_setmeals = $this->getJobCompanySetmeals($jobs); //当前所选职位对应的企业会员套餐信息 $down_companys = $this->companyDownResumeRepository->getDowmResumes(array('resume_id' => $resume_info->id, 'resume_uid' => $resume_info->uid), array(), 'company_uid'); //获取所有下载当前简历的企业信息 //获取当前用户申请过的职位 $space_times = 1 - config('aix.personal_set.per_set.per_set.apply_job_space'); $check_where = array( array('personal_uid', '=', $user->id) ); if (config('aix.personal_set.per_set.per_set.apply_job_space')>0) { $check_time = strtotime(date('Y-m-d', strtotime($space_times . " day") - 1)) - 1; $check_where[] = array('created_at', '>', date('Y-m-d H:i:s', $check_time)); } //$check_where = array('personal_uid'=>auth('web-member')->user()->id); //$check_jobs_res = $this->personalJobsApplyRepository->applyJobs($check_where, $jobs_id); $check_jobs_res = $this->personalJobsApplyRepository->checkApplyJobs($check_where, $jobs_id); $check_jobs = $this->dealCheckJobs($check_jobs_res); //申请职位 $list = array(); $success = 0; $points = 0; $space_days = config('aix.personal_set.per_set.per_set.apply_job_space'); $fail_job_ids = []; foreach ($jobs_id as $val) { $jobs_name = $jobs[$val]->jobs_name; $list[$val] = array('id' => $val, 'jobs_name' => $jobs_name, 'company_id' => $jobs[$val]->company_id, 'company_name' => $jobs[$val]->company_name, 'status' => 0); //检测职位是否有效 if ($jobs[$val]->valid == 0 || $jobs[$val]->display != 1) { $list[$val]['tip'] = '该职位已关闭'; $list[$val]['status'] = 4; $fail_job_ids[] = $val; continue; } //判断是否申请过当前职位 if (array_get($check_jobs, $val)) { if (config('aix.personal_set.per_set.per_set.apply_job_space')>0) { $list[$val]['tip'] = $space_days . '天内不允许重复申请'; } else { $list[$val]['tip'] = '该职位已申请'; } $list[$val]['status'] = 3; $fail_job_ids[] = $val; continue; } //申请职位 $time = date('Y-m-d H:i:s', time()); $apply_data = array( 'resume_id' => $resume_info->id, 'resume_name' => $resume_info->title, 'personal_uid' => $resume_info->uid, 'jobs_id' => $val, 'jobs_name' => $jobs[$val]->jobs_name, 'company_id' => $jobs[$val]->company_id, 'company_name' => $jobs[$val]->company_name, 'personal_look' => 1, 'notes' => '', 'is_reply' => 0, 'is_apply' => 1, 'created_at' => $time, 'updated_at' => $time ); // $company = Company::find($jobs[$val]->company_id); // $this->wechatService->sendTemplateMessage($company, 'set_applyjobs',[ // 'keyword1'=>[$jobs[$val]->jobs_name,'#0000ff'], // 'keyword2'=>[$user->username,'#0000ff'], // ],route('mobile.firm.resume.apply')); // // if($company->email){ // $this->emailService->sendMail($company->email, EmailService::TEMPLATE_MAIL_APPLYJOBS, ['personalfullname'=>$resume_info->fullname,'jobsname'=>$jobs[$val]->jobs_name], ['jobsname'=>$jobs[$val]->jobs_name]); // } $apply_rst = $this->personalJobsApplyRepository->addData($apply_data); if ($apply_rst) { //判断会员套餐中投递的简历是否免费查看,如果免费查看则判断当前企业是否有下载过该简历,没有下载则添加下载对应关系 if (array_has($com_setmeals, $jobs[$val]->company_id)) { $com_setmeal = $com_setmeals[$jobs[$val]->company_id]; if ((!$down_companys) || ($down_companys && !array_has($down_companys, $jobs[$val]->company_id))) { if ($com_setmeal->expire == 0 && $com_setmeal->show_apply_contact == 1) { $down_data = array( 'resume_id' => $resume_info->id, 'resume_name' => $resume_info->title, 'resume_uid' => $resume_info->uid, 'company_uid' => $com_setmeal->uid, 'company_name' => $jobs[$val]->company_name, 'down_addtime' => time(), 'is_reply' => 0 ); $this->companyDownResumeRepository->create($down_data); } } } $insertid = $apply_rst->id; $list[$val]['tip'] = '投递成功'; $list[$val]['status'] = 1; $success++; //修改任务记录、积分信息 $task_rst = $this->taskService->doTask(4); if (array_get($task_rst, 'code') == 1) { $points += $task_rst['data']['points']; } //添加企业访客记录 $this->companyService->addStatistics($jobs[$val]->company_id, $val, $user, 1); //职位联系信息 $contacts = ''; $contacts = $this->jobsContactRepository->getContactInfo(array('job_id' => $val)); //简历基本信息 $resume_basicinfo = $this->resumeRepository->getResumeBasic(auth('web-member')->user()->id, $resume_info->id); //发送站内信 $replac_pms = array(); $replac_pms['personalfullname'] = $resume_basicinfo->fullname; //TODO 发送邮件 //发送短信 - 短信开关、短信模板、职位联系信息中notify_mobile $jobsContact = $jobs[$val]->jobsContact; $mobile = ''; $notify_mobile = 0; if ($jobsContact) { $notify_mobile = $jobsContact->notify_mobile; $mobile = $jobsContact->telephone; } if ($mobile) { //获取短信接口是否开启 $smss = $this->smsRepository->getUsefulSms(); $sms_config = 0; if ($smss) { $sms_config = 1; } //判断申请职位短信通知是否开启 $sms_apply_notice = 0; if ($this->smsRuleRepository->getSmsRule(['alias'=>'sms_applyjobs','status'=>1])) { $sms_apply_notice = 1; } if ($sms_config && $sms_apply_notice && $notify_mobile) { //发送短信 $parmas = array( 'sitename' => subsite_config('aix.system.site.site.site_name'), 'sitedomain' => config('aix.system.site.site.site_domain'), 'jobsname' => $jobs[$val]->jobs_name, 'personalfullname' => $resume_basicinfo->fullname ); $this->smsService->sendSms($mobile, Smser::TEMPLATE_JOB_APPLY, $parmas); } } //微信 } else { $list[$val]['tip'] = '申请职位失败'; } } //判断申请职位是否有任务 $task_check = $this->taskService->checkTask(4); //获取会员积分信息 $points_info = $this->memberPointRepository->getPointsOne($user->id, 2); return array('status' => 1, 'data' => array('count_jids' => count($jobs_id), 'list' => $list, 'total' => count($jobs_id), 'points' => $points, 'success' => $success, 'failure' => count($jobs_id) - $success), 'points_info' => $points_info, 'show_points' => $task_check, 'resume_id' => $resume_info->id, 'fail_job_ids' =>$fail_job_ids); } public function dealJobsInfo($jobs) { $list = array(); if (count($jobs) > 0) { foreach ($jobs as $k => $v) { $list[$v->id] = $v; } } return $list; } public function dealCheckJobs($jobs) { $list = array(); if (count($jobs) > 0) { foreach ($jobs as $k => $v) { $list[$v->jobs_id] = $v; } } return $list; } public function getJobCompanySetmeals($jobs) { $com_ids = array(); $list = array(); if (count($jobs) > 0) { foreach ($jobs as $k => $v) { $com_ids[] = $v->company_id; } $rst = $this->memberSetmealRepository->getMemberSetmeals($com_ids); if ($rst) { foreach ($rst as $k => $v) { $list[$v->uid] = $v; } } } return $list; } //手机端申请职位 public function ifMobileJobApply($jobs_id, $user, $resume_id = '', $is_apply = 2) { //获取当天已投递的职位数量,判断当天是否可以还可以投递简历 $today_time = date('Y-m-d H:i:s', strtotime(date('Y-m-d', time()))); $apply_where = array( array('personal_uid', '=', $user->id), array('created_at', '>=', $today_time) ); $applyJobs = $this->personalJobsApplyRepository->applyJobs($apply_where); $allow_count = config('aix.personal_set.per_set.per_set.apply_jobs_max'); if ($allow_count < count($applyJobs) + count($jobs_id)) { return array('status'=>0,'error'=>"您每天可以投递" . $allow_count . "个职位,今天已投递了" . count($applyJobs) . "个"); } //判断是否有可以投递的简历 $resume_audit = config('aix.personal_set.per_set.show_set.resume_display'); $resume_where = array(array('uid', '=', auth('web-member')->user()->id)); if (config('aix.personal_set.per_set.show_set.resume_display') == '1') { $resume_where[] = array('audit', '=', '2'); } else { $resume_where[] = array('audit', '<>', '0'); } $resumes = $this->resumeRepository->getResumes($resume_where); if (count($resumes) == 0) { //判断是否有简历 $user_resumes = $this->resumeRepository->getResumes(array('uid' => auth('web-member')->user()->id)); if ($user_resumes->toArray()) { return array('status'=>0,'error'=>"您没有审核通过的简历!"); } else { return array('status'=>0,'error'=>"请您先填写一份简历!"); } } else if (count($resumes) == 1) { //直接进入投递环节 $resumes_arr = $resumes->toArray(); return $this->mobileApplyJobs($jobs_id, $resumes_arr[0]['id'], $user); } else { //获取默认简历信息 $def_resume = array(); foreach ($resumes as $k => $v) { if ($v->def == '1') { $def_resume = $v; } } if (!$def_resume) { $def_resume = $resumes[0]; } //提示用户选择需要投递的简历 return array('status' => 2, 'resumes' => $resumes, 'def_resume' => $def_resume); } } public function mobileApplyJobs($jobs_id, $resume_id = '', $user = array()) { //判断简历是否存在 if ($resume_id) { $resume_where = array('uid' => $user->id, 'id' => $resume_id); } else { $resume_where = array('uid' => $user->id, 'def' => 1); } $resume_info = $this->resumeRepository->getResumeInfo($resume_where); if (!$resume_info) { return array('status'=>0,'error'=>"选择的简历不存在!"); } //判断简历是否要求通过审核 if (config('aix.personal_set.per_set.show_set.resume_display') == '1') { if ($resume_info->audit != 2) { return array('status'=>0,'error'=>"您选择投递的简历尚未审核通过!"); } } else { if ($resume_info->audit == 0) { return array('status'=>0,'error'=>"您选择投递的简历尚未审核通过!"); } } //检测职位匹配的简历完整度要求 if (config('aix.personal_set.per_set.per_set.apply_job_min_percent')) { if ($resume_info->complete_percent < config('aix.personal_set.per_set.per_set.apply_job_min_percent')) { return array('status' => 0, 'error' => '您的简历完整度只有 ' . $resume_info->complete_percent . '%,该公司要求达到 ' . config('aix.personal_set.per_set.per_set.apply_job_min_percent') . '% 才可以申请,请继续完善吧~', 'complete' => array('id' => $resume_info->id, 'percent' => $resume_info->complete_percent), 'resume_id' => $resume_info->id); } } //获取简历的工作经历、教育经历 $work_where = array( 'uid' => $user->id, 'resume_id' => $resume_info->id ); $works = $this->resumeWorkRepository->getResumeWorks($work_where); if ($works->toArray()) { $resume_info->work = $works; } $edu_where = $work_where; $educations = $this->resumeEducationRepository->getResumeEducations($edu_where); if ($educations->toArray()) { $resume_info->educations = $educations; } //获取职位信息 $job_where_in = $jobs_id; $jobs_res = $this->jobsRepository->getJobs($job_where_in); $jobs = $this->dealJobsInfo($jobs_res); $com_setmeals = $this->getJobCompanySetmeals($jobs); //当前所选职位对应的企业会员套餐信息 $down_companys = $this->companyDownResumeRepository->getDowmResumes(array('resume_id' => $resume_info->id, 'resume_uid' => $resume_info->uid), array(), 'company_uid'); //获取所有下载当前简历的企业信息 //获取当前用户申请过的职位 $space_times = 1 - config('aix.personal_set.per_set.per_set.apply_job_space'); $check_time = strtotime(date('Y-m-d', strtotime($space_times . " day") - 1)) - 1; $check_where = array( array('personal_uid', '=', $user->id), array('created_at', '>', date('Y-m-d H:i:s', $check_time)), ); $check_jobs_res = $this->personalJobsApplyRepository->checkApplyJobs($check_where, $jobs_id); $check_jobs = $this->dealCheckJobs($check_jobs_res); //申请职位 $list = array(); $success = 0; $points = 0; $space_days = config('aix.personal_set.per_set.per_set.apply_job_space'); foreach ($jobs_id as $val) { $jobs_name = $jobs[$val]->jobs_name; $list[$val] = array('id' => $val, 'jobs_name' => $jobs_name, 'company_id' => $jobs[$val]->company_id, 'company_name' => $jobs[$val]->company_name, 'status' => 0); //检测职位是否有效 if ($jobs[$val]->valid == 0 || $jobs[$val]->display != 1) { if (count($jobs_id)==1) { return array('status'=>0,'error'=>"该职位已关闭!"); } else { $list[$val]['tip'] = '该职位已关闭'; $list[$val]['status'] = 4; continue; } } //判断是否申请过当前职位 if (array_get($check_jobs, $val)) { if (count($jobs_id)==1) { return array('status'=>0,'error'=>$space_days . '天内不允许重复申请!'); } else { $list[$val]['tip'] = $space_days . '天内不允许重复申请'; $list[$val]['status'] = 3; continue; } } //申请职位 $time = date('Y-m-d H:i:s', time()); $apply_data = array( 'resume_id' => $resume_info->id, 'resume_name' => $resume_info->title, 'personal_uid' => $resume_info->uid, 'jobs_id' => $val, 'jobs_name' => $jobs[$val]->jobs_name, 'company_id' => $jobs[$val]->company_id, 'company_name' => $jobs[$val]->company_name, 'personal_look' => 1, 'notes' => '', 'is_reply' => 0, 'is_apply' => 1, 'created_at' => $time, 'updated_at' => $time ); $apply_rst = $this->personalJobsApplyRepository->addData($apply_data); if ($apply_rst) { //判断会员套餐中投递的简历是否免费查看,如果免费查看则判断当前企业是否有下载过该简历,没有下载则添加下载对应关系 if (array_has($com_setmeals, $jobs[$val]->company_id)) { $com_setmeal = $com_setmeals[$jobs[$val]->company_id]; if ((!$down_companys) || ($down_companys && !array_has($down_companys, $jobs[$val]->company_id))) { if ($com_setmeal->expire == 0 && $com_setmeal->show_apply_contact == 1) { $down_data = array( 'resume_id' => $resume_info->id, 'resume_name' => $resume_info->title, 'resume_uid' => $resume_info->uid, 'company_uid' => $com_setmeal->uid, 'company_name' => $jobs[$val]->company_name, 'down_addtime' => time(), 'is_reply' => 0 ); $this->companyDownResumeRepository->create($down_data); } } } /*if (count($jobs_id)==1) { return array('status'=>1,'msg'=> '投递成功!'); }*/ $insertid = $apply_rst->id; $list[$val]['tip'] = '投递成功'; $list[$val]['status'] = 1; $success++; //修改任务记录、积分信息 $task_rst = $this->taskService->doTask(4); if (array_get($task_rst, 'code') == 1) { $points += $task_rst['data']['points']; } //添加企业访客记录 $this->companyService->addStatistics($jobs[$val]->company_id, $val, $user, 1, 3); //职位联系信息 $contacts = ''; $contacts = $this->jobsContactRepository->getContactInfo(array('job_id' => $val)); //简历基本信息 $resume_basicinfo = $this->resumeRepository->getResumeBasic(auth('web-member')->user()->id, $resume_info->id); //发送站内信 $replac_pms = array(); $replac_pms['personalfullname'] = $resume_basicinfo->fullname; //TODO 发送邮件 //发送短信 //微信 } else { if (count($jobs_id)==1) { return array('status'=>0,'error'=> '申请职位失败!'); } $list[$val]['tip'] = '申请职位失败'; } } //判断申请职位是否有任务 $task_check = $this->taskService->checkTask(4); //获取会员积分信息 $points_info = $this->memberPointRepository->getPointsOne($user->id, 2); if (count($jobs_id)==1) { return array('status'=>1,'msg'=> '投递成功!'); } return array('status' => 1, 'data' => array('count_jids' => count($jobs_id), 'list' => $list, 'total' => count($jobs_id), 'points' => $points, 'success' => $success, 'failure' => count($jobs_id) - $success), 'points_info' => $points_info, 'show_points' => $task_check, 'resume_id' => $resume_info->id); } /* * 平板邀请 */ public function padSaveApply($request,$user) { $data['jobs_id'] = $request->jobs_id ? $request->jobs_id : 0; $data['resume_id'] = $request->resume_id ? $request->resume_id : 0; $date = $request->date ? $request->date : ''; $type = $request->type ? $request->type : 1; //职位状态是未发布中的。 $jobs_map['company_id'] = $user->id; if (config('aix.companyset.comset.show_set.jobs_display') == 1) { $jobs_map['audit'] = 1; } $jobs_map['display'] = 1; $jobs = $this->jobsRepository->jobsList($jobs_map); if ($jobs) { $jobs = $jobs->toArray(); } $jobs_idarr = array_column($jobs, 'id'); if (!in_array($data['jobs_id'], $jobs_idarr)) { return response()->json(['status' => 0, 'msg' => '求职者投递的职位状态为未发布,请确认职位状态']); } if (!$date) { return response()->json(['status' => 0, 'msg' => '请选择面试日期']); } $ap = ($request->ap == 2 ? 0 : 1) ? "AM" : 'PM'; $time = $request->time ? $request->time : 0; if (!$time) { return response()->json(['status' => 0, 'msg' => '请选择面试时间']); } $data['interview_time'] = strtotime($date . ' ' . $time . ":00:00" . $ap); if ($data['interview_time'] < time()) { return response()->json(['status' => 0, 'msg' => '面试时间不能早于当前时间']); } $data['address'] = $request->address ? $request->address : ''; $data['contact'] = $request->contact ? $request->contact : ''; $data['telephone'] = $request->telephone ? $request->telephone : ''; $data['notes'] = $request->notes ? $request->notes : ''; $data['sms_notice'] = $request->sms_notice ? $request->sms_notice : 0; $res = $this->padAddInterview($data, $user,$type); return response()->json(['status' => $res['status'], 'msg' => $res['msg'],'back_url'=>$res['back_url'] ?? '']); } public function padAddInterview($data, $user,$type) { $sms_notice = $data['sms_notice']; unset($data['sms_notice']); if ($user->user_status == 2) { return ['status' => 0, 'msg' => '您的账号处于暂停状态,请联系管理员设为正常后进行操作']; } if (!$data['resume_id']) { return ['status' => 0, 'msg' => '请选择简历']; } $user_jobs = $this->jobsfairPutJobService->countAuditJobsNum($user); if (!$user_jobs) { return ['status' => 0, 'msg' => '邀请失败,你没有发布招聘信息或者信息没有审核通过']; } if ($this->companyInterviewRepository->checkInterview($data['resume_id'], $user->id, $data['jobs_id'])) { return ['status' => 0, 'msg' => '您已对该简历进行过面试邀请,不能重复邀请']; } $setmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype); $resume = $this->resumeRepository->getResume($data['resume_id']); $pass = false; //检测是否申请过职位 $has = $this->personalJobsApplyRepository->checkJobsApply($data['resume_id'], $user->id, $data['jobs_id']); $has && $pass = true; if ($setmeal->show_apply_contact == 0 && $pass == true) { $pass = false; } if (config('aix.personal_set.per_set.contact_set.show_resume_contact') == 2) { if ($pass == false && $user->id) { $where['resume_id'] = $data['resume_id']; $where['company_uid'] = $user->id; $info = $this->companyDownResumeRepository->getDownResume($where); $info && $pass = true; } if (false == $pass && $type == 1) { return ['status' => 0, 'msg' => '请先下载简历!']; } } $jobInfo = $this->jobsRepository->getAuditJobsOne(['id' => $data['jobs_id']]); $_resume_fullname = $resume->fullname; if ($resume->display_name == 0) { $data['resume_name'] = "N" . str_pad($resume->id, 7, "0", STR_PAD_LEFT); } elseif ($resume->display_name == 3) { if ($resume->sex == 1) { $data['resume_name'] = cut_str($resume->fullname, 1, 0, "先生"); } elseif ($resume->sex == 2) { $data['resume_name'] = cut_str($resume->fullname, 1, 0, "女士"); } } else { $data['resume_name'] = $resume['fullname']; } $data['resume_addtime'] = strtotime($resume->created_at); $data['resume_uid'] = $resume->uid; $data['jobs_name'] = $jobInfo->jobs_name; $data['company_id'] = $user->id; $data['jobs_addtime'] = strtotime($jobInfo->created_at); $data['company_name'] = $user->companyname; $data['company_addtime'] = strtotime($user->created_at); $data['interview_addtime'] = time(); DB::beginTransaction();//检查数据库事务 try { if (false === $this->companyInterviewRepository->create($data)) { throw new \Exception('邀请面试失败!'); } $map['resume_id'] = $data['resume_id']; $map['jobs_id'] = $data['jobs_id']; $map['company_id'] = $user->id; if ($has) { if (!$this->personalJobsApplyRepository->updateApply($map)) { throw new \Exception('状态修改失败,邀请面试失败!'); } } //短信 if ($sms_notice) { $this->smsService->sendSms($resume->memberInfos->phone, Smser::TEMPLATE_JOB_INVITE, ['sitename'=>subsite_config('aix.system.site.site.site_name'),'companyname'=>$user->companyname,'sitedomain'=>config('aix.system.site.site.site_domain')]); } DB::commit(); } catch (\Exception $e) { DB::rollback(); return ['status' => 0, 'msg' => $e->getMessage()]; } if($type == 1){ $back_url = route('hardware.pad.search.resume'); }elseif($type == 2 || $type == 5){ $back_url = route('hardware.pad.receive.list'); }else{ $back_url = route('hardware.pad.interview.list'); } return array('status' => 1,'msg'=>'邀请面试成功','back_url'=>$back_url);//增加面试邀请 } //判断下载的简历是否是已投简历 public function isOwn($y_id,$user,$column) { $idsArr = $this->personalJobsApplyRepository->getPluck(['company_id'=>$user->id],$column)->toArray(); if(array_diff($y_id,$idsArr)) { throw new ResponseException('参数错误!'); } } }