| 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);
 
-     }
 
- }
 
 
  |