| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313 | <?phpnamespace 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);    }}
 |