companyRepository = $companyRepository; $this->jobsRepository = $jobsRepository; $this->oauthRepository = $oauthRepository; $this->taskService = $taskService; $this->personalJobsApplyRepository = $personalJobsApplyRepository; $this->personFocusComRepository = $personFocusComRepository; $this->companyRepository = $companyRepository; $this->companyImgRepository = $companyImgRepository; $this->categoryRepository = $categoryRepository; $this->memberSetmealRepository = $memberSetmealRepository; $this->categoryDistrictRepository = $categoryDistrictRepository; $this->companyStatisticsRepository = $companyStatisticsRepository; $this->taskLogRepository = $taskLogRepository; $this->memberPointRepository = $memberPointRepository; $this->companyInterviewRepository = $companyInterviewRepository; $this->memberLogRepository = $memberLogRepository; $this->pmsRepository = $pmsRepository; $this->memberMsgtipRepository = $memberMsgtipRepository; $this->msgRepository = $msgRepository; $this->subsiteRepository = $subsiteRepository; $this->thirdloginRepository = $thirdloginRepository; $this->companyContactRepository = $companyContactRepository; } /** * 企业会员中心页 * @return array */ public function index($user) { $myPoints =$this->memberPointRepository->getPointsOne($user->id, $user->utype); //我的积分 $mySetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, 1); //套餐临近到期提醒 $setmealMsg = ''; session(["setmeal_message"=>""]); if ($mySetmeal->endtime !=0) { $days = (strtotime($mySetmeal->endtime) - time())/86400; $meal_min_remind = config('aix.companyset.setmeal_com.setmeal_com_set.meal_min_remind'); if ($meal_min_remind > 0 && $days <= $meal_min_remind) { $setmealMsg = "提醒:您的套餐快到期,为避免造成不必要的麻烦,请升级套餐"; } if (strtotime($mySetmeal->endtime)endtime!=0) { $setmealMsg = "提醒:您的套餐已到期,请及时到我的套餐处升级套餐"; } session(["setmeal_message"=>$setmealMsg]); } //招聘中的职位数 $condition = [ 'company_id'=>$user->id, 'valid'=>1, 'display'=>1, ]; if (config('aix.companyset.comset.show_set.jobs_display') == 1) { $condition[] =['audit','=', 1]; } else { $condition[] = ['audit', '<>', 3]; } $jobsing = $this->jobsRepository->getJobCount($condition); //待处理简历 $condition1 = [ 'is_reply'=>0, 'company_id'=>$user->id, ]; $resumes = $this->personalJobsApplyRepository->resumesCount($condition1); //面试邀请 $condition2 = [ 'company_id'=>$user->id, 'result'=>0, ]; $interview = $this->companyInterviewRepository->interviewCount($condition2); //谁关注我 $condition3 = [ 'company_id' => $user->id, ]; $concern = $this->personFocusComRepository->getFansCount($condition3); //我的消息 /* $condition4 = [ 'msgtouid' => $user->id, 'utype' => $user->utype, 'new' => 1, ]; $pms = $this->pmsRepository->getPmsCount($condition4);*/ //是否已签到 $isSign = $this->taskLogRepository->getTaskLogCount($user->id, 18, $user->utype); $res = [ 'week'=>array('日','一','二','三','四','五','六'), 'mypoints'=>$myPoints, 'user'=>$user, 'jobsing'=>$jobsing, 'resumesCount'=>$resumes, 'interview'=>$interview, 'isSign'=>$isSign, 'concern'=>$concern, /* 'pms'=>$pms,*/ 'mySetmeal'=>$mySetmeal, 'setmealMsg'=>$setmealMsg, ]; return $res; } public function ajaxSms($user) { //获取当天 //当天开始时间 $start_time=strtotime(date("Y-m-d", time())); //当天结束之间 $end_time=$start_time+60*60*24; $condit[] = ['new', 1]; $condit[] = ['msgtouid', $user->id]; $condit[] = ['utype', $user->utype]; $condit[] = ['msgtype', 2]; $condit[] = ['msgfromuid', 0]; $condit[] = ['msgfrom','admin']; /*$condit[] = ['started_at', '<=', time()]; $condit[] = ['ended_at', '>=', time()];*/ $condit[] = ['started_at', '<=', $start_time]; $condit[] = ['ended_at', '>=', $start_time]; $message = $this->pmsRepository->findFirstPms($condit);; $info = ''; $id = ''; if ($message) { $order=array("\r\n","\n","\r"); $replace='
'; $info = $message->message; $id = $message->id; } return ['message'=>$info,'id'=>$id]; } public function setMatchJob($data, $company) { $job_id = array_get($data, 'job_id'); $type = array_get($data, 'type'); $jids = session('match_jobs_'.$company->id, array()); if ($jids) { $jids[] = $job_id; } else { $jids = array($job_id); } if ($job_id) { session(['match_jobs_'.$company->id => $jids]); } //判断当前企业是否有其它职位,如果没有则清空过滤的session $job = $this->getMatchJob($company); if (!$job) { session([ 'match_jobs_'.$company->id=>null]); } } //获取推荐简历需要匹配的职位 public function getMatchJob($company) { $job_where = array( array('company_id','=',$company->id), array('valid','=',1), array('deadline','>=',time()) ); if (config('aix.companyset.comset.show_set.jobs_display')==1) { $job_where[] = array('audit','=',1); } else { $job_where[] = array('audit','<>',3); } //排除已推荐过的职位 $has_jids = session('match_jobs_'.$company->id, array()); $where_notIn = array(); if ($has_jids) { $where_notIn = ['id'=>$has_jids]; } $orderby = array('stime'=>'DESC','refresh_time'=> 'DESC','click'=>'DESC'); $jobinfo = $this->jobsRepository->getMatchJob($job_where, $where_notIn, $orderby); if ($jobinfo) { return $jobinfo; } else { return array(); } } //获取推荐简历排序 public function getRecommendOrder($user = array()) { $order = array(); $order = array('click'=>'desc','stime'=>'desc','updated_at'=> 'desc'); return $order; } public function getRecommendWhere($user) { $where = array(); if ($user && $user->utype == 1) { //获取发布中的职位 $job_where = array( array('company_id','=',$user->id), array('valid','=',1), array('deadline','>=',time()) ); if (config('aix.companyset.comset.show_set.jobs_display')==1) { $job_where[] = array('audit','=',1); } else { $job_where[] = array('audit','<>',3); } $orderby = array('stime'=>'DESC','refresh_time'=> 'DESC','click'=>'DESC'); $jobs = $this->jobsRepository->fliterJobs($job_where, array(), $orderby); if ($jobs->isNotEmpty()) { $or_where = array(); foreach ($jobs as $k => $v) { $or_where[] = $this->getRecommendResumeWhere($v); } $and_where[] = array('display','=',1); if (config('aix.personal_set.per_set.show_set.resume_display') == 1) { $and_where[] = array('audit','=',2); } else { $and_where[] = array('audit','<>',0); } $where['or'] = $or_where; } return $where; } else { $where[] = array('display','=',1); if (config('aix.personal_set.per_set.show_set.resume_display') == 1) { $where[] = array('audit','=',2); } else { $where[] = array('audit','<>',0); } return $where; } } //获取推荐简历 public function getRecommendResumeWhere($job) { $where = array(); //简历公开、简历审核状态、默认简历通过审核 $where[] = array('display','=',1); //$where[] = array('def','=',1); if (config('aix.personal_set.per_set.show_set.resume_display') == 1) { $where[] = array('audit','=',2); } else { $where[] = array('audit','<>',0); } if (auth('web-company')->check()) { //获取企业信息 $company = auth('web-company')->user(); if ($job) { //匹配年龄、工作性质、期望行业、期望职位、工作地区、期望薪资 //匹配学历 $education = $job->education; if ($education) { $where[] = array('education','>=',$education); } //匹配工作经验 $experience = $job->experience; if ($experience) { $where[] = array('experience','>=',$experience); } //匹配性别 $sex = $job->sex; if ($sex) { $where[] = array('sex','=',$sex); } //匹配年龄 $age = $job->age; if (array_get($age, 0) || array_get($age, 1)) { if (is_numeric(array_get($age, 0))) { $birthday_min = date("Y") - $age[0]; $where[] = array('member_infos.birthday','<=',$birthday_min); } if (is_numeric(array_get($age, 1))) { $birthday_max = date("Y") - $age[1]; $where[] = array('member_infos.birthday','>=',$birthday_max); } } //匹配工作性质 $nature = $job->nature; $where[] = array('nature','=',$nature); //匹配期望行业 /*$trade = $company->trade; $where[] = array('trade','=',$trade);*/ //匹配工作地区 - 判断三级地区是否存在,如果不存在则判断二级地区 $district = $job->district; if ($district) { if (!strpos($district, ".")) { $where[] = array('district','=',$district); } else { $district_arr = explode('.', $district); if (array_has($district_arr, 2) && array_get($district_arr, 2)>0) { $where[] = array('district','=',$district_arr[2]); } else { $where[] = array('district','=',$district_arr[1]); } } } //匹配期望薪资 if ($job->wage >= -1) { $where[] = array('wage_min','>=',$job->wage_min); $where[] = array('wage_max','<=',$job->wage_max); } //期望职位 - intention_jobs_id $category = $job->category; if ($category) { $where[] = array('intention_jobs_id','=',$category); } } } $where[] = array('subsite_ids','=',get_subsite_id()); return $where; } public function ajaxGetStatistics($request, $user) { $where['company_id'] = $user->id; $type = $request['type']?$request['type']:'visitor'; switch ($type) { case 'visitor': $where['apply'] = 0; break; case 'apply': $where['apply'] = 1; break; case 'viewjobs': $where['apply'] = 0; $where[] = ['job_id','>', 0]; break; } $settr = $request['settr']?$request['settr']:7; $today = date('Y-m-d'); $where[] = ['created_at', '<', $today]; if ($settr>0) { $settr_tmp = strtotime($today)-$settr*3600*24; $where[] = ['created_at', '>=', date('Y-m-d H:i:s', $settr_tmp)]; $where[] = ['created_at', '<',$today]; } $category = []; $set_total = $set_login = []; for ($i=$settr_tmp; $i < strtotime($today); $i=$i+3600*24) { $category[] = date('Y-m-d', $i); $set_total[$i] = 0; $set_login[$i] = 0; } $uidArr = []; $statistics_list = $this->companyStatisticsRepository->findWhere($where); foreach ($statistics_list as $key => $value) { if ($value['uid']>0) { $set_login[strtotime(date('Y-m-d', strtotime($value['created_at'])))]++; } $set_total[strtotime(date('Y-m-d', strtotime($value['created_at'])))]++; } $line_xml = ''; $line_xml.= ''; foreach ($category as $key => $value) { $line_xml.= ''; } $line_xml.= ''; if ($where['apply']==1) { $line_xml.= ''; foreach ($set_login as $key => $value) { $line_xml.= ''; } $line_xml.= ''; } else { $line_xml.= ''; foreach ($set_total as $key => $value) { $line_xml.= ''; } $line_xml.= ''; $line_xml.= ''; foreach ($set_login as $key => $value) { $line_xml.= ''; } $line_xml.= ''; } $line_xml.= ''; $res = [ 'line_xml'=>$line_xml, ]; return response()->json(['data'=>view('app.company.ajax.ajax_statistics', $res)->render()]); } public function mobileCompanySave($data,$user) { $id = $data['id']; $updateData['short_name'] = $data['short_name']; $updateData['nature'] = $data['nature']; $updateData['scale'] = $data['scale']; $updateData['trade'] = $data['trade']; $updateData['district'] = $data['district']; $updateData['district_cn'] = get_district_cn($data['district']); $updateData['contents'] = $data['contents']; $updateData['address'] = $data['address']; $updateData['contact'] = $data['contact']; $updateData['mobile'] = $data['mobile']; $updateData['email'] = $data['email']; $updateData['map_x'] = $data['map_x']?$data['map_x']:0; $updateData['map_y'] = $data['map_y']?$data['map_y']:0; $updateData['map_zoom'] = $data['map_zoom']?$data['map_zoom']:0; $updateData['tag'] = explode(',', $data['tag']); $updateData['landline_tel'] = $data['landline_tel_first'].'-'.$data['landline_tel_next'].'-'.$data['landline_tel_last']; !empty($data['landline_tel_first']) ? $updateData['landline_tel']=$data['landline_tel_first'] : $updateData['landline_tel']=""; !empty($data['landline_tel_next']) ? $updateData['landline_tel']=$updateData['landline_tel']."-".$data['landline_tel_next'] : "" ; !empty($data['landline_tel_last']) ? $updateData['landline_tel']=$updateData['landline_tel']."-".$data['landline_tel_last']: ""; $updateData['organization_code'] = $data['organization_code']; $updateData['unit_character'] = $data['unit_character']; $updateData['unit_character_cn'] = get_category($data['unit_character']); $updateData['industry'] = $data['industry']; $updateData['industry_cn'] = get_category($data['industry']); $updateData['economy'] = $data['economy']; $updateData['economy_cn'] = get_category($data['economy']); $company_audit = $this->companyRepository->find($id, ['audit']); if ($company_audit->audit !=0) { if (config('aix.companyset.audit.audit_type.audit_edit_com') !=1) { $updateData['audit'] = 2; } } DB::beginTransaction(); try { if (!$this->companyRepository->companySave($updateData, $user->id)) { throw new \Exception('企业信息修改失败'); } event_search_update(Company::class, (string)$id, 'update'); DB::commit(); $taskid = 27; $dotask = $this->taskService->doTask($taskid, $id, 1); if ($updateData['map_x'] && $updateData['map_y']) { $this->taskService->doTask(29, $id, 1); } if ($dotask['code']) { $html = view('app.company.ajax.ajax_com_info_saved', ['points'=>$dotask['data']['points']])->render(); return ['status'=>1,'msg'=>'企业信息修改成功', 'html'=>$html, 'data'=>$dotask['data']['points']]; } else { $html = view('app.company.ajax.ajax_com_info_saved')->render(); return ['status'=>1,'msg'=>'企业信息修改成功', 'html'=>$html, 'data'=>'']; } } catch (\Exception $e) { DB::rollback(); return ['status'=>0,'msg'=>$e->getMessage()]; } } /** * @param $data * @return array * @throws \Throwable */ public function companySave($data, $user) { if($data['legal_idcard'] && !isCreditNo($data['legal_idcard'])){ return ['status'=>0,'msg'=>'法人代表身份证格式不正确']; } if(empty($data['address'])){ return ['status'=>0,'msg'=>'联系地址不能为空']; } $apiAddress = apiAddress($data['address']); if (!$apiAddress) { return ['status'=>0,'msg'=>'联系地址定位不准确']; } $id = $user->id; $updateData['nature'] = $data['nature']; $updateData['scale'] = $data['scale']; $updateData['trade'] = $data['trade']; $updateData['registered'] = $data['registered']; $city = getCityInfo($data['district']); $updateData['district'] = $city['district']; $updateData['district_cn'] = $city['district_cn_all']; $updateData['website'] = $data['website']; $updateData['currency'] = $data['currency']; $updateData['contents'] = $data['contents']; $updateData['address'] = $data['address']; $updateData['contact'] = $data['contact']; $updateData['mobile'] = $data['mobile']; $updateData['email'] = $data['email']; $updateData['legal'] = $data['legal']; $updateData['legal_idcard'] = $data['legal_idcard']; $updateData['qq'] = $data['qq']?$data['qq']:''; $updateData['map_x'] = $apiAddress['lng']; $updateData['map_y'] = $apiAddress['lat']; $updateData['map_zoom'] = $data['map_zoom']?$data['map_zoom']:0; $updateData['contact_show'] = $data['contact_show']; $updateData['telephone_show'] = $data['telephone_show']; $updateData['email_show'] = $data['email_show']; $updateData['landline_tel_show'] = $data['landline_tel_show']; $updateData['tag'] = explode(',', $data['tag']); !empty($data['landline_tel_first']) ? $updateData['landline_tel']=$data['landline_tel_first'] : $updateData['landline_tel']=""; !empty($data['landline_tel_next']) ? $updateData['landline_tel']=$updateData['landline_tel']."-".$data['landline_tel_next'] : "" ; !empty($data['landline_tel_last']) ? $updateData['landline_tel']=$updateData['landline_tel']."-".$data['landline_tel_last']: ""; $updateData['logo'] = $data['logo']; $updateData['short_name'] = $data['short_name']; $updateData['organization_code'] = $data['organization_code']; $company_audit = $this->companyRepository->find($id, ['audit']); if ($company_audit->audit !=0) { if (config('aix.companyset.audit.audit_type.audit_edit_com') !=1) { $updateData['audit'] = 2; } } $jobsData['map_x'] = $data['map_x']; $jobsData['map_y'] = $data['map_y']; $jobsData['map_zoom'] = $data['map_zoom']?$data['map_zoom']:''; DB::beginTransaction(); try { if($data['sync']==1){ $jobs_id = Jobs::where(['company_id'=>$user->id])->pluck('id')->toArray(); $contact = []; if($jobs_id){ $contact['telephone'] = $data['mobile']; $contact['email'] = $data['email']; $contact['contact'] = $data['contact']; $contact['qq'] = $data['qq']; $contact['landline_tel'] = $updateData['landline_tel']; $contact['address'] = $data['address']; $contact['contact_show'] = $data['contact_show']; $contact['telephone_show'] = $data['telephone_show']; $contact['email_show'] = $data['email_show']; $contact['landline_tel_show'] = $data['landline_tel_show']; JobsContact::whereIn('job_id',$jobs_id)->update($contact); } } if (!$this->companyRepository->companySave($updateData, $id)) { throw new \Exception('企业信息修改失败'); } if (!$this->jobsRepository->getJobsByUid($id)->isEmpty()) { if (!$this->jobsRepository->updateMap($id, $jobsData)) { throw new \Exception('修改联系方式同步到职位失败!'); } } event_search_update(Company::class, (string)$id, 'update'); DB::commit(); if ($jobsData['map_x'] && $jobsData['map_y']) { $this->taskService->doTask(29, $id, 1); } $taskid = 27; $dotask = $this->taskService->doTask($taskid, $id, 1); $user = auth('web-company')->user(); $this->memberLogRepository->createLog($user,1004,""); if ($dotask['code']) { $html = view('app.company.ajax.ajax_com_info_saved', ['points'=>$dotask['data']['points']])->render(); return ['status'=>1,'msg'=>'企业信息修改成功', 'html'=>$html, 'data'=>$dotask['data']['points']]; } else { $html = view('app.company.ajax.ajax_com_info_saved')->render(); return ['status'=>1,'msg'=>'企业信息修改成功', 'html'=>$html, 'data'=>'']; } } catch (\Exception $e) { DB::rollback(); return ['status'=>0,'msg'=>$e->getMessage()]; } } /**保存logo * @param $request * @return \Illuminate\Http\JsonResponse * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function saveLogo($request, $user) { $logo = $request['logo']; $companyInfo=$this->companyRepository->getCompanyInfoByID($user->id); //就是重新认证 if (config('aix.companyset.audit.audit_type.audit_edit_com')==2){ if (!empty($companyInfo->certificate_img)){//只要企业的营业执照不为空,那企业就是未认证 $data['audit']=2; }else{ $data['audit']=0; } } $data['logo']=$logo; if (!$this->companyRepository->companySave($data, $user->id)) { return response()->json(['status'=>0,'msg'=>"LOGO保存失败!"]); } $dotask = $this->taskService->doTask(19, $user->id, 1); if ($dotask['code']) { return response()->json(['status'=>1,'msg'=>"LOGO保存成功!",'data'=>['path'=>upload_asset($logo),'points'=>$dotask['data']['points']]]); } else { return response()->json(['status'=>1,'msg'=>"LOGO保存成功!",'data'=>['path'=>upload_asset($logo)]]); } } /**删除logo * @return \Illuminate\Http\JsonResponse * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function logoDel($user) { $data['logo'] = ''; if (!$this->companyRepository->companySave($data, $user->id)) { return response()->json(['status'=>0,'msg'=>"LOGO删除失败!"]); } return response()->json(['status'=>1,'msg'=>"LOGO删除成功!"]); } /** * 企业资料页面 * @return array * @throws ResponseException */ public function companyInfo($user) { $companyInfo = $this->companyRepository->getCompanyInfoByID($user->id); if ($companyInfo->subsite_id) { $subsiteInfo = $this->subsiteRepository->find($companyInfo->subsite_id); } else { $subsiteInfo = ''; } $companyInfo->subsite_name = $subsiteInfo?$subsiteInfo->sitename:'总站'; //企业性质 $companyType = Category::categoryType('AIX_company_type'); //企业规模 $scale = Category::categoryType('AIX_scale'); //企业行业 $trade = Category::categoryType('AIX_trade'); //单位性质 $unit_character = Category::categoryType('AIX_dwxz'); $industry = Category::categoryType('AIX_cylb'); $economy = Category::categoryType('AIX_jjlx'); if ($jump_certificate = config('aix.companyset.audit.checkset.login_com_audit_certificate')==1 && $companyInfo->audit==0) { $jump_certificate= 1; } else { $jump_certificate= 0; } $res = [ 'companyInfo' => $companyInfo, 'companyType' => $companyType, 'scale' =>$scale, 'trade' =>$trade, 'unit_character' =>$unit_character, 'industry' =>$industry, 'economy' =>$economy, 'jump_certificate'=>$jump_certificate, ]; return $res; } /** * 获取企业基本信息 * @return mixed * @throws ResponseException */ public function getInfoById($user) { return $this->companyRepository->getCompanyInfoByID($user->id); } /** * 获取企业基本信息 * @return mixed * @throws ResponseException */ public function getCompInfo($id) { $where = ['id'=>$id]; return $this->companyRepository->getCompanyInfo($where); } /** * 账号安全 * @return array * @throws ResponseException */ public function companySecurity($user) { $companyInfo = $this->companyRepository->getCompanyInfoByID($user->id); $thirdBindQq = $this->thirdloginRepository->checkBind($user, ['1']); //qq $thirdBindWechat = $this->thirdloginRepository->checkBind($user, ['2','3','4']); //微信 $isBind_qq = 0; $isBind_weixin = 0; if ($thirdBindQq) { $isBind_qq = 1; } if ($thirdBindWechat) { $isBind_weixin = 1; } $res = [ 'companyInfo' => $companyInfo, 'qq'=>$isBind_qq, 'weixin'=>$isBind_weixin, ]; return $res; } public function unBindThird($alias, $user) { $type = []; switch ($alias) { case 'qq': $type = ['1']; break; case 'weixin': $type = ['2','3','4']; break; } if (!$type) { return response()->json(['status'=>0,'msg'=>"参数错误"]); } if (!$this->thirdloginRepository->checkBind($user, $type)) { return response()->json(['status'=>0,'msg'=>"参数错误"]); } if ($this->thirdloginRepository->unBind($type, $user)) { return response()->json(['status'=>1, 'msg'=>"解绑成功!"]); } return response()->json(['status'=>0, 'msg'=>"解绑失败!"]); } /** * 修改用户名 * @param $request * @return bool * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function saveUsername($username, $user) { if (!$this->companyRepository->save(['username'=>$username], $user->id)) { return false; } return true; } public function modifyUserName($user) { return $this->companyRepository->getCompanyColumn($user->id, ['username']); } /** * 修改密码 * @param $oldpassword * @param $pwd * @param $pwd1 * @return bool * @throws ResponseException * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function savePwd($user, $oldpassword, $pwd, $pwd1) { $com_info = $this->companyRepository->getCompanyColumn($user->id, ['password']); if (!Hash::check($oldpassword, $com_info['password'])) { throw new ResponseException('原密码不正确!'); } if ($oldpassword == $pwd) { throw new ResponseException('新密码与原密码一致!'); } if ($pwd!= $pwd1) { throw new ResponseException('新密码与确认密码不一致'); } if (!$this->companyRepository->save(['password'=>bcrypt($pwd)], $user->id)) { return false; } return true; } /** * 验证手机 * @return mixed */ public function authMobile($user) { return $this->companyRepository->getCompanyColumn($user->id, ['mobile','mobile_audit']); } public function checkMobileAudit($id, $mobile) { return $this->companyRepository->findByField(['id'=>$id, 'mobile'=>$mobile, 'mobile_audit'=>1]); } /** * 认证手机 * @param $request * @return \Illuminate\Http\JsonResponse */ public function verifyCode($mobile, $user) { $data['mobile'] = $mobile; $data['mobile_audit'] = 1; if (!$this->companyRepository->verifyCode($data, $user->id)) { return ['status'=>0,'msg'=>'手机认证失败']; } $taskRes = $this->taskService->doTask(22, $user->id, 1); if (!$taskRes['code']) { return ['status'=>1,'msg'=>'你的手机已经通过验证!']; } return ['status'=>1,'msg'=>'你的手机已经通过验证','data'=>$taskRes['data']]; } /** * 验证email * @return mixed */ public function authEmail($user) { return $this->companyRepository->getCompanyColumn($user->id, ['email', 'email_audit']); } public function checkEmailAudit($id, $email) { return $this->companyRepository->findByField(['id'=>$id, 'email'=>$email, 'email_audit'=>1]); } /** * 企业登录日志 * @return mixed */ public function companyLoginLog($user) { return $this->memberLogRepository->getMemberLog($user->id, 1, 1001); } /** * @param $request * @return mixed * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function certificate($certificate_img_up, $user) { $data['audit'] = 2; $data['certificate_img'] = $certificate_img_up; if (!$this->companyRepository->save($data, $user->id)) { return response()->json(['status'=>0, 'msg'=>'营业执照保存失败']); } //写入日志 $this->memberLogRepository->createLog($user,1005,""); return response()->json(['status'=>1, 'msg'=>'营业执照保存成功']); } //获取企业详细信息页面内容 public function getCompanyInfo($where) { $where[] = array('user_status','=',1); //获取企业信息 $company = $this->companyRepository->getCompanyInfo($where); if (!$company) { throw new ResponseException('企业不存在', [], 404); } //处理企业地址和介绍、logo $company->company_url = route(url_rewrite('AIX_companyshow'), array('id'=>$company->id)); $company->company_profile=htmlspecialchars_decode($company->contents, ENT_QUOTES); if ($company->logo) { $company->logo=upload_asset($company->logo); } else { $company->logo = public_data_path('data/upload/no_logo.png'); } //简历处理率、统计近两周企业简历处理率、如果收到的简历是0份,则简历处理率为0% $app_where[] = array('company_id','=',$company->id); $app_where[] = array('created_at','>',date('Y-m-d H:i:s', strtotime("-14day"))); $apply = $this->personalJobsApplyRepository->getJobsApply($app_where); $reply = 0; $reply_time = 0; foreach ($apply as $key => $val) { if ($val->is_reply) { $reply++; $val['reply_time'] && $reply_time += $val->reply_time - strtotime($val->created_at); } } if ($apply->toArray()) { $company->reply_ratio = intval($reply / count($apply) * 100); if ($reply_time) { $company->reply_time = sub_day(intval($reply_time / count($apply)), 0); } else { $company->reply_time = '0天'; } } else { $company->reply_ratio = 0; $company->reply_time = '0天'; } //登录时间 if (!$company->last_login_time) { $company->last_login_time = '未登录'; } else { $company->last_login_time = date('Y-m-d H:i', $company->last_login_time); } //获取在招职位信息(职位显示规则) $jobs_display = config('aix.companyset.comset.show_set.jobs_display'); $job_count_map = array(array('company_id','=',$company->id),array('valid','=',1),array('display','=',1)); if ($jobs_display == 1) { $job_count_map[] = array('audit','=','1'); } else { $job_count_map[] = array('audit','<>','3'); } $jobs_count = $this->jobsRepository->getJobsCount($job_count_map); $company->jobs_count = $jobs_count; //企业网址 if ($company->website) { $company->website_ = $company->website; if ((strstr($company->website, "http://") === false) && (strstr($company->website, "https://") === false)) { $company->website = "http://".$company->website; } else { if (strstr($company->website, "http://") === false) { $company->website_ = str_replace("https://", "", $company->website_); } else { $company->website_ = str_replace("http://", "", $company->website_); } } } //获取粉丝数量 $fan_where = array('company_id'=>$company->id); $fans = $this->personFocusComRepository->getFansCount($fan_where); $company->fans = $fans; $company->preview = 0; if (auth('web-company')->check()) { if (auth('web-company')->user()->id == $company->id) { $company->preview = 1; } } $company->focus = 0; //个人用户登录时判断是否关注过当前企业 if (auth('web-member')->check()) { $focus_where = array( 'uid' => auth('web-member')->user()->id, 'company_id' => $company->id ); $focus_rst = $this->personFocusComRepository->getFocus($focus_where); if ($focus_rst) { $company->focus = 1; } } //企业风采 $img_where = array( array('company_id','=',$company->id) ); $companyimg_display = config('aix.companyset.comset.show_set.companyimg_display'); if ($companyimg_display == 1) { $img_where[] = array('audit','=',1); } else { $img_where[] = array('audit','<>',3); } $company_images = $this->companyImgRepository->getImages($img_where); if ($company_images->toArray()) { foreach ($company_images as $key => $value) { $company_images[$key]->img = upload_asset($value->image); } } else { $company_images = null; } $company->img = $company_images; //亮点tag $tag_arr = array(); $other_categories = $this->categoryRepository->getCategories(); if (implode(',', $company->tag)) { $tag_ids = $company->tag; if ($other_categories) { $tag_category = array_get($other_categories, 'AIX_jobtag'); if ($tag_category) { foreach ($tag_ids as $k => $v) { if (array_get($tag_category, $v)) { $tag_arr[] = array_get($tag_category, $v); } } } } } $company->tag_arr = $tag_arr; //企业性质/行业/规模/地区/注册资金 $company->nature_cn = ''; $company->trade_cn = ''; $company->scale_cn = ''; $company->district_cn = ''; if ($other_categories) { $company_types = array_get($other_categories, 'AIX_company_type'); $company_trades = array_get($other_categories, 'AIX_trade'); $company_scales = array_get($other_categories, 'AIX_scale'); if ($company_types) { $type_cn = array_get($company_types, $company->nature); if ($type_cn) { $company->nature_cn = $type_cn['demand']; } } $company_trades = array_get($other_categories, 'AIX_trade'); if ($company_trades) { $trade_cn = array_get($company_trades, $company->trade); if ($trade_cn) { $company->trade_cn = $trade_cn['demand']; } } $company_scales = array_get($other_categories, 'AIX_scale'); if ($company_scales) { $scale_cn = array_get($company_scales, $company->scale); if ($scale_cn) { $company->scale_cn = $scale_cn['demand']; } } } $city_cates = Cache::get('city_cate_list'); if (null === $city_cates) { $city_cates = $this->categoryDistrictRepository->cityCateCache(); Cache::put('city_cate_list', $city_cates, '86400'); } if (!strpos($company->district, ".")) { //直接读取地区信息 $district_cn = array_get($city_cates['id'], $company->district); if ($district_cn) { $company->district_cn = $district_cn['name']; } } else {//处理地区信息 $c_district = explode('.', $company->district); $district_cn = array(); foreach ($c_district as $k => $v) { if ($v) { $district_info = array_get($city_cates['id'], $v); if ($district_info) { $district_cn[] = $district_info['name']; } } } $district_cn = implode('/', $district_cn); $company->district_cn = $district_cn; } ///会员套餐 $setmeal = $this->memberSetmealRepository->getSetmealByUid($company->id, $company->utype); $company->setmeal = $setmeal; $company->setmeal_id = $setmeal->id; $company->setmeal_name = $setmeal->setmeal_name; $company->setmeal_img = $setmeal->setmeal_img; ///联系方式 /*判断查看联系方式设置 如果设置成游客 判断企业中心的联系方式设置 公开 完全显示, 不公开 显示‘企业设置不公开’ 设置成登陆会员 游客: 企业中心的联系方式设置 公开 ******* 不公开 显示‘企业设置不公开’ 已登录用户: 企业中心的联系方式设置 公开 完全显示 不公开 显示‘企业设置不公开’ 如果设置成下载后可见 判断企业中心的联系方式设置 公开 *******, 不公开 显示‘企业设置不公开’ * */ /// 处理固定电话 if (strstr($company->landline_tel, '-')) { $landline_tel_arr = explode('-', $company->landline_tel); foreach ($landline_tel_arr as $k => $v) { if (!(int)$v) { unset($landline_tel_arr[$k]); } } } elseif (strstr($company->landline_tel, ' ')) { $landline_tel_arr = explode(' ', $company->landline_tel); foreach ($landline_tel_arr as $k => $v) { if (!(int)$v) { unset($landline_tel_arr[$k]); } } } else { $landline_tel_arr = (array)$company->landline_tel; } if ($landline_tel_arr) { $landline_tel = implode('-', $landline_tel_arr); } else { $landline_tel = ''; } $company->landline_tel = $landline_tel; $hide = true; if (config('aix.companyset.comset.contact_set.showjobcontact') == 0) { //游客 $hide = false; } elseif (config('aix.companyset.comset.contact_set.showjobcontact') == 1) { //已登录会员 if (auth('web-member')->check() || auth('web-company')->check()) { $hide = false; } } if ($hide) { if ($company->mobile) { $company->mobile = contact_hide($company->mobile, 2); } if ($company->landline_tel) { $company->landline_tel = contact_hide($landline_tel, 1); } if ($company->email) { $company->email = contact_hide($company->email, 3); } } if (!$company->contact_show) { $company->contact = '企业设置不公开'; } //联系方式展现方式 $pwdhash = config('aix.system.site_other.site_other.pwb_hash'); if (config('aix.companyset.comset.contact_type_set.contact_img_com') == 2) { if (!$company->telephone_show) { $company->mobile = '企业设置不公开'; } else { if ($company->mobile) { $company->mobile = " encrypt($company->mobile, $pwdhash), 'type' => 'phone')) . "' />"; } } if (!$company->landline_tel_show) { $company->landline_tel = '企业设置不公开'; } else { if ($company->landline_tel) { $company->landline_tel = " encrypt($company->landline_tel, $pwdhash), 'type' => 'phone')) . "' />"; } } if (!$company->email_show) { $company->email = '企业设置不公开'; } else { if ($company->email) { $company->email = " encrypt($company->email, $pwdhash), 'type' => 'email')) . "' />"; } } } else { //判断企业中心设置 if (!$company->telephone_show) { $company->mobile = '企业设置不公开'; } if (!$company->landline_tel_show) { $company->landline_tel = '企业设置不公开'; } if (!$company->email_show) { $company->email = '企业设置不公开'; } } $company->hide = $hide; $company->setmeal_id = $setmeal->setmeal_id; $company->setmeal_name = $setmeal->setmeal_name; //来源分站名称 $subsites = Cache::get('subsites_list'); if (array_has($subsites, $company->subsite_id)) { $company->subsite_cn = $subsites[$company->subsite_id]['sitename']; } else { $company->subsite_cn = ''; } return $company; } //关注/取消关注 public function focusCompany($company_id, $person_id) { $focus_where = array( 'uid' => $person_id, 'company_id' => $company_id ); $has = $this->personFocusComRepository->getFocus($focus_where); if ($has) { //取消关注 $rst = $this->personFocusComRepository->deleteFocus($focus_where); if ($rst) { return array('status'=>1,'msg'=>'已取消关注!','data'=>array('html'=>'关注','op'=>2)); } else { return array('status'=>0,'msg'=>'取消关注失败!'); } } else { //关注 $stime = date('Y-m-d H:i:s', time()); $focus_data = array( 'uid' => $person_id, 'company_id' => $company_id, 'created_at' => $stime, 'updated_at' => $stime ); $rst = $this->personFocusComRepository->addFocus($focus_data); if ($rst) { return array('status'=>1,'msg'=>'已关注!','data'=>array('html'=>'取消关注','op'=>1)); } else { return array('status'=>0,'msg'=>'关注失败!'); } } } //添加企业访客统计 public function addStatistics($company_id, $job_id = 0, $user = array(), $apply = 0, $source = 1) { $uid = 0; $utype = 0; $source = $source; if ($user) { $utype = $user->utype; $uid = $user->id; } if ($job_id) { $apply = 1; } $time = date('Y-m-d H:i:s', time()); $add_data = array( 'company_id' => (int)$company_id, 'uid' => $uid, 'utype' => $utype, 'job_id' => $job_id, 'source' => $source, 'apply' => $apply, 'created_at' => $time, 'updated_at' => $time ); return $this->companyStatisticsRepository->addRecord($add_data); } //获取其它公司 public function getSetmailCompanies($where, $limit = 10) { $except_id = array_get($where, 'except_id'); if (array_has($where, 'except_id')) { unset($where['except_id']); } if ($limit > 20) { $limit = 20; } $order = 'real_refreshtime desc,id desc'; $field = '*,if(refresh_time>UNIX_TIMESTAMP(NOW()),(refresh_time-100000000),refresh_time) as real_refreshtime'; //处理trade $map = array(); $trade = array_get($where, 'trade'); $trade_in = array(); if ($trade) { if (strpos($trade, ',')) { $arr = explode(',', $trade); $sqlin = implode(',', array_slice($arr, 0, $limit)); if (preg_match('/^(\d{1,10},)*(\d{1,10})$/', $sqlin)===1) { $trade_in = explode(',', $sqlin); } } else { $map[] = array('trade', '=', intval($trade)); } } if ($except_id) { $map[] = array('id', '<>', intval($except_id)); } $map[] = array('subsite_id', '=', get_subsite_id()); $result = $this->companyRepository->getTradeCompanies($map, $trade_in, $field, $order, $limit); $job_where = array( array('valid', '=', 1), array('display', '=', 1), ); if (config('aix.companyset.comset.show_set.jobs_display')==1) { $job_where[] = array('audit','=',1); } else { $job_where[] = array('audit','<>',3); } $order_by = array('refresh_time'=>'desc'); $list = array(); if ($result->toArray()) { foreach ($result as $key => $value) { $row = $value; $row->companyname_=$row->companyname; $row->refreshtime_cn = $row->refresh_time>time()?daterange(time(), $row->real_refreshtime):daterange(time(), $row->refresh_time); $row->url = route(url_rewrite('AIX_companyshow'), array('id'=>$row->id)); //$row['comjobs_url'] = url_rewrite('QS_companyjobs',array('id'=>$row['id'])); $row->comjobs_url = route('jobs.company.jobs', array('id'=>$row->id)); $row->contents=str_replace(' ', '', $row->contents); $row->briefly=strip_tags($row->contents); if ($row->logo) { $row->logo=upload_asset($row->logo); } else { $row->logo=public_data_path('data/upload/no_logo.png'); } $job_where_in = array('company_id'=>array($row->id)); $row->jobs = $this->jobsRepository->getCompanyJobs($job_where, $job_where_in, $order_by); $list[] = $row; } } return $list; } //获取其它公司 public function getOtherCompanies($where, $limit = 10) { $except_id = array_get($where, 'except_id'); if (array_has($where, 'except_id')) { unset($where['except_id']); } if ($limit > 20) { $limit = 20; } $order = 'real_refreshtime desc,id desc'; $field = '*,if(refresh_time>UNIX_TIMESTAMP(NOW()),(refresh_time-100000000),refresh_time) as real_refreshtime'; //处理trade $map = array(); $trade = array_get($where, 'trade'); $trade_in = array(); if ($trade) { if (strpos($trade, ',')) { $arr = explode(',', $trade); $sqlin = implode(',', array_slice($arr, 0, $limit)); if (preg_match('/^(\d{1,10},)*(\d{1,10})$/', $sqlin)===1) { $trade_in = explode(',', $sqlin); } } else { $map[] = array('trade', '=', intval($trade)); } } if ($except_id) { $map[] = array('id', '<>', intval($except_id)); } $map[] = array('subsite_id', '=', get_subsite_id()); $result = $this->companyRepository->getTradeCompanies($map, $trade_in, $field, $order, $limit); $list = array(); if ($result->toArray()) { foreach ($result as $key => $value) { $row = $value; $row->companyname_=$row->companyname; $row->refreshtime_cn = $row->refresh_time>time()?daterange(time(), $row->real_refreshtime):daterange(time(), $row->refresh_time); $row->url = route(url_rewrite('AIX_companyshow'), array('id'=>$row->id)); //$row['comjobs_url'] = url_rewrite('QS_companyjobs',array('id'=>$row['id'])); $row->comjobs_url = route('jobs.company.jobs', array('id'=>$row->id)); $row->contents=str_replace(' ', '', $row->contents); $row->briefly=strip_tags($row->contents); if ($row->logo) { $row->logo=upload_asset($row->logo); } else { $row->logo=public_data_path('data/upload/no_logo.png'); } $row->jobs_count = $this->getCompanyValidJobs($row->id); $list[] = $row; } } return $list; } //获取企业在招职位 public function getCompanyValidJobs($company_id) { $jobs_display = config('aix.companyset.comset.show_set.jobs_display'); $job_count_map = array( array('company_id','=',$company_id), array('valid','=',1) ); if ($jobs_display == 1) { $job_count_map[] = array('audit','=','1'); } else { $job_count_map[] = array('audit','<>','3'); } return $this->jobsRepository->getJobsCount($job_count_map); } //获取企业会员积分 public function getPoint($uid, $utype) { return $this->memberPointRepository->getPointsById($uid, $utype); } /**签到 * @return array */ public function signIn($user) { $signCount = $this->taskLogRepository->getTaskLogCount($user->id, 18, $user->utype); if ($signCount) { return ['code'=>0,'msg'=>'您今天已经签到过了!', 'info'=>'']; } else { $res = $this->taskService->doTask(18, $user->id, 1); if ($res['code']==1) { $this->memberLogRepository->createLog($user,8003,""); return ['code'=>1,'msg'=>'签到成功', 'info'=>$res['data']['points']]; } else { return ['code'=>1,'msg'=>$res['info'], 'info'=>'']; } } } /**企业中心======我的消息(系统消息) * @param $request * @return array */ public function comPms($data, $user) { $where = []; $new= isset($data['new'])?$data['new']:''; $settr= isset($data['settr'])?$data['settr']:''; if ($new ) { $where['new'] = $new; } if ($settr) { $where[] = ['created_at', '<=',date('Y-m-d H:i:s', strtotime("{$settr} day"))]; } $param_array = array('new','settr'); $params= array(); if ($data) { foreach ($data as $k => $v) { if (in_array($k, $param_array)) { $params[$k] = $v; } } } $where['msgtouid'] = $user->id; $where['utype'] = $user->utype; $pms = $this->pmsRepository->comPms($where); $res = [ 'companyInfo' => $user, 'pms'=>$pms, 'params'=>$params, ]; return $res; } public function pmsRead($id) { if (!$id) { return response()->json(['status'=>0,'msg'=>'参数错误']); } return $this->pmsRepository->update(['new'=>2], $id); } public function msgSend($user, $input) { $data = []; if (empty($input['parent_id'])) { throw new ResponseException('数据异常!'); } if (empty($input['to_uid'])) { throw new ResponseException('个人信息不存在!'); } if (empty($input['message'])) { throw new ResponseException('回复信息不能为空!'); } if (mb_strlen($input['message'], 'utf-8')>200) { throw new ResponseException('回复信息不能超过200个字。'); } $data['parent_id'] = $input['parent_id']; $data['utype'] = $user->utype; $data['from_uid'] = $user->id; $data['to_uid'] = $input['to_uid']; $data['message'] = $input['message']; $res = $this->msgRepository->msgSend($data); $this->memberLogRepository->createLog($user,1026,[$input['parent_id'],$input['to_uid'],$input['message']]); if ($res) { $member = MemberInfo::where(['uid'=>$data['to_uid']])->select('realname')->first(); if ($member) { $res->personName = $member->realname; } else { $res->personName = ''; } } return $res; } public function msgDelete($input) { if (empty($input['parent_id'])) { throw new ResponseException('请选择要删除的咨询消息!'); } return $this->msgRepository->msgDelete($input['parent_id']); } /**消息设为查看 * @param $request * @return bool|\Illuminate\Http\JsonResponse * @throws \Throwable */ public function companyPmsCheck($request) { $user = auth('web-company')->user(); if ($request->method()== 'POST') { return true; } $id = $request->id; if (!$id) { return response()->json(['status'=>0,'msg'=>'请选择查看的消息!']); } $ids = is_array($id)?$id:explode(',', $id); //设置消息为已读 $res = $this->msgCheck($ids, $user); if ($res['state']) { $html = view('app.company.ajax.ajax_show_msg', ['msg'=>$res['data']])->render(); return response()->json(['status'=>1,'msg'=>'获取消息成功!','data'=>$html]); } return response()->json(['status'=>0,'msg'=>$res['error']]); } public function companyPmsConsult($user) { $res = $this->msgRepository->msg($user->utype, $user->id); if ($res->total()) { foreach ($res as $key => $val) { $utype = explode(',', $val->result); foreach ($utype as $key1 => $val1) { $utype1 = explode(':', $val1); if ($utype1[0]==1) { $company = Company::where(['id'=>$utype1[1]])->select('companyname')->first(); // $member = MemberInfo::where(['uid'=>$utype1[2]])->select('images')->first(); $member = MemberInfo::with(['resumes'=>function ($query) { $query->where('def', 1); }])->where(['uid'=>$utype1[2]])->select('images', 'uid')->first(); $res[$key]->result = str_replace($utype1[2], isset($member->resumes[0]->id) ? $member->resumes[0]->id : 0, $res[$key]->result); if ($company) { $res[$key]->companyName = $company->companyname; } else { $res[$key]->companyName = ''; } if ($member) { $res[$key]->images = $member->images; $res[$key]->personName = isset($member->resumes[0]->fullname) ? $member->resumes[0]->fullname : 0; } else { $res[$key]->images = ''; } break; } else { $company = Company::where(['id'=>$utype1[2]])->select('companyname')->first(); // $member = MemberInfo::where(['uid'=>$utype1[1]])->select('images')->first(); $member = MemberInfo::with(['resumes'=>function ($query) { $query->where('def', 1); }])->where(['uid'=>$utype1[1]])->select('images', 'uid')->first(); $res[$key]->result = str_replace($utype1[1], isset($member->resumes[0]->id) ? $member->resumes[0]->id : 0, $res[$key]->result); if ($company) { $res[$key]->companyName = $company->companyname; } else { $res[$key]->companyName = ''; } if ($member) { $res[$key]->images = $member->images; $res[$key]->personName = isset($member->resumes[0]->fullname) ? $member->resumes[0]->fullname : 0; } else { $res[$key]->images = ''; } break; } } } } return $res; } public function companyPmsDel($request,$user) { if (!$id = $request->id) { return response()->json(['status'=>0, 'msg'=>"请选择删除的消息!"]); } $ids = is_array($id)?$id:explode(',', $id); if (!$this->pmsRepository->deleteAll($ids,$user->id)) { return response()->json(['status'=>0, 'msg'=>"删除消息失败!"]); } if(!$this->memberLogRepository->createLog($user,1025,$ids)){ throw new \Exception("日志记录失败!"); } return response()->json(['status'=>1, 'msg'=>"删除消息成功!"]); } public function getContactInfo($id, $user) { if (!$id) { return ['status'=>0, 'msg'=>"请选择查看的联系信息!"]; } $companyContact = CompanyContact::find($id); if(!$companyContact){ return ['status'=>0, 'msg'=>"联系信息不存在"]; } if($companyContact->company_id != $user->id){ return ['status'=>0, 'msg'=>"联系信息不存在"]; } $contact_info = $this->companyContactRepository->getContact(['id'=>$id]); if ($contact_info) { $landline_tel_cn = explode('-', $contact_info->landline_tel); $contact_info->landline_tel_one = array_get($landline_tel_cn,0); $contact_info->landline_tel_two = array_get($landline_tel_cn,1); $contact_info->landline_tel_three = array_get($landline_tel_cn,2); return ['status'=>1, 'contact'=>$contact_info]; } else { return ['status'=>0, 'msg'=>"联系信息不存在"]; } } public function companyContactDel($ids, $user) { if (!$ids) { return response()->json(['status'=>0, 'msg'=>"请选择删除的联系信息!"]); } $companyContact = CompanyContact::whereIn('id',$ids)->get(); if(!$companyContact->toArray()){ return ['status'=>0, 'msg'=>"联系信息不存在"]; } $id_M = array_column($companyContact->toArray(),'company_id'); foreach ($id_M as $key =>$val){ if($val!=$user->id){ return ['status'=>0, 'msg'=>"联系信息不存在"]; } } if (!$this->companyContactRepository->deleteContact([], ['id'=>$ids])) { return response()->json(['status'=>0, 'msg'=>"删除失败!"]); } return response()->json(['status'=>1, 'msg'=>"删除成功!"]); } public function updateContact($data,$user) { $id = $data['id']; $landline_tel = ''; $tel_first = array_get($data, 'tel_first', '-'); $tel_next = array_get($data, 'tel_next', '-'); $tel_last = array_get($data, 'tel_last', '-'); $landline_tel = implode('-', [$tel_first?$tel_first:'',$tel_next?$tel_next:'',$tel_last?$tel_last:'']); $update_data = array( 'contact' => array_has($data, 'contact')?$data['contact']:'', 'telephone' => array_has($data, 'telephone')?$data['telephone']:'', 'landline_tel' => $landline_tel, 'email' => array_has($data, 'email')?$data['email']:'', 'qq' => array_has($data, 'qq')?$data['qq']:'', 'address' => array_has($data, 'contact')?$data['address']:'' ); return $this->companyContactRepository->ContactUpdate(['company_id'=>$user->id,'id'=>$id],$update_data); } protected function msgCheck($ids, $user) { $msg = $this->pmsRepository->findMsg($ids); $where['msgtouid'] = $user->id; $where['utype'] = $user->utype; $where['new'] = 1; $data['new'] = 2; if (false === $count = $this->pmsRepository->updateNew($ids, $where, $data)) { return ['state'=>0,'error'=>'消息已删除或不存在']; } //写日志 return array('state'=>1,'data'=>$msg); } /** * 检查字段惟一性 * @param $key * @param $value * @param $id * @return mixed */ public function checkUnique($key, $value, $id) { return $this->checkUnique($key, $value, $id); } /** * 认证邮件发送成功回调 * @param $newEmail * @param $org */ public function sendAuthEmailHook($newEmail, $org) { Cache::put($newEmail, $org, 24*60); } /** * 邮箱验证 * @param $newEmail * @return bool */ public function verifyEmail($newEmail) { $company=Cache::pull($newEmail, null); if ($company) { $this->companyRepository->changeEmail($company->id, $newEmail); return true; } return false; } //更新短信数量 public function incSms($uid, $type, $num) { return $this->companyRepository->updataSmsNum($uid, $type, $num); } //最新招聘 public function getNewestCompanies($params) { $lists = Cache::get('newest_jobs_company_list_s'.get_subsite_id()); if ($lists === null) { $lists = $this->getSeatmealCompanies($params); Cache::put('newest_jobs_company_list_'.get_subsite_id(), $lists, '1800'); } return $lists; } //知名企业(非免费会员、有发布中的职位的企业信息 处理企业logo、企业名称长度、企业数量限制 页面显示的职位数量限制、处理职位名称和路由) public function getSeatmealCompanies($params) { $list = array(); //获取有正在发布职位的企业 $where = array(); $where = array( 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); } if (array_has($params, 'seatmeal')) { $where[] = array('setmeal_id','>',$params['seatmeal']); } $where[] = array('deadline','>',time()); $order_by = array('refresh_time'=>'desc'); $limit = ''; if (array_has($params, 'size')) { $limit = $params['size']; } $rst = $this->jobsRepository->getJobCompanies($where, $order_by, $limit); if ($rst) { $com_rst = $rst->pluck('jobs_num', 'company_id'); $cid = $rst->pluck('company_id')->toArray(); //获取企业信息 $com_whereIn['id'] = $cid; $companyInfo = $this->companyRepository->getCompanyies(array(), $com_whereIn, $order_by); $cids = array(); $company = array(); if ($companyInfo->isNotEmpty()) { foreach ($companyInfo as $key => $val) { $company[$val->id] = $companyInfo[$key]; if ($val->logo) { $company[$val->id]->logo=upload_asset($val->logo); } else { $company[$val->id]->logo = public_data_path('data/upload/no_logo.png'); } $company[$val->id]->jobs_num = $com_rst[$val->id]; $company[$val->id]->company_url=route(url_rewrite('AIX_companyshow'), array('id'=>$val->id)); $company[$val->id]->company_jobs_url=route(url_rewrite('AIX_companyjobs'), array('id'=>$val->id)); $company[$val->id]->refreshtime_cn=daterange(time(), $val->refresh_time, 'm-d', "#FF3300"); $company[$val->id]->jobs_list = array(); if (array_has($params, 'companynamelen')) { $dot = '...'; if (array_has($params, 'dot')) { $dot = $params['dot']; } $company[$val->id]->companyname = cut_str($val->companyname, $params['companynamelen'], 0, $dot); } $cids[] = $val['id']; } if ($cids) { //获取当前所选企业的所有职位信息 $job_where = array( array('valid', '=', 1), array('display', '=', 1), array('deadline','>',time()) ); if (config('aix.companyset.comset.show_set.jobs_display')==1) { $job_where[] = array('audit','=',1); } else { $job_where[] = array('audit','<>',3); } $job_where_in = array('company_id'=>$cids); $jobs = $this->jobsRepository->getCompanyJobs($job_where, $job_where_in, $order_by); if ($jobs) { foreach ($jobs as $k => $v) { if (array_has($params, 'jobs_num')) { if (count($company[$v->company_id]->jobs_list) >= $params['jobs_num']) { continue; } } //添加职位信息 $jobs_list = $company[$v->company_id]->jobs_list; $jobs_list[] = $v; $company[$v->company_id]->jobs_list = $jobs_list; } } } } $list = $company; } return $list; } public function dealCompanyFields($list) { if ($list) { $other_categories = $this->categoryRepository->getCategories(); $company_types = array(); $company_trades = array(); $company_scale = array(); if ($other_categories) { $company_types = array_has($other_categories, 'AIX_company_type')?$other_categories['AIX_company_type']:array(); $company_trades = array_has($other_categories, 'AIX_trade')?$other_categories['AIX_trade']:array(); $company_scale = array_has($other_categories, 'AIX_scale')?$other_categories['AIX_scale']:array(); } $jobs_display = config('aix.companyset.comset.show_set.jobs_display'); foreach ($list as $key => $val) { $list[$key]->company_url = route(url_rewrite('AIX_companyshow'), array('id'=>$val->id)); $list[$key]->contents=htmlspecialchars_decode($val->contents, ENT_QUOTES); if ($val->logo) { $list[$key]->logo=upload_asset($val->logo); } else { $list[$key]->logo = public_data_path('data/upload/no_logo.png'); } $content = str_replace(' ', '', $val->contents); $content = cut_str(strip_tags($content), 130, 0, '...'); $list[$key]->contents = $content; $list[$key]->comjobs_url = route('jobs.company.jobs', array('id'=>$val->id)); $list[$key]->nature_cn = ''; $list[$key]->trade_cn = ''; $list[$key]->scale_cn = ''; if ($company_types && array_has($company_types, $val->nature)) { $list[$key]->nature_cn = $company_types[$val->nature]['demand']; } if ($company_trades && array_has($company_trades, $val->trade)) { $list[$key]->trade_cn = $company_trades[$val->trade]['demand']; } if ($company_scale && array_has($company_scale, $val->scale)) { $list[$key]->scale_cn = $company_scale[$val->scale]['demand']; } //在招职位数量 $job_count_map = array(array('company_id','=',$val->id),array('valid','=',1)); if ($jobs_display == 1) { $job_count_map[] = array('audit','=','1'); } else { $job_count_map[] = array('audit','<>','3'); } $jobs_count = $this->jobsRepository->getJobsCount($job_count_map); $list[$key]->jobs_count = $jobs_count; } } return $list; } //处理名企信息 public function dealSetmealCompany($companyInfo, $params) { $list = array(); $order_by = array('refresh_time'=>'desc'); $company = array(); $cids = []; if (array_has($params, 'size')) { $limit = $params['size']; } foreach ($companyInfo as $key => $val) { if ($limit && count($company)>=$limit) { break; } $company[$val->id] = $companyInfo[$key]; if ($val->logo) { $company[$val->id]->logo=upload_asset($val->logo); } else { $company[$val->id]->logo = public_data_path('data/upload/no_logo.png'); } if ($val->job->count() == 0) { unset($company[$val->id]); continue; } $company[$val->id]->jobs_num = $val->job->count(); $company[$val->id]->company_url=route(url_rewrite('AIX_companyshow'), array('id'=>$val->id)); $company[$val->id]->company_jobs_url=route(url_rewrite('AIX_companyjobs'), array('id'=>$val->id)); $company[$val->id]->refreshtime_cn=daterange(time(), $val->refresh_time, 'm-d', "#FF3300"); $company[$val->id]->jobs_list = array(); if (array_has($params, 'companynamelen')) { $dot = '...'; if (array_has($params, 'dot')) { $dot = $params['dot']; } $company[$val->id]->companyname = cut_str($val->companyname, $params['companynamelen'], 0, $dot); } $cids[] = $val['id']; //$jobs = $val->job; $job_count_map = array(array('valid','=',1),array('display','=',1)); if (config('aix.companyset.comset.show_set.jobs_display')==1) { $job_count_map[] = array('audit','=','1'); } else { $job_count_map[] = array('audit','<>','3'); } $jobs = $val->job()->where($job_count_map)->orderBy('refresh_time', 'desc')->get(); if ($jobs) { $jobs_arr = $jobs->toArray(); $company[$val->id]->newst_job_refresh = $jobs_arr[0]['refresh_time']; foreach ($jobs as $k => $v) { if (array_has($params, 'jobs_num')) { if (count($company[$v->company_id]->jobs_list) >= $params['jobs_num']) { continue; } } //添加职位信息 $jobs_list = $company[$v->company_id]->jobs_list; $jobs_list[] = $v; $company[$v->company_id]->jobs_list = $jobs_list; } } } if ($company) { $list = $company; } return $list; } //获取企业基本信息 public function getCompany($where) { return $this->companyRepository->getCompanyInfo($where); } //获取企业联系人信息 public function companyContact($company, $page_num = '') { $where = array('company_id'=>$company->id); $rsts = $this->companyContactRepository->getList($where, $page_num); return $rsts; } public function addContact($data) { return $this->companyContactRepository->create($data); } //发送短信回调事件 public function sendSMSCallBack($user_id){ //减少短信条数 $this->companyRepository->SetSmsReduce($user_id); } /** * 根据条件获取企业信息 */ public function getCompanies($where, $page = '', $limit = 20){ } }