123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313 |
- <?php
- namespace App\Http\Controllers\Statistics;
- use App\Http\Controllers\Statistics\StatisticsBaseController;
- use Illuminate\Support\Facades\Auth;
- use App\Services\Statistics\CompanyService;
- use App\Services\Statistics\MemberService;
- use App\Services\Statistics\JobsService;
- use App\Services\Statistics\ResumeService;
- use App\Services\Statistics\JobfairService;
- use App\Services\Statistics\CompanyDownResumeService;
- use App\Services\SubsiteService;
- class HomeController extends StatisticsBaseController
- {
- protected $companyService;
- protected $memberService;
- protected $jobsService;
- protected $resumeService;
- protected $jobfairService;
- protected $companyDownResumeService;
- /**
- * HomeController constructor.
- */
- public function __construct(CompanyService $companyService, MemberService $memberService, JobsService $jobsService, ResumeService $resumeService, JobfairService $jobfairService, CompanyDownResumeService $companyDownResumeService, SubsiteService $subsiteService)
- {
- $this->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);
- }
- }
|