companyService = $companyService; $this->memberService = $memberService; $this->jobsService = $jobsService; $this->resumeService = $resumeService; $this->jobfairService = $jobfairService; $this->companyDownResumeService = $companyDownResumeService; $this->subsiteService = $subsiteService; } public function index() { //分站信息 $subsite_id = session('caiqing_susbite_id'); if ($subsite_id === null) { $subsite_id = -1; } //本周起始时间 $now_week_where = array(); $sdefaultDate = date("Y-m-d"); $first=1; $w=date('w', strtotime($sdefaultDate)); $week_start=date('Y-m-d H:i:s', strtotime("$sdefaultDate -".($w ? $w - $first : 6).' days')); $week_end = date('Y-m-d H:i:s', strtotime("$week_start +7 days")-1); //上周起始时间 $prevweek_start = date('Y-m-d H:i:s', strtotime("$week_start -7 days")); $prevweek_end = date('Y-m-d H:i:s', strtotime("$prevweek_start +7 days")-1); //本月起始时间 $month_start=date('Y-m-d H:i:s', mktime(0, 0, 0, date('m'), 1, date('Y'))); $month_send=date('Y-m-d H:i:s', mktime(23, 59, 59, date('m'), date('t'), date('Y'))); $days = (int)date('j', time()); //获取上月相同时间段 $last_firstday = date('Y-m-01 H:i:s', strtotime("-1 month", strtotime($month_start))); //上月第一天 $last_moreday = date('Y-m-d H:i:s', strtotime($last_firstday.'+'.$days.' days')-1); //上月第N天 //本周活跃企业数(登录、刷新) $week_where = array( ['utype','=',1], ['user_status','=',1] ); if ($subsite_id != -1) { $week_where[] = ['subsite_id','=',$subsite_id]; } $week_where['time_condition'] = [$week_start, $week_end]; $week_companies = $this->companyService->getCompanyNums($week_where); //上周活跃企业数 $prevweek_where = $week_where; $prevweek_where['time_condition'] = [$prevweek_start, $prevweek_end]; $prevweek_companies = $this->companyService->getCompanyNums($prevweek_where); //本月活跃企业数 $month_where = $week_where; $month_where['time_condition'] = [$month_start, $month_send]; $month_companies = $this->companyService->getCompanyNums($month_where); //活跃企业数比较 $company_flag = 0; if ($prevweek_companies > $week_companies) { $company_flag = -1; } elseif ($prevweek_companies == $week_companies) { $company_flag = 0; } else { $company_flag = 1; } $company_gap = abs($week_companies - $prevweek_companies); //本周活跃个人数 $week_person_where = array( ['utype','=',2], ['status','=',1] ); if ($subsite_id != -1) { $week_person_where[] = ['subsite_id','=',$subsite_id]; } $week_person_where['time_condition'] = [$week_start, $week_end]; $week_persons = $this->memberService->getMemberNums($week_person_where); //上周活跃个人数 $prevweek_person_where= $week_person_where; $prevweek_person_where['time_condition'] = [$prevweek_start, $prevweek_end]; $prevweek_persons = $this->memberService->getMemberNums($prevweek_person_where); //本月活跃个人数 $month_person_where= $week_person_where; $month_person_where['time_condition'] = [$month_start, $month_send]; $month_persons = $this->memberService->getMemberNums($month_person_where); //活跃企业数比较 $person_flag = 0; if ($prevweek_persons > $week_persons) { $person_flag = -1; } elseif ($prevweek_persons < $week_persons) { $person_flag = 1; } $person_gap = abs($week_persons - $prevweek_persons); //当前有效岗位数 $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); } if ($subsite_id != -1) { $job_where[] = array('subsite_id','=',$subsite_id); } $job_num = $this->jobsService->getValidJobNum($job_where); $prev_job_where = $job_where; $prev_job_where[] = array('created_at','>=',$last_firstday); $prev_job_where[] = array('created_at','<=',$last_moreday); $prev_job_num = $this->jobsService->getValidJobNum($prev_job_where); $more_job_num = $prev_job_num - $job_num; $more_flag = 'down'; if ($job_num > $prev_job_num) { $more_job_num = $job_num - $prev_job_num; $more_flag = 'up'; } elseif ($job_num == $prev_job_num) { $more_flag = 'balance'; } else { $more_flag = 'down'; } $more_job_rate = 100; if ($prev_job_num>0) { $more_job_rate = sprintf("%.4f", $more_job_num/$prev_job_num)*100; } //当前有效简历数 if (config('aix.personal_set.per_set.show_set.resume_display')=='1') { $resume_where[] = array('audit','=','2'); } else { $resume_where[] = array('audit','<>','0'); } if ($subsite_id != -1) { $resume_where[] = ['subsite_id', '=',$subsite_id]; } $resume_num = $this->resumeService->getValidResumeNum($resume_where); $prev_resume_where = $resume_where; $prev_resume_where[] = array('created_at','>=',$last_firstday); $prev_resume_where[] = array('created_at','<=',$last_moreday); $prev_resume_num = $this->resumeService->getValidResumeNum($prev_resume_where); $more_resume_num = $prev_resume_num - $resume_num; $more_resume_flag = 'down'; if ($resume_num > $prev_resume_num) { $more_resume_num = $resume_num - $prev_resume_num; $more_resume_flag = 'up'; } elseif ($resume_num == $prev_resume_num) { $more_resume_flag = 'balance'; } else { $more_resume_flag = 'down'; } $more_resume_rate = 100; if ($prev_resume_num>0) { $more_resume_rate = sprintf("%.4f", $more_resume_num/$prev_resume_num)*100; } $company_where = array(array('utype','=',1),array('audit','=',1)); if ($subsite_id !='-1') { $company_where[] = array('subsite_id','=',$subsite_id); } //现场招聘会数据(举办结束时间小于当前时间的招聘会) $jobfair_where[] = array('holddate_end','<', time()); if ($subsite_id != -1) { $jobfair_where['subsite_id'] = $subsite_id; } $jobfair_bum = $this->jobfairService->getJobfairNum($jobfair_where); //累计进场人数(个人签到数量) $jobfair_visitor_num = $this->jobfairService->getJobfairVisitorNum(['type'=>1]); //近30天供求趋势(当前时间往前推一个月之间的职位发布、简历发布、下载简历、投递职位数量) //近一个月的起始时间 $month_etime = date("Y-m-d H:i:s", strtotime(date("Y-m-d", strtotime("+1 day")))-1); $month_stime = date("Y-m-d H:i:s", strtotime(date("Y-m-d", strtotime("-29 day")))); $group_by = 'DATE(created_at)'; //获取职位发布数量(统计发布时间在当前30天、有效职位) $job_where = [ ['created_at', '<=', $month_etime], ['created_at', '>=', $month_stime], ['valid','=',1], ['display','=',1], ]; if (config('aix.companyset.comset.show_set.jobs_display')==1) { $job_where[] = array('audit','=',1); } else { $job_where[] = array('audit','<>',3); } if ($subsite_id != -1) { $job_where['subsite_id'] = $subsite_id; } $job_nums = $this->jobsService->getJobNumGroup($job_where, $company_where, $group_by); //获取简历发布数量(统计发布时间在当前30天、有效简历) $resume_where = [ ['created_at', '<=', $month_etime], ['created_at', '>=', $month_stime], ]; if (config('aix.personal_set.per_set.show_set.resume_display')=='1') { $resume_where[] = array('audit','=','2'); } else { $resume_where[] = array('audit','<>','0'); } if ($subsite_id != -1) { $resume_where['subsite_id'] = $subsite_id; } $resume_nums = $this->resumeService->getResumeNumGroup($resume_where, $group_by); //获取下载简历数 $down_where = [ ['created_at', '<=', $month_etime], ['created_at', '>=', $month_stime] ]; $down_resume_nums = $this->companyDownResumeService->getResumeNumGroup($down_where, $group_by, $subsite_id); //获取投递职位数量 $apply_where = [ ['created_at', '<=', $month_etime], ['created_at', '>=', $month_stime] ]; $apply_nums = $this->resumeService->getApplyNumGroup($apply_where, $group_by, $subsite_id); //处理数据显示 $start_date = date("Y-m-d", strtotime(date("Y-m-d", strtotime("-29 day")))); $end_date = date("Y-m-d", strtotime(date("Y-m-d", strtotime("+1 day")))-1); $date_arr = []; for ($i=0; $i<30; $i++) { $date_arr[] = $start_date; if (!array_has($job_nums, $start_date)) { $job_nums[$start_date] = 0; } if (!array_has($resume_nums, $start_date)) { $resume_nums[$start_date] = 0; } if (!array_has($apply_nums, $start_date)) { $apply_nums[$start_date] = 0; } if (!array_has($down_resume_nums, $start_date)) { $down_resume_nums[$start_date] = 0; } $start_date = date("Y-m-d", strtotime($start_date)+3600*24); } ksort($job_nums); ksort($resume_nums); ksort($down_resume_nums); ksort($apply_nums); $return_data = array( 'week_companies' => $week_companies, 'prevweek_companies' => $prevweek_companies, 'month_companies' => $month_companies, 'company_flag' => $company_flag, 'company_gap' => $company_gap, 'week_persons' => $week_persons, 'prevweek_persons' => $prevweek_persons, 'month_persons' => $month_persons, 'person_flag' => $person_flag, 'person_gap' => $person_gap, 'job_num' => $job_num, 'more_job_rate' => $more_job_rate, 'more_flag' => $more_flag, 'resume_num' => $resume_num, 'more_resume_flag' => $more_resume_flag, 'more_resume_rate' => $more_resume_rate, 'jobfair_bum' => $jobfair_bum, 'jobfair_visitor_num' => $jobfair_visitor_num, 'job_nums' => $job_nums, 'resume_nums' => $resume_nums, 'down_resume_nums' => $down_resume_nums, 'apply_nums' => $apply_nums, 'date_arr' => $date_arr ); return view('statistics.app.index', $return_data); } }