where[] = ['subsite_id', '=', get_subsite_id()]; } } public function index( Content $content, CompanyRepository $companyRepository, MemberRepository $memberRepository, JobsRepository $jobsRepository, ResumeRepository $resumeRepository, ResumeImgRepository $resumeImgRepository, FeedbackRepository $feedbackRepository, ReportRepository $reportRepository ) { $view = 'admin.home.index'; if (Admin::user()->isRole('health')) { $view = 'admin.home.health'; } if (Admin::user()->isRole('ic_group')) { $view = 'admin.home.ic'; } if (Admin::user()->isRole('health') || Admin::user()->isRole('ic_group')) { $data = [ 'company' => $this->company($companyRepository, $this->where), 'jobs' => $this->jobs($jobsRepository, $this->where), 'needAuthCompany' => $this->needAuthCompany($companyRepository, $this->where), 'needAuditJobs' => $this->needAuditJobs($jobsRepository, $this->where), ]; } else { $data = [ 'company' => $this->company($companyRepository, $this->where), 'person' => $this->person($memberRepository, $this->where), 'jobs' => $this->jobs($jobsRepository, $this->where), 'resume' => $this->resume($resumeRepository, $this->where), 'needAuthCompany' => $this->needAuthCompany($companyRepository, $this->where), 'needAuditJobs' => $this->needAuditJobs($jobsRepository, $this->where), 'needAuditResume' => $this->needAuditResume($resumeRepository, $this->where), 'needAuditResumeImg' => $this->needAuditResumeImg($resumeImgRepository, $this->where), 'suggestion' => $this->suggestion($feedbackRepository, $this->where), 'report' => $this->report($reportRepository, $this->where), ]; } return $content ->header('首页') ->description('统计列表') ->body(view($view)->with($data)); } protected function company($companyRepository, $where) { if (Admin::user()->isRole('health')) { $where[] = ['is_health', '=', 1]; } if (Admin::user()->isRole('ic_group')) { $where[] = ['is_ic', '=', 1]; } return (object)['getCompanyCount' => $companyRepository->getCompanyCount($where), 'getLastCompanyCount' => $companyRepository->getLastCompanyCount($where), 'getNextCompanyCount' => $companyRepository->getNextCompanyCount($where)]; } protected function person($memberRepository, $where) { return (object)['getPersonCount' => $memberRepository->getPersonCount($where), 'getLastPersonCount' => $memberRepository->getLastPersonCount($where), 'getNextPersonCount' => $memberRepository->getNextPersonCount($where)]; } protected function jobs($jobsRepository, $where) { if (Admin::user()->isRole('health')) { $where[] = ['is_health', '=', 1]; } if (Admin::user()->isRole('ic_group')) { $where[] = ['is_ic', '=', 1]; } return (object)['getJobCount' => $jobsRepository->getJobCount($where), 'getLastJobsCount' => $jobsRepository->getLastJobsCount($where), 'getNextJobsCount' => $jobsRepository->getNextJobsCount($where)]; } protected function resume($resumeRepository, $where) { return (object)['getResumesCount' => $resumeRepository->getResumesCount($where), 'getLastResumeCount' => $resumeRepository->getLastResumeCount($where), 'getNextResumeCount' => $resumeRepository->getNextResumeCount($where)]; } protected function needAuthCompany($companyRepository, $where) { $where[] = ['audit', '=', 2]; if (Admin::user()->isRole('health')) { $where[] = ['is_health', '=', 1]; } if (Admin::user()->isRole('ic_group')) { $where[] = ['is_ic', '=', 1]; } return (object)['getAuditCount' => $companyRepository->getAuditCount($where)]; } protected function needAuditJobs($jobsRepository, $where) { $where[] = ['audit', '=', 2]; if (Admin::user()->isRole('health')) { $where[] = ['is_health', '=', 1]; } if (Admin::user()->isRole('ic_group')) { $where[] = ['is_ic', '=', 1]; } return (object)['getJobsCount' => $jobsRepository->getJobCount($where)]; } protected function needAuditResume($resumeRepository, $where) { $where[] = ['audit', '=', 1]; return (object)['getAuditCount' => $resumeRepository->getAuditCount($where)]; } protected function needAuditResumeImg($resumeImgRepository, $subsite_id) { $where[] = ['audit', '=', 1]; return (object)['getAuditCount' => $resumeImgRepository->getAuditCount($where, $subsite_id)]; } protected function suggestion($feedbackRepository, $where) { $where[] = ['audit', '=', 0]; return (object)['getCount' => $feedbackRepository->getCount($where)]; } protected function report($reportRepository, $where) { $where[] = ['audit', '=', 1]; return (object)['getCount' => $reportRepository->getCount($where)]; } protected function appeal($appealRepository, $where) { $where[] = ['status', '=', 0]; return (object)['getCount' => $appealRepository->getCount($where)]; } protected function jobfairJobs($jobfairJobRepository) { $where[] = ['audit', '=', 2]; $where[] = ['type', '=', 1]; return (object)['getCount' => $jobfairJobRepository->getCount($where)]; } protected function jobfairCompany($jobfairCompanyRepository, $subsite_id) { $where[] = ['audit', '=', 2]; return (object)['getCount' => $jobfairCompanyRepository->getCount($where, $subsite_id)]; } protected function jobfairoutJobs($jobfairJobRepository) { $where[] = ['audit', '=', 2]; $where[] = ['type', '=', 2]; return (object)['getCount' => $jobfairJobRepository->getCount($where)]; } protected function jobfairoutCompany($jobfairoutCompanyRepository, $subsite_id) { $where[] = ['audit', '=', 2]; return (object)['getCount' => $jobfairoutCompanyRepository->getCount($where, $subsite_id)]; } protected function companyImg($companyImgRepository, $subsite_id) { return (object)['getCount' => $companyImgRepository->getCount($subsite_id, [0, 2])]; } protected function memberInfo($memberInfoRepository, $subsite_id) { $where[] = ['photo', '=', 1]; $where[] = ['photo_audit', '=', 1]; return (object)['getCount' => $memberInfoRepository->getCount($where, $subsite_id)]; } protected function register($table, $where) { $result = []; $dayArr = getLastDates(30); $sql = "deleted_at is null"; if ($where) { $whereSubsite = $where[0][2] ? $where[0][2] : 0; $sql .= " and subsite_id=" . $whereSubsite; } $realArr = DB::select("select DATE_FORMAT(created_at,'%Y-%m-%d') as days,count(*) as count FROM " . $table . " WHERE " . $sql . " and created_at >= '" . date('Y-m-d H:i:s', strtotime('-30 days')) . "' AND created_at <= '" . date('Y-m-d H:i:s') . "' GROUP BY days"); foreach ($dayArr as $key => $val) { if (in_array($val, array_column($realArr, 'days'))) { foreach ($realArr as $key1 => $val1) { if ($val == $val1->days) { $result[] = [$val, $val1->count]; break; } } } else { $result[] = [$val, 0]; } } return $result; } protected function companyType($where) { $sql = "deleted_at is null"; if ($where) { $whereSubsite = $where[0][2] ? $where[0][2] : 0; $sql .= " and subsite_id=" . $whereSubsite; } $result = []; $category = Category::where('alias', 'AIX_company_type')->select(['id', 'demand'])->get()->toArray(); $category_name = array_column($category, 'demand'); $company = DB::select("select nature,count(*) as count from companys WHERE " . $sql . " group by nature"); foreach ($category as $key => $val) { if (in_array($val['id'], array_column($company, 'nature'))) { foreach ($company as $key1 => $val1) { if ($val['id'] == $val1->nature) { $result[] = ['value' => $val1->count, 'name' => $val['demand']]; break; } } } else { $result[] = ['value' => 0, 'name' => $val['demand']]; } } return ['category_name' => $category_name, 'result' => $result]; } protected function userAction() { $result = []; $dayArr = getLastDates(14); $jobsRefresh = RefreshLog::when(get_subsite_id() > 0, function ($query) { $query->whereHas('companys', function ($query) { $query->where('subsite_id', get_subsite_id()); }); })->where('utype', 1)->where('type', 1006)->where('created_at', '>=', date('Y-m-d H:i:s', strtotime('-14 days')))->where('created_at', '<=', date('Y-m-d H:i:s'))->selectRaw('DATE_FORMAT(created_at,\'%Y-%m-%d\') as days,count(*) as count')->groupBy('days')->get()->toArray(); $jobsApply = PersonalJobsApply::when(get_subsite_id() > 0, function ($query) { $query->whereHas('resumes', function ($query) { $query->where('subsite_id', get_subsite_id()); }); })->where('created_at', '>=', date('Y-m-d H:i:s', strtotime('-14 days')))->where('created_at', '<=', date('Y-m-d H:i:s'))->selectRaw('DATE_FORMAT(created_at,\'%Y-%m-%d\') as days,count(*) as count')->groupBy('days')->get()->toArray(); $newArray = ['jobsRefresh' => $jobsRefresh, 'jobsApply' => $jobsApply]; foreach ($dayArr as $key => $val) { foreach ($newArray as $key2 => $val2) { if (in_array($val, array_column($val2, 'days'))) { foreach ($val2 as $key1 => $val1) { if ($val == $val1['days']) { $result[$key2][] = $val1['count']; break; } } } else { $result[$key2][] = 0; } } } return ['day' => $dayArr, 'userAction' => $result]; } public function ajax() { $where = $this->where; $member = $this->register('members', $where); $company = $this->register('companys', $where); $companyType = $this->companyType($where); $userAction = $this->userAction(); return response()->json(['member' => $member, 'company' => $company, 'companyType' => $companyType, 'userAction' => $userAction]); } public function menuMessage( CompanyRepository $companyRepository, JobsRepository $jobsRepository, CompanyImgRepository $companyImgRepository, ResumeRepository $resumeRepository, ResumeImgRepository $resumeImgRepository, MemberInfoRepository $memberInfoRepository, FeedbackRepository $feedbackRepository, ReportRepository $reportRepository, AppealRepository $appealRepository, JobfairJobRepository $jobfairJobRepository, JobfairCompanyRepository $jobfairCompanyRepository, JobfairoutCompanyRepository $jobfairoutCompanyRepository ) { $needAuthCompany = $this->needAuthCompany($companyRepository, $this->where)->getAuditCount; $needAuditJobs = $this->needAuditJobs($jobsRepository, $this->where)->getJobsCount; $companyImg = $this->companyImg($companyImgRepository, $this->where)->getCount; $needAuditResume = $this->needAuditResume($resumeRepository, $this->where)->getAuditCount; $needAuditResumeImg = $this->needAuditResumeImg($resumeImgRepository, $this->where)->getAuditCount; $memberInfo = $this->memberInfo($memberInfoRepository, $this->where)->getCount; $suggestion = $this->suggestion($feedbackRepository, $this->where)->getCount; $report = $this->report($reportRepository, $this->where)->getCount; $appeal = $this->appeal($appealRepository, $this->where)->getCount; $jobfairJobs = $this->jobfairJobs($jobfairJobRepository)->getCount; $jobfairCompany = $this->jobfairCompany($jobfairCompanyRepository, $this->where)->getCount; $jobfairoutJobs = $this->jobfairoutJobs($jobfairJobRepository)->getCount; $jobfairoutCompany = $this->jobfairoutCompany($jobfairoutCompanyRepository, $this->where)->getCount; return response()->json([ ["id" => 13, "num" => $needAuthCompany + $needAuditJobs + $companyImg, "has_child" => true], ["id" => 14, "num" => $needAuthCompany, "has_child" => false], ["id" => 31, "num" => $needAuditJobs, "has_child" => false], ["id" => 41, "num" => $companyImg, "has_child" => false], ["id" => 110, "num" => $needAuditResume + $needAuditResumeImg + $memberInfo, "has_child" => true], ["id" => 111, "num" => $needAuditResume, "has_child" => false], ["id" => 112, "num" => $needAuditResumeImg, "has_child" => false], ["id" => 113, "num" => $memberInfo, "has_child" => false], ["id" => 19, "num" => $suggestion + $report + $appeal, "has_child" => true], ["id" => 106, "num" => $suggestion, "has_child" => false], ["id" => 47, "num" => $report, "has_child" => false], ["id" => 50, "num" => $appeal, "has_child" => false], ["id" => 145, "num" => $jobfairJobs + $jobfairCompany, "has_child" => true], ["id" => 149, "num" => $jobfairJobs, "has_child" => false], ["id" => 151, "num" => $jobfairCompany, "has_child" => false], ["id" => 175, "num" => $jobfairoutJobs + $jobfairoutCompany, "has_child" => true], ["id" => 177, "num" => $jobfairoutJobs, "has_child" => false], ["id" => 179, "num" => $jobfairoutCompany, "has_child" => false], ]); } }