CompanyDownResumeRepository = $CompanyDownResumeRepository; $this->ResumeRepository = $ResumeRepository; $this->jobsRepository = $jobsRepository; $this->memberPointRepository = $memberPointRepository; $this->personalJobsApplyRepository = $personalJobsApplyRepository; $this->memberSetmealRepository = $memberSetmealRepository; $this->memberLogRepository = $memberLogRepository; $this->memberHandselRepository = $memberHandselRepository; } public function getDownResume($data) { return $this->CompanyDownResumeRepository->getDownResume($data); } /** * 标注简历 * @param $id * @param $state * @return \Illuminate\Http\JsonResponse */ public function labelApply($id, $state) { if (!$id) { return response()->json(['status'=>0, 'msg'=>'请选择简历!']); } // $old_info = $this->CompanyDownResumeRepository->find($id); $r = false; DB::beginTransaction(); try { $data = [ 'is_reply'=>$state, ]; if (!$this->CompanyDownResumeRepository->companyLabelResume($id, $data)) { throw new ResponseException('标记失败!'); // return response()->json(['status'=>0, 'msg'=>'标记失败']); } //添加日志 DB::commit(); $user = auth('web-company')->user(); $statArr=["1"=>"合适","2"=>"不合适","3"=>"待定","4"=>"未接通"]; $this->memberLogRepository->createLog($user,1030,[$id,$statArr[$state]]); return response()->json(['status'=>1, 'msg'=>'标记成功','task'=>$r]); } catch (\Exception $e) { DB::rollback(); return response()->json(['status'=>0, 'msg'=>$e->getMessage()]); } } public function getCompanyDownResumeNum($where) { return $this->CompanyDownResumeRepository->getDownResumeNums($where); } //简历下载 public function addDownResume($addarr, $user, $member_setmeal) { if (!auth('web-company')->check()) { //检测是否是企业账号 return array('status'=>0,'msg'=>'必须是企业会员才可以下载简历!'); } if ($user->user_status != 1) { //检测企业账号是否正常 return array('status'=>0,'msg'=>'您的账号处于暂停状态,请联系管理员设为正常后进行操作!'); } if (!$addarr['rid']) { //检测是否选择了简历 return array('status'=>0,'msg'=>'请选择简历!'); } $resume_num = count($addarr['rid']); if (config('aix.personal_set.per_set.resume_download_set.down_resume_limit') == 1) { //检测是否有通过审核的职位 //获取通过审核的职位数量 $where = array( array('company_id','=',$user->id), array('valid','=','1'), array('display','=','1') ); if (config('aix.companyset.comset.show_set.jobs_display') == 1) { $where[] = array('audit','=', '1'); } else { $where[] = array('audit','<>', '3'); } $jobs = $this->jobsRepository->getOtherJobsCount($where); if (count($jobs) == 0) { return array('status'=>0,'msg'=>'你没有发布职位或职位审核未通过导致无法下载简历!'); } } elseif (config('aix.personal_set.per_set.resume_download_set.down_resume_limit') == 3) { //判断企业是否认证通过 if ($user->audit != 1) { return array('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->getCompanyDownResumeNum($downwhere); if ($downnum >= $member_setmeal->download_resume_max) { return array('status'=>0,'msg'=>'您今天已下载 '.$downnum.' 份简历,已达到每天下载上限,请先收藏该简历,明天继续下载。'); } } //积分下载时判断积分数量是否足够 if ($member_setmeal->download_resume <=0) { $members_points = $this->memberPointRepository->getPointsById($user->id, '1'); if ($members_points->points < config('aix.companyset.comsume.comsume_set.download_resume_price')*config('aix.companyset.points.points_set.payment_rate')*$resume_num) { return array('status'=>0,'msg'=>"你的积分不足,不能下载简历!"); } } if ($resume_num > 1) { //多个简历批量下载 return $this->addDownResumeBatch($addarr['rid'], $user, $member_setmeal); } else { //单个简历是单个现在 return $this->addDownResumeOne($addarr, $user, $member_setmeal); } } //批量下载简历 public function addDownResumeBatch($rid, $user, $setmeal) { $num = 0; $down_where = array( 'company_uid' => $user->id ); $down_where_In = array('resume_id'=>$rid); $down_rst = $this->CompanyDownResumeRepository->getDowmResumes($down_where, $down_where_In); if ($down_rst) { foreach ($rid as $key => $value) { if (array_has($down_rst, $value)) { unset($rid[$key]); //过滤已下载的简历 } } } if ($rid && $setmeal->show_apply_contact == 0 && $user->id) { $apply_where = array( 'company_uid' => $$user->id ); $apply_where_In = array('resume_id'=>$rid); $rst = $this->personalJobsApplyRepository->getApplies($apply_where, $apply_where_In); if ($rst) { foreach ($rid as $key => $value) { if (array_has($rst, $value)) { unset($rid[$key]); //过滤已申请大当前企业职位的简历 } } } } if ($rid) { //获取简历信息 $resume_arr = $this->ResumeRepository->getResumesWithInfo($rid); $company = $this->companyRepository->getCompanyInfo(array('id'=>$user->id)); $setmeal_download_resume = $setmeal->download_resume; if ($resume_arr->toArray()) { foreach ($resume_arr as $key => $value) { $memberInfo = $value->memberInfos; $addarr['resume_id'] = $value->id; //套餐信息 //获取简历名称 if ($memberInfo->display_name == "2") { $addarr['resume_name'] = "N" . str_pad($value->id, 7, "0", STR_PAD_LEFT); } elseif ($memberInfo->display_name == "3") { if ($memberInfo->sex == 1) { $addarr['resume_name'] = cut_str($memberInfo->realname, 1, 0, "先生"); } elseif ($memberInfo->sex == 2) { $addarr['resume_name'] = cut_str($memberInfo->realname, 1, 0, "女士"); } } else { $addarr['resume_name'] = $memberInfo->realname; } $addarr["resume_uid"]=$value->uid; $addarr["company_uid"]=$company->id; $addarr["company_name"]=$company->companyname; $addarr['down_addtime'] = time(); $addarr['is_reply'] = 0; $info = $this->CompanyDownResumeRepository->create($addarr); if ($info) { //如果套餐简历下载数大于0,则修改 if ($setmeal_download_resume > 0) { $this->memberSetmealRepository->decrementData(array('uid'=>$user->id), 'download_resume', 1); $this->memberLogRepository->createLog($user, '1012', array($value->id,'消耗简历下载数:1,套餐剩余:'.($setmeal_download_resume-1),'')); $setmeal_download_resume = $setmeal_download_resume -1 ; } else { //修改会员积分 $point = config('aix.companyset.comsume.comsume_set.download_resume_price')*config('aix.companyset.points.points_set.payment_rate'); $p_rst = $this->memberPointRepository->reportDeal($user->id, $user->utype, 2, $point); if ($p_rst) { $this->memberLogRepository->createLog($user, '1012', array($value->id,'消耗积分:'.$point,'')); $stime = date('Y-m-d H:i:s', time()); $handsel['uid'] = $user->id; $handsel['utype'] = $user->utype; $handsel['htype'] = 'download_resume'; $handsel['htype_cn'] = '下载简历'; $handsel['operate'] = 2; $handsel['points'] = $point; $this->memberHandselRepository->create($handsel); } } $num++; } } } } if ($num>0) { return array('status'=>1,'msg'=>'成功下载'.$num.'份简历!'); } else { return array('status'=>0,'msg'=>'下载失败!'); } } //下载单个下载简历 public function addDownResumeOne($addarr, $user, $setmeal) { $add_arr['resume_id'] = $addarr['rid'][0]; //检测是否下载过简历 $down_where = array( 'resume_id' => $add_arr['resume_id'], 'company_uid' => $user->id ); $down_info = $this->CompanyDownResumeRepository->getDownResume($down_where); if ($down_info) { return array('status'=>0,'msg'=>"您已经下载过此简历了!"); } //检测会员套餐中收到的简历是否可以免费查看,免费查看时不需要下载 if ($setmeal->show_apply_contact == 1) { //检测是否申请过职位 $has = $this->personalJobsApplyRepository->checkJobsApply($add_arr['resume_id'], $user->id); if ($has) { //return array('status'=>0,'msg'=>'简历联系方式可见,您无需下载此简历!'); return array('status'=>0,'msg'=>'当前用户的其它简历已下载,您无需下载此简历!'); } } //获取简历信息、简历用户信息,用于处理简历名称 $resumeInfo = $this->ResumeRepository->getResumeById($add_arr['resume_id']); $user_info = $resumeInfo->memberInfos; if ($user_info->display_name == 2) { $add_arr['resume_name'] = "N".str_pad($resumeInfo->id, 7, "0", STR_PAD_LEFT); } elseif ($user_info->display_name == 3) { if ($user_info->sex==1) { $add_arr['resume_name'] = cut_str($user_info->realname, 1, 0, "先生"); } elseif ($user_info->sex==2) { $add_arr['resume_name'] = cut_str($user_info->realname, 1, 0, "女士"); } } else { $add_arr['resume_name'] = $user_info->realname; } $stime1 = time(); $stime2 = date('Y-m-d H:i:s', $stime1); $add_arr["resume_uid"]=$resumeInfo->uid; $add_arr["company_uid"]=$user->id; $add_arr["company_name"]=$user->companyname; $add_arr['down_addtime'] = $stime1; $add_arr['is_reply'] = 0; $add_arr['created_at'] = $stime2; $add_arr['updated_at'] = $stime2; $info = $this->CompanyDownResumeRepository->create($add_arr); return array('status'=>1,'msg'=>$info); } public function getDownResumes($where) { return $this->CompanyDownResumeRepository->getDowmResumes($where); } public function getLimitDownResumes($limit) { $order_by = array( 'down_addtime' => 'desc' ); $rst = $this->CompanyDownResumeRepository->getDownResumes(array(), $order_by, $limit); return $rst; } //当投递简历成功时,插入记录 public function addDownResumes($company_id,$resume_id) { //判断企业套餐是否允许查看 $setmeal = $this->memberSetmealRepository->getSetmealByUid($company_id,1); $downResume = $this->CompanyDownResumeRepository->getDownResume(['resume_id'=>$resume_id,'company_uid'=>$company_id]); if($setmeal && $setmeal->show_apply_contact == 1 && !$downResume){ $resume_info = $this->ResumeRepository->getResumeById($resume_id); $down_data = array( 'resume_id' => $resume_id, 'resume_name' => $resume_info->title, 'resume_uid' => $resume_info->uid, 'company_uid' => $company_id, 'company_name' => getCompanyName($company_id)->companyname, 'down_addtime' => time(), 'is_reply' => 0 ); $this->CompanyDownResumeRepository->create($down_data); } } //判断下载的简历是否是已下载简历 public function isOwn($y_id,$user,$column) { $idsArr = $this->CompanyDownResumeRepository->getPluck(['company_uid'=>$user->id],$column)->toArray(); if(array_diff($y_id,$idsArr)) { throw new ResponseException('参数错误!'); } } }