jobfairPersonSignedRepository = $jobfairPersonSignedRepository; $this->jobfairPersonalJobsApplyRepository = $jobfairPersonalJobsApplyRepository; $this->jobfairPersonalJopApplyService = $jobfairPersonalJopApplyService; $this->jobfairPutJobRepository = $jobfairPutJobRepository; $this->resumeRepository = $resumeRepository; $this->memberInfoService = $memberInfoService; $this->CategoryService = $CategoryService; $this->memberInfoRepository = $memberInfoRepository; $this->companyRepository = $companyRepository; $this->resumeService = $resumeService; $this->searchService = $searchService; $this->companyDownResumeRepository = $companyDownResumeRepository; $this->membersSetmealService = $membersSetmealService; $this->companyDownResumeService = $companyDownResumeService; $this->feedbackService = $feedbackService; $this->jobsService = $jobsService; $this->companyService = $companyService; $this->setmealIncrementsService = $setmealIncrementsService; $this->viewDownApplyRepository = $viewDownApplyRepository; $this->personalJobsApplyRepository = $personalJobsApplyRepository; $this->jobfairPutJobService = $jobfairPutJobService; } public function index() { return view('app.hardware.pad.interview.index',['title'=>'面试管理']); } //面试邀请列表(签到的人) public function resume(Request $request) { $jobfair_id = session('floorplan_stands.jobfair_id'); $user = auth('web-company')->user(); $whereResumes = array_filter($request->all()); foreach ($whereResumes as $key=>$value) { if($value == 'null') { unset($whereResumes[$key]); } } $whereApply= []; if(isset($whereResumes['page'])){ unset($whereResumes['page']); } $is_interview = ''; if(isset($whereResumes['is_interview'])){ $is_interview = $whereResumes['is_interview']; unset($whereResumes['is_interview']); $whereApply = [ 'company_id'=>$user->id, 'jobfair_id'=>$jobfair_id, ]; } $result = $this->jobfairPersonSignedRepository->getSignedInterview(['jobfairid'=>$jobfair_id,'utype'=>2],$whereResumes,$whereApply,$is_interview); $where = [ 'jobfair_id'=>$jobfair_id, 'company_id'=>$user->id, ]; foreach ($result as $key=>&$value){ $where['personal_uid'] = $value->uid; $value['flag'] = $this->jobfairPersonalJobsApplyRepository->interviewFind($where); //1.照片为空 //2.照片主动不显示 //3.照片审核不通过 //4.先审核后显示:照片不是审核通过的(不等于1) $avatar_default = public_data_path('/data/upload/resource/no_photo_female.png'); if ($value->resumes->memberInfos->sex == 1) { $avatar_default = public_data_path('/data/upload/resource/no_photo_male.png'); } if ($value->resumes->memberInfos->images == '' || $value->resumes->memberInfos->display_images == 2 || $value->resumes->memberInfos->photo_audit == 0 || (config('aix.personal_set.per_set.show_set.resume_img_display') == 1 && $value->resumes->memberInfos->photo_audit != 2)) { $value->resumes->photosrc = $avatar_default; //不显示 } else { $value->resumes->photosrc = upload_asset($value->resumes->memberInfos->images); //显示 } } $param_array = array('education'=>'','experience'=>'','sex'=>'','nature'=>'','is_interview'=>''); $params = array_merge($param_array,$request->all()); if($request->ajax()) { if ($result->isNotEmpty()) { return response()->json(['status'=>1,'data'=>view('app.hardware.pad.interview.ajax_resume_list', ['result'=>$result])->render()]); } return response()->json(['status'=>0]); } return view('app.hardware.pad.interview.resume',['title'=>'邀约面试','result' => $result,'params'=>$params]); } //投递或邀请操作 public function invitation(Request $request) { $user = auth('web-company')->user(); if ($request->method() == 'POST') { $data['jobs_id'] = $request->input('job_id'); $this->jobfairPutJobService->isOwn( $data['jobs_id'],$user->id); $data['personal_uid'] = $request->input('personal_uid'); $data['company_id'] = $user->id; $data['position_id'] = session('floorplan_stands.id'); $data['jobfair_id'] = session('floorplan_stands.jobfair_id'); $data['is_apply'] = $request->input('is_apply',2); if($res = $this->jobfairPersonalJobsApplyRepository->applyFind($data)) { return response()->json(['status' => 0, 'msg' => '该用户已邀请或投递过该岗位']); } //获取他的默认简历id if($request->input('resume_id')) { $data['resume_id'] = $request->input('resume_id'); $data['is_apply'] = 1; }else{ $reusme = $this->resumeRepository->getResumeInfo(['uid'=>$data['personal_uid']]); $data['resume_id'] = $reusme->id; $data['is_apply'] = 2; } $data['type'] = 2; if($this->jobfairPersonalJobsApplyRepository->interviewAdd($data)) { return response()->json(['status' => 1, 'msg' => '邀请成功']); } return response()->json(['status' => 0, 'msg' => '邀请失败']); } //获取在招职位 $exid = session('floorplan_stands.exid'); $jobfair_id = session('floorplan_stands.jobfair_id'); $jobs = $this->jobfairPutJobRepository->getJobfairJob($exid,$jobfair_id); return response()->json(['status'=>1,'data'=>['html'=>view('app.hardware.pad.interview.ajax_resume', ['jobs'=>$jobs])->render()]]); } //刷二维码或身份证 public function delivery() { return view('app.hardware.pad.interview.delivery',['title'=>'接收简历']); } /** * 简历详情 * @param $id * @param Request $request * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View * @throws \App\Exceptions\ResponseException */ public function resumeShow($id,Request $request){ /** * type: * 1:正常流程,判断是否可以下载、邀请面试 * 2:直接邀请,不判断是否下载(已收到简历跳转) * 3:直接邀请,不判断是否下载(面试邀请跳转) * 4:只显示详情,不给任何操作 * 5:直接邀请,不判断是否下载(已收到简历跳转) */ $type = $request->input('type'); $res = $this->resumeService->padResumeShow($id,$type, '', getUser()); $this->putSeoData('resume', $res['resume']); //获取在招职位 $exid = session('floorplan_stands.exid'); $jobfair_id = session('floorplan_stands.jobfair_id'); $jobs = $this->jobfairPutJobRepository->getJobfairJob($exid,$jobfair_id); $html = ''; if(count($jobs) == 1) { $job_id = current($jobs->toArray())['id']; } elseif(count($jobs)>1){ $job_id = 0; foreach ($jobs as $val){ $html .= ""; } }else{ $job_id = -1; } $is_down = false; if($type == 1) { $user = auth('web-company')->user(); if($this->companyDownResumeRepository->getDownResume(['resume_id'=>$id,'company_uid'=>$user->id])) { $is_down = true; }else { $is_down = false; $member_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1'); if($member_setmeal->show_apply_contact == 1) { $has = $this->personalJobsApplyRepository->checkJobsApply($id, $user->id); if ($has) { $is_down = true; } } } } return view('app.hardware.pad.interview.resume_show', ['content'=>$res,'resume'=>$res['resume'],'html'=>$html,'job_id'=>$job_id,'type'=>$type,'is_down'=>$is_down]); } public function deliveryQrcode(Request $request){ $res = hashid_decode($request->hashid); if(!$res){ return response()->json(['status'=>-1, 'msg'=>'二维码出错,请刷新重试...']); } $info = $this->memberInfoService->getInfo(['uid' => $res['id']]); if(!$info){ return response()->json(['status'=>-1, 'msg'=>'二维码出错,请刷新重试...']); } $resumes = $this->resumeRepository->getSuccessResume($info['uid'],getResumeStatus()); if($resumes->isEmpty()){ $wxcode = '

暂无您的简历信息,请扫码创建简历!

'; return response()->json(['status'=>0, 'msg'=>'暂无您的简历信息,请扫码创建简历!','wxcode'=>$wxcode]); } $html = ''; $html .= ''; return response()->json(['status'=>1, 'msg'=>'成功','data'=>$resumes,'html'=>$html]); } public function deliveryCard(Request $request){ $id_card = $request->cardId; $info = $this->memberInfoService->getInfo( ['id_card' => $id_card]); $wxcode = '

暂无您的简历信息,请扫码创建简历!

'; if(!$info){ return response()->json(['status'=>0, 'msg'=>'暂无您的简历信息,请扫码创建简历!','wxcode'=>$wxcode]); } $resumes = $this->resumeRepository->getSuccessResume($info['uid'],getResumeStatus()); if($resumes->isEmpty()){ return response()->json(['status'=>0, 'msg'=>'暂无您的简历信息,请扫码创建简历!','wxcode'=>$wxcode]); } $html = ''; $html .= ''; return response()->json(['status'=>1, 'msg'=>'成功','data'=>$resumes,'html'=>$html]); } public function search(Request $request) { $data = array_filter($request->all()); if(isset($data['page'])){ $page = $data['page']; unset($data['page']); } foreach ($data as $key=>$value) { if($value == 'null') { unset($data[$key]); }else{ $where[] = array($key,'=',$value); } } $order_by = array('stime'=>'desc', 'updated_at'=>'desc'); if (config('aix.personal_set.per_set.show_set.resume_display')=='1') { $where[] = array('audit','=','2'); } else { $where[] = array('audit','<>','0'); } $where[] = array('display','=',1); $where[] = array('subsite_ids','=',get_subsite_id()); $list = $this->searchService->search('Resume',$where,$order_by,'',10,$page ?? 1); $user = auth('web-company')->user(); $member_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1'); foreach ($list as &$value) { if($this->companyDownResumeRepository->getDownResume(['resume_id'=>$value->id,'company_uid'=>$user->id])) { $value->is_down = true; }else { $value->is_down = false; if($member_setmeal->show_apply_contact == 1) { $has = $this->personalJobsApplyRepository->checkJobsApply($value->id, $user->id); if ($has) { $value->is_down = true; } } } //1.照片为空 //2.照片主动不显示 //3.照片审核不通过 //4.先审核后显示:照片不是审核通过的(不等于1) $avatar_default = public_data_path('/data/upload/resource/no_photo_female.png'); if ($value->memberInfos->sex == 1) { $avatar_default = public_data_path('/data/upload/resource/no_photo_male.png'); } if ($value->memberInfos->images == '' || $value->memberInfos->display_images == 2 || $value->memberInfos->photo_audit == 0 || (config('aix.personal_set.per_set.show_set.resume_img_display') == 1 && $value->memberInfos->photo_audit != 2)) { $value->photosrc = $avatar_default; //不显示 } else { $value->photosrc = upload_asset($value->memberInfos->images); //显示 } } $param_array = array('education'=>'','experience'=>'','sex'=>'','nature'=>''); $params = array_merge($param_array,$request->all()); if($request->ajax()) { if ($list->isNotEmpty()) { return response()->json(['status'=>1,'data'=>view('app.hardware.pad.interview.ajax_search_list', ['list'=>$list])->render()]); } return response()->json(['status'=>0]); } return view('app.hardware.pad.interview.search',['title'=>'人才搜索','params'=>$params,'list'=>$list]); } public function searchDown(Request $request) { $resume_id = $request->input('rid'); if (!$resume_id) { return response()->json(['status'=>0, 'msg'=>'请选择简历!']); } $rid = is_array($resume_id)?$resume_id:explode(",", $resume_id); $resume_num =count($rid); $user = auth('web-company')->user(); $member_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1'); if ($request->method() == 'POST') { $addarr['rid'] = $rid; $rst = $this->companyDownResumeService->addDownResume($addarr, $user, $member_setmeal); if (array_get($rst, 'status')==1) { if ($resume_num == 1) { if ($member_setmeal->download_resume > 0) { $this->membersSetmealService->actionUserSetmeal($user->id, 'download_resume', 2); //修改会员套餐信息中的下载简历数量 $log_value = '下载简历【'.array_get($rst, 'msg')->resume_name.'】(简历id:'.$addarr['rid'][0].'),消耗简历下载数:1,套餐剩余:'.($member_setmeal->download_resume-1); //添加会员日志 $member_log = array( 'uid' =>$user->id, 'utype' =>1, 'username' => $user->username, 'ip' => ip2long($request->getClientIp()), 'log_address'=>'本机地址' ); $this->feedbackService->addMembersLog($member_log, '1012', $log_value); } } } return response()->json($rst); } else { //判断是否开通会员服务 if (!$member_setmeal) { return response()->json(['status'=>0, 'msg'=>'您还没有开通服务,请开通!']); } //判断服务是否到期 if ($member_setmeal->expire == 1) { return response()->json(['status'=>0, 'msg'=>'您的服务已经到期,请重新开通!']); } //后台简历下载设置判断 if (config('aix.personal_set.per_set.resume_download_set.down_resume_limit') == 1) { //判断企业是否有通过审核的职位(已登录且有发布职位的企业) $jobs_num = $this->jobsService->getAuditJobsNum($user->id); if ($jobs_num==0) { return response()->json(['status'=>0, 'msg'=>'你没有发布职位或职位审核未通过导致无法下载简历!']); } } elseif (config('aix.personal_set.per_set.resume_download_set.down_resume_limit') == 3) { //判断是否是认证企业(已认证企业) $company_info = $this->companyService->getInfoById($user); if ($company_info && $company_info->audit != 1) { return response()->json(['status'=>0, 'msg'=>'你的营业执照未通过认证导致无法下载简历!']); } } if ($member_setmeal->download_resume_max > 0) { //判断当天简历下载数量是否已达上限 $downwhere = array( array('down_addtime','>=',strtotime('today')), array('down_addtime','<',strtotime('tomorrow')), array('company_uid','=',$user->id) ); $downnum = $this->companyDownResumeService->getCompanyDownResumeNum($downwhere); //获取当天企业已下载简历数 if ($resume_num>1 && $resume_num+$downnum > $member_setmeal->download_resume_max && $downnum < $member_setmeal->download_resume_max) { return response()->json(['status'=>0, 'msg'=>'您今天剩余的下载简历数量不足,请选择单个简历下载!']); } elseif ($downnum>= $member_setmeal->download_resume_max) { return response()->json(['status'=>0, 'msg'=>'您今天已下载 '.$downnum.' 份简历,已达到每天下载上限,请先收藏该简历,明天继续下载。']); } } $mode = 'setmeal'; if ($member_setmeal->download_resume == 0) { //套餐中简历下载数已用完 return response()->json(['status'=>0, 'msg'=>'您套餐中剩余的下载简历数量不足,请升级套餐后继续下载!']); } $view_data = array(); $free_time = $member_setmeal->download_resume; $view_data['free_time'] = $free_time; $view_data['resume_num'] = $resume_num; $view_data['resume_id'] = implode(",", $rid); $view_data['uid'] = $user->id; $view_data['is_free'] = $member_setmeal->is_free; $view_data['my_setmeal'] = $member_setmeal; $view_data['to_detail'] = $request->input('to_detail', ''); $max_discount = $this->setmealIncrementsService->getMaxDiscount('download_resume'); $view_data['max_discount'] = $max_discount?$max_discount:0; $view_data['mode'] = $mode; $html = view('mobile.app.content.resume.ajax_resume_download', $view_data)->render(); $return_data = array( 'status'=>1, 'html' => $html,'params'=>$view_data); return response()->json($return_data); } } public function manage(Request $request) { $user = auth('web-company')->user(); $status = $request->input('status',''); if($status == 1){ $where = [ 'jobfair_id'=>session('floorplan_stands.jobfair_id'), 'type'=>2, 'company_id'=>$user->id ]; }elseif($status == 2){ $where = [ 'type'=>0, 'company_id'=>$user->id ]; }else{ $where = [ 'company_id'=>$user->id ]; } $list = $this->viewDownApplyRepository->getResult($where); foreach($list as &$value) { //1.照片为空 //2.照片主动不显示 //3.照片审核不通过 //4.先审核后显示:照片不是审核通过的(不等于1) $avatar_default = public_data_path('/data/upload/resource/no_photo_female.png'); if ($value->resumes->memberInfos->sex == 1) { $avatar_default = public_data_path('/data/upload/resource/no_photo_male.png'); } if ($value->resumes->memberInfos->images == '' || $value->resumes->memberInfos->display_images == 2 || $value->resumes->memberInfos->photo_audit == 0 || (config('aix.personal_set.per_set.show_set.resume_img_display') == 1 && $value->resumes->memberInfos->photo_audit != 2)) { $value->resumes->photosrc = $avatar_default; //不显示 $value->resumes->photosrc_show = false; } else { $value->resumes->photosrc = upload_asset($value->resumes->memberInfos->images); //显示 $value->resumes->photosrc_show = true; } } $params = array('status'=>$status); if($request->ajax()) { if ($list->isNotEmpty()) { return response()->json(['status'=>1,'data'=>view('app.hardware.pad.interview.ajax_manage_list', ['list'=>$list])->render()]); } return response()->json(['status'=>0]); } return view('app.hardware.pad.interview.manage',['title'=>'简历管理','list'=>$list,'params'=>$params]); } public function manageDelete(Request $request) { $id = $request->id; $type = $request->type; $user = $this->getLoginUser(); if($type == 0) { $downResume = $this->companyDownResumeRepository->getDownResume(['id'=>$id]); if(!$downResume) { throw new ResponseException('参数错误!'); } if($downResume->company_uid != $user->id) { throw new ResponseException('抱歉,您只能操作自己的招聘会职位!'); } if($this->companyDownResumeRepository->delete($id)) { return response()->json(['status'=>1, 'msg'=>'删除成功']); } return response()->json(['status'=>0, 'msg'=>'删除失败']); }else { $this->jobfairPersonalJopApplyService->isComOwn($id,$user); if($this->jobfairPersonalJobsApplyRepository->delete(['id'=>$id])) { return response()->json(['status'=>1, 'msg'=>'删除成功']); } return response()->json(['status'=>0, 'msg'=>'删除失败']); } } }