123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937 |
- <?php
- namespace App\Http\Controllers\Web\Hardware\Tv;
- use App\Http\Controllers\Web\WebBaseController;
- use App\Models\CategoryJobs;
- use App\Models\Company;
- use App\Models\Jobs;
- use App\Models\Member;
- use App\Models\PersonalTalent;
- use App\Models\Resume;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- use Encore\Admin\Facades\Admin;
- class DapingController extends WebBaseController
- {
- public $view_data = null;
- public $SUBSITE_ON = null;
- public $subsite_id = null;
- public $request_method = null;
- public $is_ajax = null;
- public $province = null;
- public $city = null;
- public function __construct(Request $request)
- {
- $this->view_data = null;
- $this->SUBSITE_ON = config('aix.SUBSITE_ON');
- $this->subsite_id = session('caiqing_susbite_id');
- $this->request_method = $request->method();
- $this->is_ajax = $request->ajax();
- $this->province = config('aix.province');
- $this->city = config('aix.city');
- }
- public function index(Request $request)
- {
- $news = $this->getNews($request);
- $overview = $this->getOverview($request);
- $talent = $this->getTalent($request);
- $demand = $this->getDemand($request);
- $demand2 = $this->getDemand2();
- $trend = $this->getTrend($request);
- $right_data = $this->get_right_data();
- return view('app.hardware.tv.daping', $this->view_data);
- }
-
- public function getNews(Request $request)
- {
- $mon = $request->input('mon', '0');
- $where = [];
- $where2 = [];
-
- if ($this->SUBSITE_ON == true) {
- if (!empty($this->subsite_id)) {
- $where['subsite_id'] = $this->subsite_id;
- $where2['subsite_id'] = $this->subsite_id;
- }
- }
-
- $end_day = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1;
- $end_day = date('Y-m-d H:i:s', $end_day);
- if (($mon >= 0)) {
- if ($mon == '0') {
- $pre_start = mktime(0, 0, 0, 1, 1, date('Y'));
- } elseif ($mon > 0) {
- $pre_start = strtotime(date('Y-m-d', strtotime("-" . $mon . " month")));
- }
- } else if ($mon == '-1') {
- $pre_start = null;
- $pre_end = null;
- }
- $pre_start = date('Y-m-d H:i:s', $pre_start);
-
- if ($mon >= 0) {
- $where_person_add[] = ['created_at', '>=', $pre_start];
- $where_person_add[] = ['created_at', '<=', $end_day];
- } else {
- $where_person_add[] = ['created_at', '<=', $end_day];
- }
- $personal_member_num = Member::where($where_person_add)->where($where)->count();
-
- if ($mon >= 0) {
- $where_company_add[] = ['created_at', '>=', $pre_start];
- $where_company_add[] = ['created_at', '<=', $end_day];
- } else {
- $where_company_add[] = ['created_at', '<=', $end_day];
- }
- $company_member_num = Company::where($where_company_add)->where($where)->count();
-
- $where_job_add = null;
- if ($mon >= 0) {
- $where_job_add[] = ['created_at', '>=', $pre_start];
- $where_job_add[] = ['created_at', '<=', $end_day];
- } else {
- $where_job_add[] = ['created_at', '<=', $end_day];
- }
- $job_num = Jobs::where($where_job_add)
- ->where($where)
- ->count();
- $amount_num = Jobs::where($where_job_add)
- ->where($where)
- ->sum('amount');
- if ($request->isMethod('post')) {
- $return_data = array('company_member_num' => $company_member_num, 'personal_member_num' => $personal_member_num, 'job_info' => $job_infos);
- return json_encode($return_data);
- } else {
- $this->view_data['company_member_num'] = $company_member_num;
- $this->view_data['personal_member_num'] = $personal_member_num;
- if ($job_num) {
- $this->view_data['job_num'] = $job_num;
- } else {
- $this->view_data['job_num'] = 0;
- }
- if ($amount_num) {
- $this->view_data['amount_num'] = $amount_num;
- } else {
- $this->view_data['amount_num'] = 0;
- }
- }
- }
- public function getEdvisiteducations(Request $request)
- {
- if (config('aix.SUBSITE_ON') == true) {
- $subsite_id = session('caiqing_susbite_id');
- if ($subsite_id >= 0) {
- $where_subsite = " and subsite_id = " . $subsite_id . "";
- } else {
- $where_subsite = "";
- }
- } else {
- $where_subsite = '';
- }
- $sql = "SELECT COUNT(*) AS num,b.c_name as c_name from resumes as a join categorys as b on a.education=b.c_id where b.c_alias='AIX_education' $where_subsite GROUP BY a.education order by num desc";
- $dataObj = DB::select($sql);
- $i = 0;
- $edata_str = "";
- $edata_pic = "";
- if ($request->isMethod('post')) {
- $str_arr = array();
- $edu_arr = array();
- foreach ($dataObj as $key => $value) {
- $edu_arr[] = array('value' => intval($value['num']), 'name' => $value['c_name']);
- $str_arr[] = $value['c_name'];
- }
- $data['edu_str'] = $str_arr;
- $data['edu_arr'] = $edu_arr;
- if ($str_arr && $edu_arr) {
- $data['status'] = 1;
- } else {
- $data['status'] = 0;
- }
- return json_encode($data);
- } else {
- foreach ($dataObj as $key => $value) {
- if (empty($edata_pic)) {
- $edata_pic = "{value:" . intval($value['num']) . ",name:'" . $value['c_name'] . "'}";
- } else {
- $edata_pic = $edata_pic . "," . "{value:" . intval($value['num']) . ",name:'" . $value['c_name'] . "'}";
- }
- if (empty($edata_str)) {
- $edata_str = "'" . $value['c_name'] . "'";
- } else {
- $edata_str = $edata_str . ',' . "'" . $value['c_name'] . "'";
- }
- $i++;
- }
- $this->view_data['edata_str'] = $edata_str;
- $this->view_data['edata'] = $edata_pic;
- }
- }
- public function getTalent(Request $request)
- {
-
- if ($this->SUBSITE_ON == true) {
- if ($this->subsite_id === false) {
- $where = [];
- } else {
- if (!empty($this->subsite_id)) {
- $where[] = ['subsite_id', '=', $this->subsite_id];
- }
- }
- } else {
- $where = [];
- }
-
- $mon = $request->input('request.mon', '0');
- $now_date = date('Y-m-d', time());
- if ($mon == 0) {
- $start_time = mktime(0, 0, 0, 1, 1, date('Y'));
- } else if ($mon > 0) {
- $start_time = date('Y-m-d', strtotime("-" . $mon . " month"));
- } else {
- $start_time = null;
- }
- $min = date('Y-m-d H:i:s', $start_time);
- $max = date('Y-m-d H:i:s', strtotime($now_date) + 60 * 60 * 24 - 1);
- $category = CategoryJobs::where('parent_id', '0')->get();
- $minNum = 0;
- $minusArr = array();
- foreach ($category as $key => $value) {
- if (strstr($value['categoryname'], '其他') === false && strstr($value['categoryname'], '其它') === false) {
- $minusArr[$key]['label'] = $value['name'];
- if ($min && $max) {
- $where[] = ['created_at', '>=', $min];
- $where[] = ['created_at', '<=', $max];
- } else {
- $where[] = ['created_at', '>=', $min];
- }
- $job_count = Jobs::where($where)
- ->where('topclass', '=', $value['id'])
- ->sum('amount');
- $dataObj = Resume::where($where)
- ->pluck('intention_jobs_id');
- $num = 0;
- foreach ($dataObj as $key1 => $value1) {
- $j = explode(",", $value1);
- $c = explode(".", $j[0]);
- if ($c[0] == $value['id']) {
- $num++;
- }
- }
- $resume_jobs = $num;
- $minusArr[$key]['value'] = $job_count - $resume_jobs;
- if ($minusArr[$key]['value'] < $minNum) {
- $minNum = $minusArr[$key]['value'];
- }
- }
- }
- $dArr = array();
- $item = 0;
- foreach ($minusArr as $key => $value) {
- $dArr[$item]['label'] = $value['label'];
- $dArr[$item]['value'] = $value['value'];
- $item++;
- }
- usort($dArr, function ($a, $b) {
- $al = $a['value'];
- $bl = $b['value'];
- if ($al == $bl)
- return 0;
- return ($al > $bl) ? -1 : 1;
- });
- $cate_names = array();
- $cate_values = array();
- foreach ($dArr as $k => $v) {
- $cate_names[] = $v['label'];
- $cate_values[] = $v['value'];
- }
- if ($this->is_ajax || $this->request_method == 'post') {
- return json_encode($dArr);
- } else {
- $this->view_data['category'] = $category;
- $this->view_data['minNum'] = $minNum;
- $this->view_data['data'] = $dArr;
- $this->view_data['cate_names'] = json_encode($cate_names);
- $this->view_data['cate_values'] = json_encode($cate_values);
- }
- }
-
- public function getTrend(Request $request)
- {
- $mon = $request->input('request.mon', '0');
- $now_date = date('Y-m-d', time());
- if ($mon == 0) {
- $start_time = mktime(0, 0, 0, 1, 1, date('Y'));
- } else if ($mon > 0) {
- $start_time = date('Y-m-d', strtotime("-" . $mon . " month"));
- } else {
- $start_time = null;
- }
- $min = strtotime($start_time);
- $max = strtotime($now_date) + 60 * 60 * 24 - 1;
- $start_year = date('Y', $min);
- $start_month = date('n', $min);
- $end_year = date('Y', $max);
- $end_month = date('n', $max);
-
- $month_data = array();
- $legend_data = array();
- $chart_data = array();
- if ($start_year == $end_year) {
- $date_where = array(
- 'start_date' => $min,
- 'end_date' => $max,
- );
- $res = $this->getTrendData($date_where);
- $chart_data[] = $res;
- $legend_data[] = $start_year . '年求职人数';
-
- for ($j = $start_month; $j <= $end_month; $j++) {
- $month_data[] = $j . '月';
- }
- } else {
- $y_num = $end_year - $start_year;
- for ($i = 0; $i <= $y_num; $i++) {
- if ($i == 4) {
- break;
- }
- $start = (string)($end_year - $i) . '-01-01';
- $end = (string)($end_year - $i + 1) . '-01-01';
- $date_where = array(
- 'start_date' => strtotime($start),
- 'end_date' => strtotime($end) - 1,
- );
- $res = $this->getTrendData($date_where);
- $chart_data[] = $res;
- $legend_data[] = ($end_year - $i) . '年求职人数';
- }
- $month_data = array('1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月');
- }
- $chart_data_str = '[';
- $chart_data_arr = array();
- if ($chart_data) {
- foreach ($chart_data as $k => $v) {
- $chart_data_arr[] = "{name:'" . $v['name'] . "',type:'" . $v['type'] . "',data:[" . implode(',', $v['data']) . "], symbolSize:'" . $v['symbolSize'] . "',}";
- }
- }
- $chart_data_str .= implode(',', $chart_data_arr) . ']';
- if ($this->request_method == 'post' || $this->is_ajax) {
- $return_data = array('legend_data' => $legend_data, 'chart_data' => $chart_data, 'month_data' => $month_data);
- return json_encode($return_data);
- } else {
- $this->view_data['legend_data'] = $legend_data;
- $this->view_data['chart_data'] = $chart_data_str;
- $this->view_data['month_data'] = $month_data;
- }
- }
- public function getTrendData($map)
- {
- $where = [];
- $where2 = [];
- if ($this->SUBSITE_ON == true) {
- if ($this->subsite_id !== false) {
- if ($this->subsite_id >= 0) {
- $where['subsite_id'] = $this->subsite_id;
- $where2['subsite_id'] = $this->subsite_id;
- }
- }
- }
- $min_date = $map['start_date'];
- $max_date = $map['end_date'];
-
- $start_year = date('Y', $min_date);
- $end_year = date('Y', $max_date);
- $start_month = date('n', $min_date);
- $end_month = date('n', $max_date);
- $val_data = array();
- for ($i = $start_month; $i <= $end_month; $i++) {
- $min = strtotime($start_year . '-' . $i);
- if ($i == 12) {
- $max = strtotime(($end_year + 1) . '-1');
- } else {
- $max = strtotime($end_year . '-' . ($i + 1));
- }
- $admin = Admin::user();
- if (!empty($admin)) {
- if ($admin->role_id == 3) {
- $where['district'] = $this->province;
- } else if ($admin->role_id == 4) {
- $where['sdistrict'] = $this->city;
- } else if ($admin->role_id == 5) {
- $where['user_id'] = $admin->id;
- }
- }
- $where[] = ['created_at', '>=', $min];
- $where[] = ['created_at', '<=', $max];
- $resume_count = Resume::where($where)->count();
- $val_data[] = $resume_count;
- }
- $resumeArr = array(
- 'name' => $start_year . '年求职人数',
- 'type' => 'line',
- 'data' => $val_data,
- 'symbolSize' => '10',
- );
- return $resumeArr;
- }
- public function getDemand(Request $request)
- {
-
- $where = [];
- if ($this->SUBSITE_ON == true) {
- if (!empty($this->subsite_id)) {
- $where['subsite_id'] = $this->subsite_id;
- }
- }
- $category = CategoryJobs::where('parent_id', '=', '0')->limit(7)->get();
- $month_array = ['1' => '一月', '2' => '二月', '3' => '三月', '4' => '四月', '5' => '五月', '6' => '六月', '7' => '七月', '8' => '八月', '9' => '九月', '10' => '十月', '11' => '十一月', '12' => '十二月'];
- $prev_date_start = date("Y-m-d H:i:s", mktime(0, 0, 0, date("m") - 1, 1, date("Y")));
- $prev_date_end = date("Y-m-d H:i:s", mktime(23, 59, 59, date("m"), 0, date("Y")));
- $prev_two_date_start = date("Y-m-d H:i:s", mktime(0, 0, 0, date("m") - 2, 1, date("Y")));
- $prev_two_date_end = date("Y-m-d H:i:s", mktime(23, 59, 59, date("m"), -1, date("Y")));
- $prev_two_month_str = $month_array[date('n', strtotime($prev_two_date_start))];
- $prev_month_str = $month_array[date('n', strtotime($prev_date_start))];
- $data = [];
- foreach ($category as $key => $value) {
- switch ($key) {
- case 0;
- $catename = '单位负责人';
- break;
- case 1;
- $catename = '专业技术人员';
- break;
- case 2;
- $catename = '办事人员和有关人员';
- break;
- case 3;
- $catename = '商业和服务业人员';
- break;
- case 4;
- $catename = '农林牧渔水利生产人员';
- break;
- case 5;
- $catename = '生产运输设备操作工';
- break;
- case 6;
- $catename = '其他';
- break;
- default;
- $catename = '未知';
- break;
- }
- $data[] = [
- 'catename' => $catename,
- 'name' => $value->name,
- 'total_jobs' => Jobs::where($where)
- ->where('topclass', '=', $value->id)
- ->where('created_at', '>=', $prev_date_start)
- ->where('created_at', '<=', $prev_date_end)
- ->count(),
- 'total_resume' => Jobs::where($where)
- ->where('created_at', '>=', $prev_two_date_start)
- ->where('created_at', '<=', $prev_two_date_end)
- ->count(),
- ];
- }
-
- $total_jobs = 0;
- foreach ($data as $k => $v) {
- $total_jobs += $v['total_jobs'];
- }
-
- $total_resume = 0;
- foreach ($data as $k => $v) {
- $total_resume += $v['total_resume'];
- }
-
- $categories = array();
- foreach ($data as $k => $v) {
- $categories[] = $v['catename'];
- }
-
- $dataValue = array();
- $resume_value = array();
- $multiple_value = array();
- foreach ($data as $k => $v) {
- $dataValue[] = $v['total_jobs'];
- $resume_value[] = $v['total_resume'];
- $total_name[] = $v['name'];
- }
- if ($this->request_method == 'post' || $this->is_ajax) {
- $return_data = array('data_charts' => $dataValue, 'data_charts2' => $resume_value, 'categories' => $categories, 'multiple' => $multiple_value);
- return $return_data;
- } else {
- $this->view_data['data_charts'] = json_encode($dataValue);
- $this->view_data['data_charts2'] = json_encode($resume_value);
- $this->view_data['total_name'] = json_encode($total_name);
- $this->view_data['prev_month_str'] = json_encode($prev_month_str);
- $this->view_data['prev_two_month_str'] = json_encode($prev_two_month_str);
- $this->view_data['multiple'] = json_encode($multiple_value);
- $this->view_data['categories'] = $categories;
- }
- }
- public function getDemand2()
- {
-
- $where = [];
- if ($this->SUBSITE_ON == true) {
- if (!empty($this->subsite_id)) {
- if ($this->subsite_id >= 0) {
- $where['subsite_id'] = $this->subsite_id;
- } else {
- $where = [];
- }
- }
- }
- $month_array = ['1' => '一月', '2' => '二月', '3' => '三月', '4' => '四月', '5' => '五月', '6' => '六月', '7' => '七月', '8' => '八月', '9' => '九月', '10' => '十月', '11' => '十一月', '12' => '十二月'];
- $prev_date_start = date("Y-m-d H:i:s", mktime(0, 0, 0, date("m") - 1, 1, date("Y")));
- $prev_date_end = date("Y-m-d H:i:s", mktime(23, 59, 59, date("m"), 0, date("Y")));
- $prev_two_date_start = date("Y-m-d H:i:s", mktime(0, 0, 0, date("m") - 2, 1, date("Y")));
- $prev_two_date_end = date("Y-m-d H:i:s", mktime(23, 59, 59, date("m"), -1, date("Y")));
- $prev_two_month_str2 = $month_array[date('n', strtotime($prev_two_date_start))];
- $prev_month_str2 = $month_array[date('n', strtotime($prev_date_start))];
- $ids = [
- 802 => '第一类人才',
- 803 => '第二类人才',
- 804 => '第三类人才',
- 805 => '第四类人才',
- 806 => '第五类人才',
- 0 => '不符合人才标准'
- ];
- foreach ($ids as $key => $value) {
- $data[] = [
- 'name' => $value,
- 'total_jobs' => PersonalTalent::where($where)
- ->where("rc_level_id", '=', $key)
- ->where('created_at', '>=', $prev_date_start)
- ->where('created_at', '<=', $prev_date_end)
- ->count(),
- 'total_resume' => PersonalTalent::where($where)
- ->where("rc_level_id", '=', $key)
- ->where('created_at', '>=', $prev_two_date_start)
- ->where('created_at', '<=', $prev_two_date_end)
- ->count(),
- ];
- }
-
- $total_jobs = 0;
- foreach ($data as $k => $v) {
- $total_jobs += $v['total_jobs'];
- }
-
- $total_resume = 0;
- foreach ($data as $k => $v) {
- $total_resume += $v['total_resume'];
- }
-
-
- $dataValue = array();
- $resume_value = array();
- $multiple_value = array();
- foreach ($data as $k => $v) {
- $dataValue[] = $v['total_jobs'];
- $resume_value[] = $v['total_resume'];
- $total_name[] = $v['name'];
- }
- if ($this->is_ajax || $this->request_method == 'post') {
- $return_data = array('data_charts' => $dataValue, 'data_charts2' => $resume_value, 'multiple' => $multiple_value);
- return $return_data;
- } else {
- $this->view_data['data_charts3'] = json_encode($dataValue);
- $this->view_data['data_charts4'] = json_encode($resume_value);
- $this->view_data['total_name2'] = json_encode($total_name);
- $this->view_data['prev_month_str2'] = json_encode($prev_month_str2);
- $this->view_data['prev_two_month_str2'] = json_encode($prev_two_month_str2);
- $this->view_data['multiple'] = json_encode($multiple_value);
- }
- }
- public function getEducations()
- {
- $where_subsite = '';
- if ($this->SUBSITE_ON == true) {
- if (!empty($this->subsite_id)) {
- $where_subsite = " and subsite_id = " . $this->subsite_id . "";
- }
- }
- $sql = "SELECT COUNT(*) AS num,b.demand as demand from resumes as a join categorys as b on a.education=b.id where b.alias='AIX_education' $where_subsite GROUP BY a.education order by num desc";
- $dataObj = DB::select($sql);
- $str_arr = array();
- $edu_arr = array();
- foreach ($dataObj as $key => $value) {
- $edu_arr[] = array('value' => intval($value->num), 'name' => $value->demand);
- $str_arr[] = $value->demand;
- }
- $data['edu_str'] = $str_arr;
- $data['edu_arr'] = $edu_arr;
- if ($str_arr && $edu_arr) {
- $data['status'] = 1;
- } else {
- $data['status'] = 0;
- }
- return json_encode($data);
- }
-
- public function get_right_data()
- {
-
- $where = [];
- if ($this->SUBSITE_ON == true) {
- if (!empty($this->subsite_id)) {
- $where['subsite_id'] = $this->subsite_id;
- }
- }
- $now_year = date('Y');
- $data = array();
- $for_data = array(
- ['district_cn' => "晋江市", 'age' => "31-40岁", 'max' => 40, 'min' => 31, 'district' => 568],
- ['district_cn' => "泉州市", 'age' => "26-30岁", 'max' => 30, 'min' => 26, 'district' => 573],
- ['district_cn' => "石狮市", 'age' => "23-25岁", 'max' => 25, 'min' => 23, 'district' => 570],
- ['district_cn' => "福清市", 'age' => "41-50岁", 'max' => 50, 'min' => 41, 'district' => 540],
- ['district_cn' => "长乐市", 'age' => "51-60岁", 'max' => 60, 'min' => 51, 'district' => 539],
- ['district_cn' => "思明区", 'age' => "18-22岁", 'max' => 22, 'min' => 18, 'district' => 551],
- );
- foreach ($for_data as $key => $value) {
- $data[] = [
- 'district_cn' => $value['district_cn'],
- 'age' => $value['age'],
- 'total_man' => Resume::distinct()->where($where)
- ->where('birthdate', '>', $now_year - $value['max'])
- ->where('birthdate', '<=', $now_year - $value['min'])
- ->where('sex', '=', 1)
- ->count(),
- 'total_women' => Resume::distinct()->where($where)
- ->where('birthdate', '>', $now_year - $value['max'])
- ->where('birthdate', '<=', $now_year - $value['min'])
- ->where('sex', '=', 2)
- ->count(),
- 'total_district' => Resume::distinct()->where($where)
- ->where('district', 'like', '%' . $value['district'] . '%')
- ->where('display', '1')
- ->count(),
- 'total_district2' => Resume::distinct()->where($where)
- ->where('district', 'like', '%' . $value['district'] . '%')
- ->where('display', '0')
- ->count(),
- ];
- }
- foreach ($data as $k => $v) {
- $district_cn[] = $v['district_cn'];
- $age[] = $v['age'];
- $total_man[] = $v['total_man'];
- $total_women[] = $v['total_women'];
- $total_district[] = $v['total_district'];
- $total_district2[] = $v['total_district2'];
- }
- $this->view_data['district_cn'] = json_encode($district_cn, true);
- $this->view_data['age'] = json_encode($age, true);
- $this->view_data['total_man'] = json_encode($total_man);
- $this->view_data['total_women'] = json_encode($total_women);
- $this->view_data['total_district'] = json_encode($total_district);
- $this->view_data['total_district2'] = json_encode($total_district2);
- }
- public function getCompetition(Request $request)
- {
- $mon = I('request.mon', '0', 'intval');
- $now_date = date('Y-m-d', time());
- if ($mon == 0) {
- $start_date = mktime(0, 0, 0, 1, 1, date('Y'));
- } else if ($mon > 0) {
- $start_time = date('Y-m-d', strtotime("-" . $mon . " month"));
- } else {
- $start_time = null;
- }
-
- $min = strtotime($start_time);
- $max = strtotime($now_date) + 60 * 60 * 24 - 1;
-
- if (C('SUBSITE_ON') == true) {
- if ($this->subsite_id === false) {
- $where = [];
- } else {
- if ($this->subsite_id >= 0) {
- $where['subsite_id'] = $this->subsite_id;
- } else {
- $where['subsite_id'] = array('IN', '0,1,2,3,4,5');
- }
- }
- } else {
- $where = [];
- }
- if ($this->role_id == 3) {
- $condition = " and a.district = " . $this->province . "";
- } else if ($this->role_id == 4) {
- $condition = " and a.sdistrict = " . $this->city . "";
- } else if ($this->role_id == 5) {
- $condition = " and a.user_id = " . $this->uid . "";
- } else {
- $condition = "";
- }
- $tradeData = M('category_jobs')->where("parentid=0")->select();
- foreach ($tradeData as $key => $value) {
- $cidArr[] = $value['id'];
- }
- $cidStr = implode(',', $cidArr);
- $tradeArr = array();
- if ($min && $max) {
- $wheresql = " and apply_addtime>" . $min . " and apply_addtime<" . $max . " ";
- } else {
- $wheresql = " and apply_addtime<" . $max . " ";
- }
- $obj = M("personal_jobs_apply as p")->field("COUNT(*) AS num,j.category")
- ->join("left JOIN qs_jobs AS j ON p.jobs_id=j.id")
- ->where("1=1" . $wheresql . $condition)
- ->where($where)
- ->group("j.category")
- ->order("num desc")
-
- ->select();
- $i = 0;
- foreach ($obj as $key => $value) {
- if ($i == 8) {
- break;
- }
- if ($value['category'] > 0) {
- $cat = M('category_jobs')->where("id=" . $value['category'] . "")->find();
- $tradeArr[$key]['label'] = $cat['categoryname'];
- $tradeArr[$key]['value'] = $value['num'];
- $tabledata[$key]['t_name'] = $cat['categoryname'];
- $tabledata[$key]['num'] = $value['num'];
- $i++;
- }
- }
- $dArr = array();
- $cname_arr = array();
- $cvale_arr = array();
- $item = 0;
- foreach ($tradeArr as $key => $value) {
- $dArr[$item]['label'] = $value['label'];
- $dArr[$item]['value'] = $value['value'];
- $item++;
- $cname_arr[] = $value['label'];
- $cvale_arr[] = $value['value'];
- }
- if (IS_POST || IS_AJAX) {
- echo json_encode($dArr);
- } else {
- $this->assign('cname_arr', json_encode($cname_arr));
- $this->assign('cvale_arr', json_encode($cvale_arr));
- }
- }
- public function getOverview(Request $request)
- {
- $mon = $request->input('mon', 0);
- $now_time = time();
- $now_date = date('Y-m-d', $now_time);
- if ($mon == 0) {
- $start_time = mktime(0, 0, 0, 1, 1, date('Y'));
- } else if ($mon > 0) {
- $start_time = date('Y-m-d', strtotime("-" . $mon . " month"));
- } else {
- $start_time = null;
- }
-
- $min = date('Y-m-d H:i:s', $start_time);
- $max = date('Y-m-d H:i:s', strtotime($now_date) + 60 * 60 * 24 - 1);
-
-
- $wheresql = '';
- $wheresql_d = '';
- if (!empty($this->subsite_id) and $this->subsite_id >= 0) {
- $where['subsite_id'] = $this->subsite_id;
- $where2['subsite_id'] = $this->subsite_id;
- $wheresql .= " and subsite_id = ?";
- $whereVal[] = $this->subsite_id;
- }
- $admin = Admin::user();
- if (!empty($admin)) {
- if ($admin->role_id == 3) {
- $wheresql .= " and a.district = ?";
- $whereVal[] = $this->province;
- } else if ($admin->role_id == 4) {
- $wheresql .= " and a.sdistrict = ?";
- $whereVal[] = $this->city;
- } else if ($admin->role_id == 5) {
- $wheresql .= " and a.user_id = ?";
- $whereVal[] = $admin->id;
- }
- }
-
- $data = array();
- if ($min && $max) {
- $wheresql .= " where a.created_at > ? and a.created_at < ?";
- $wheresql_d .= " where d.down_addtime > ? and d.down_addtime < ?";
- $whereVal[] = $min;
- $whereVal[] = $max;
- } else {
- $wheresql .= " where a.created_at < ?";
- $wheresql_d .= " where d.down_addtime < ? ";
- $whereVal[] = $max;
- }
- $sql = "SELECT COUNT(*) AS num,j.category,c.name FROM personal_jobs_apply AS a INNER JOIN jobs AS j on j.id=a.jobs_id LEFT JOIN category_jobs as c on c.id = j.category $wheresql GROUP BY j.category ORDER BY num desc limit 0,10";
- $dataObj = DB::select($sql, $whereVal);
- $i = 0;
- $c_ids = array();
- foreach ($dataObj as $key => $value) {
- if ($value->category > 0) {
- $data[$i]['order'] = $i + 1;
- $data[$i]['t_name'] = $value->name;
- $data[$i]['num'] = $value->num;
- $data[$i]['category'] = $value->category;
- $c_ids[] = $value->category;
- $data[$i]['download_num'] = 0;
- $i++;
- }
- }
- if ($c_ids) {
- $wheresql_d .= ' and j.category in ( ? )';
- $whereVal[] = implode(',', $c_ids);
- }
- $downloads = $this->getDownloadInfo($wheresql_d, $whereVal);
- foreach ($data as $k => $v) {
- if (isset($downloads[$v['category']]) && $downloads[$v['category']]) {
- $data[$k]['download_num'] = $downloads[$v->category];
- }
- }
- if ($this->is_ajax || $this->request_method == 'post') {
- echo json_encode($data);
- } else {
- $this->view_data['overviewInfo'] = $data;
- }
- }
-
- public function getDownloadInfo($where, $whereVal)
- {
- $sql = "SELECT COUNT(*) AS num,j.category FROM company_down_resumes as d INNER join jobs AS j on j.company_id = d.company_uid $where GROUP BY j.category ORDER BY num DESC";
- $dataObj = DB::select($sql, $whereVal);
- $data = array();
- foreach ($dataObj as $key => $value) {
- $data[$value->category] = $value->num;
- }
- return $data;
- }
- }
|