Screen.php 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667
  1. <?php
  2. namespace app\mainapp\controller;
  3. use app\common\model\RensheCode;
  4. use app\mainapp\BaseController;
  5. use app\common\model\Comjobs as ComjobsModel;
  6. use app\common\model\ComjobsCate as ComjobsCateModel;
  7. use app\common\model\User as UserModel;
  8. use app\common\model\Broker as BrokerModel;
  9. use app\common\model\Worker as WorkerModel;
  10. use app\common\model\Train as TrainModel;
  11. use app\common\model\TrainJoin as TrainJoinModel;
  12. class Screen extends BaseController
  13. {
  14. /**
  15. * 大屏数据
  16. */
  17. public function index()
  18. {
  19. $mul_min = 1;
  20. $mul_max = 1;
  21. $res = [];
  22. //街道数据
  23. /*$comjobs_community = ComjobsModel::field("count(community),community")->group('community')->column('count(community)', 'community');
  24. $community = RensheCode::getList('community')->toArray();
  25. $broker_town = BrokerModel::field("count(town),town")->group('town')->column('count(town)', 'town');
  26. foreach ($community as &$v) {
  27. if (!empty($comjobs_community[$v['code']])) {
  28. $v['count'] = $comjobs_community[$v['code']];
  29. } else {
  30. $v['count'] = 0;
  31. }
  32. if (!empty($broker_town[$v['name']])) {
  33. $v['broker_count'] = $broker_town[$v['name']];
  34. } else {
  35. $v['broker_count'] = 0;
  36. }
  37. unset($v);
  38. }
  39. $community[] = [
  40. 'id' => 0,
  41. 'name' => '其他',
  42. 'code' => '',
  43. 'count' => $comjobs_community[''] ?? 0,
  44. 'broker_count' => $broker_town[''] ?? 0,
  45. ];*/
  46. $community = [
  47. [
  48. "id"=> 2,
  49. "name"=> "青阳街道",
  50. "code"=> "350582001",
  51. "count"=> 639,
  52. "broker_count"=> 8
  53. ],
  54. [
  55. "id"=> 3,
  56. "name"=> "梅岭街道",
  57. "code"=> "350582002",
  58. "count"=> 5487,
  59. "broker_count"=> 5
  60. ],
  61. [
  62. "id"=> 4,
  63. "name"=> "西园街道",
  64. "code"=> "350582003",
  65. "count"=> 81,
  66. "broker_count"=> 0
  67. ],
  68. [
  69. "id"=> 5,
  70. "name"=> "罗山街道",
  71. "code"=> "350582004",
  72. "count"=> 542,
  73. "broker_count"=> 1
  74. ],
  75. [
  76. "id"=> 6,
  77. "name"=> "新塘街道",
  78. "code"=> "350582005",
  79. "count"=> 273,
  80. "broker_count"=> 1
  81. ],
  82. [
  83. "id"=> 7,
  84. "name"=> "灵源街道",
  85. "code"=> "350582006",
  86. "count"=> 257,
  87. "broker_count"=> 2
  88. ],
  89. [
  90. "id"=> 8,
  91. "name"=> "安海镇",
  92. "code"=> "350582101",
  93. "count"=> 526,
  94. "broker_count"=> 94
  95. ],
  96. [
  97. "id"=> 9,
  98. "name"=> "磁灶镇",
  99. "code"=> "350582102",
  100. "count"=> 201,
  101. "broker_count"=> 0
  102. ],
  103. [
  104. "id"=> 10,
  105. "name"=> "陈埭镇",
  106. "code"=> "350582103",
  107. "count"=> 735,
  108. "broker_count"=> 0
  109. ],
  110. [
  111. "id"=> 11,
  112. "name"=> "东石镇",
  113. "code"=> "350582104",
  114. "count"=> 2784,
  115. "broker_count"=> 2
  116. ],
  117. [
  118. "id"=> 12,
  119. "name"=> "深沪镇",
  120. "code"=> "350582105",
  121. "count"=> 315,
  122. "broker_count"=> 0
  123. ],
  124. [
  125. "id"=> 13,
  126. "name"=> "金井镇",
  127. "code"=> "350582106",
  128. "count"=> 102,
  129. "broker_count"=> 0
  130. ],
  131. [
  132. "id"=> 14,
  133. "name"=> "池店镇",
  134. "code"=> "350582107",
  135. "count"=> 1024,
  136. "broker_count"=> 1
  137. ],
  138. [
  139. "id"=> 15,
  140. "name"=> "内坑镇",
  141. "code"=> "350582109",
  142. "count"=> 72,
  143. "broker_count"=> 1
  144. ],
  145. [
  146. "id"=> 17,
  147. "name"=> "龙湖镇",
  148. "code"=> "350582110",
  149. "count"=> 99,
  150. "broker_count"=> 0
  151. ],
  152. [
  153. "id"=> 18,
  154. "name"=> "永和镇",
  155. "code"=> "350582111",
  156. "count"=> 175,
  157. "broker_count"=> 0
  158. ],
  159. [
  160. "id"=> 19,
  161. "name"=> "英林镇",
  162. "code"=> "350582112",
  163. "count"=> 54,
  164. "broker_count"=> 0
  165. ],
  166. [
  167. "id"=> 20,
  168. "name"=> "紫帽镇",
  169. "code"=> "350582113",
  170. "count"=> 105,
  171. "broker_count"=> 0
  172. ],
  173. [
  174. "id"=> 21,
  175. "name"=> "西滨镇",
  176. "code"=> "350582114",
  177. "count"=> 9,
  178. "broker_count"=> 0
  179. ],
  180. [
  181. "id"=> 22,
  182. "name"=> "经济开发区",
  183. "code"=> "350582501",
  184. "count"=> 167,
  185. "broker_count"=> 0
  186. ],
  187. [
  188. "id"=> 0,
  189. "name"=> "其他",
  190. "code"=> "",
  191. "count"=> 289,
  192. "broker_count"=> 1
  193. ]
  194. ];
  195. $res['community'] = $community;
  196. //岗位类别
  197. /*$comjobs_cate = ComjobsModel::field("count(cateid),cateid")->group('cateid')->column('count(cateid)', 'cateid');
  198. $cateids = array_keys($comjobs_cate);
  199. $cate = ComjobsCateModel::where('id', 'in', $cateids)->select()->toArray();
  200. foreach ($cate as &$v) {
  201. $v['count'] = $comjobs_cate[$v['id']];
  202. unset($v);
  203. }*/
  204. $cate = [
  205. [
  206. "id"=> 26,
  207. "pid"=> 0,
  208. "title"=> "生产管理",
  209. "priority"=> 22,
  210. "code"=> "2022803",
  211. "count"=> 363
  212. ],
  213. [
  214. "id"=> 27,
  215. "pid"=> 0,
  216. "title"=> "送餐员",
  217. "priority"=> 0,
  218. "code"=> "4030200",
  219. "count"=> 102
  220. ],
  221. [
  222. "id"=> 28,
  223. "pid"=> 0,
  224. "title"=> "物流",
  225. "priority"=> 2,
  226. "code"=> "2023002",
  227. "count"=> 33
  228. ],
  229. [
  230. "id"=> 29,
  231. "pid"=> 0,
  232. "title"=> "仓储",
  233. "priority"=> 3,
  234. "code"=> "4020600",
  235. "count"=> 246
  236. ],
  237. [
  238. "id"=> 30,
  239. "pid"=> 0,
  240. "title"=> "司机",
  241. "priority"=> 4,
  242. "code"=> "6300505",
  243. "count"=> 69
  244. ],
  245. [
  246. "id"=> 31,
  247. "pid"=> 0,
  248. "title"=> "家政保洁",
  249. "priority"=> 5,
  250. "code"=> "4090801",
  251. "count"=> 75
  252. ],
  253. [
  254. "id"=> 32,
  255. "pid"=> 0,
  256. "title"=> "家政保姆(照顾小孩)",
  257. "priority"=> 6,
  258. "code"=> "4100106",
  259. "count"=> 12
  260. ],
  261. [
  262. "id"=> 33,
  263. "pid"=> 0,
  264. "title"=> "家政保姆(照顾正常老人)",
  265. "priority"=> 7,
  266. "code"=> "4100106",
  267. "count"=> 3
  268. ],
  269. [
  270. "id"=> 35,
  271. "pid"=> 0,
  272. "title"=> "家政月嫂",
  273. "priority"=> 9,
  274. "code"=> "4100106",
  275. "count"=> 3
  276. ],
  277. [
  278. "id"=> 36,
  279. "pid"=> 0,
  280. "title"=> "酒店餐饮服务员",
  281. "priority"=> 10,
  282. "code"=> "4030200",
  283. "count"=> 42
  284. ],
  285. [
  286. "id"=> 37,
  287. "pid"=> 0,
  288. "title"=> "酒店餐饮保洁",
  289. "priority"=> 11,
  290. "code"=> "4030200",
  291. "count"=> 6
  292. ],
  293. [
  294. "id"=> 38,
  295. "pid"=> 0,
  296. "title"=> "保安",
  297. "priority"=> 12,
  298. "code"=> "4070501",
  299. "count"=> 126
  300. ],
  301. [
  302. "id"=> 39,
  303. "pid"=> 0,
  304. "title"=> "水电工",
  305. "priority"=> 13,
  306. "code"=> "6310103",
  307. "count"=> 87
  308. ],
  309. [
  310. "id"=> 40,
  311. "pid"=> 0,
  312. "title"=> "工程师",
  313. "priority"=> 14,
  314. "code"=> "6310103",
  315. "count"=> 77
  316. ],
  317. [
  318. "id"=> 41,
  319. "pid"=> 0,
  320. "title"=> "大学生实习(兼职)",
  321. "priority"=> 15,
  322. "code"=> "4000000",
  323. "count"=> 115
  324. ],
  325. [
  326. "id"=> 42,
  327. "pid"=> 0,
  328. "title"=> "餐饮后厨",
  329. "priority"=> 16,
  330. "code"=> "4030200",
  331. "count"=> 87
  332. ],
  333. [
  334. "id"=> 43,
  335. "pid"=> 0,
  336. "title"=> "生活\/ 服务业",
  337. "priority"=> 17,
  338. "code"=> "4000000",
  339. "count"=> 2166
  340. ],
  341. [
  342. "id"=> 44,
  343. "pid"=> 0,
  344. "title"=> "市场\/媒介\/广告\/设计",
  345. "priority"=> 18,
  346. "code"=> "4000000",
  347. "count"=> 252
  348. ],
  349. [
  350. "id"=> 45,
  351. "pid"=> 0,
  352. "title"=> "发货员",
  353. "priority"=> 19,
  354. "code"=> "4000000",
  355. "count"=> 130
  356. ],
  357. [
  358. "id"=> 46,
  359. "pid"=> 0,
  360. "title"=> "车间工人",
  361. "priority"=> 20,
  362. "code"=> "6180101",
  363. "count"=> 125
  364. ],
  365. [
  366. "id"=> 47,
  367. "pid"=> 0,
  368. "title"=> "采购",
  369. "priority"=> 21,
  370. "code"=> "6180102",
  371. "count"=> 27
  372. ],
  373. [
  374. "id"=> 48,
  375. "pid"=> 0,
  376. "title"=> "缝纫工",
  377. "priority"=> 22,
  378. "code"=> "6050103",
  379. "count"=> 30
  380. ],
  381. [
  382. "id"=> 49,
  383. "pid"=> 0,
  384. "title"=> "销售",
  385. "priority"=> 23,
  386. "code"=> "6050401",
  387. "count"=> 57
  388. ],
  389. [
  390. "id"=> 54,
  391. "pid"=> 0,
  392. "title"=> "普工",
  393. "priority"=> 24,
  394. "code"=> "",
  395. "count"=> 300
  396. ],
  397. [
  398. "id"=> 55,
  399. "pid"=> 0,
  400. "title"=> "行政\/文员",
  401. "priority"=> 20,
  402. "code"=> "",
  403. "count"=> 26
  404. ]
  405. ];
  406. $res['cate'] = $cate;
  407. //岗位类型
  408. // $comjobs_type = ComjobsModel::field("count(wtype) count,wtype")->group('wtype')->select();
  409. $comjobs_type = [
  410. [
  411. "count" => 2405,
  412. "wtype" => 1,
  413. ],
  414. [
  415. "count" => 1157,
  416. "wtype" => 2,
  417. ],
  418. [
  419. "count" => 306,
  420. "wtype" => 3,
  421. ],
  422. [
  423. "count" => 124,
  424. "wtype" => 4,
  425. ],
  426. [
  427. "count" => 567,
  428. "wtype" => 5,
  429. ],
  430. ];
  431. $res['type'] = $comjobs_type;
  432. //岗位数据
  433. $comjobs_map = [];
  434. $comjobs_map[] = ['createtime', '<=', time()];
  435. $comjobs_map[] = ['status', 'in', '3,4'];
  436. $orderby = ['status' => 'asc', 'updatetime' => 'desc', 'id' => 'desc'];
  437. $comjobs_new = [];
  438. $comjobs_new_data = ComjobsModel::with(['worker'])->where($comjobs_map)->order($orderby)->limit(20)->select();
  439. foreach ($comjobs_new_data as $v) {
  440. $comjobs_new[] = [
  441. 'title' => $v['title'],
  442. 'company' => $v['worker']['title'],
  443. 'salary' => $v['zwagall'],
  444. ];
  445. }
  446. $comjobs_hot = [];
  447. $comjobs_hot_data = ComjobsModel::with(['worker'])->where($comjobs_map)->order('volume', 'desc')->limit(20)->select();
  448. foreach ($comjobs_hot_data as $v) {
  449. $comjobs_hot[] = [
  450. 'title' => $v['title'],
  451. 'company' => $v['worker']['title'],
  452. 'salary' => $v['zwagall'],
  453. ];
  454. }
  455. $res['comjobs']['new'] = $comjobs_new;
  456. $res['comjobs']['hot'] = $comjobs_hot_data;
  457. //学历
  458. /*$user_education = UserModel::field("count(education),education")->group('education')->column('count(education)', 'education');
  459. $education_data = ['' => '未知', 1 => '初中及以下', 2 => '高中', 3 => '中技', 4 => '中专', 5 => '大专', 6 => '本科', 7 => '硕士', 8 => '博士'];
  460. $education = [];
  461. foreach ($education_data as $k => $v) {
  462. $item = ['name' => $v];
  463. if (empty($user_education[$k])) {
  464. $item['count'] = 0;
  465. } else {
  466. $item['count'] = $user_education[$k];
  467. }
  468. $education[] = $item;
  469. }*/
  470. $education = [
  471. [
  472. "name"=> "未知",
  473. "count"=> 11401
  474. ],
  475. [
  476. "name"=> "初中及以下",
  477. "count"=> 480
  478. ],
  479. [
  480. "name"=> "高中",
  481. "count"=> 308
  482. ],
  483. [
  484. "name"=> "中技",
  485. "count"=> 80
  486. ],
  487. [
  488. "name"=> "中专",
  489. "count"=> 204
  490. ],
  491. [
  492. "name"=> "大专",
  493. "count"=> 384
  494. ],
  495. [
  496. "name"=> "本科",
  497. "count"=> 284
  498. ],
  499. [
  500. "name"=> "硕士",
  501. "count"=> 20
  502. ],
  503. [
  504. "name"=> "博士",
  505. "count"=> 16
  506. ]
  507. ];
  508. $res['eduction'] = $education;
  509. //年龄分布
  510. /*$user_age_other = UserModel::where('idcard', '')->count();
  511. $user_idcard = UserModel::field('idcard')->where('idcard', '<>', '')->select();
  512. $user_age = [
  513. ['name' => '16-25', 'count' => 0],
  514. ['name' => '25-35', 'count' => 0],
  515. ['name' => '35-45', 'count' => 0],
  516. ['name' => '45以上', 'count' => 0],
  517. ['name' => '其他', 'count' => $user_age_other],
  518. ];
  519. foreach ($user_idcard as $v) {
  520. $age = get_age($v['idcard']);
  521. if ($age >= 16) {
  522. $user_age[0]['count']++;
  523. } elseif ($age >= 25) {
  524. $user_age[1]['count']++;
  525. } elseif ($age >= 35) {
  526. $user_age[2]['count']++;
  527. } elseif ($age >= 45) {
  528. $user_age[3]['count']++;
  529. }
  530. }*/
  531. $user_age = [
  532. ['name' => '16-25', 'count' => 10981],
  533. ['name' => '25-35', 'count' => 0],
  534. ['name' => '35-45', 'count' => 0],
  535. ['name' => '45以上', 'count' => 0],
  536. ['name' => '其他', 'count' => 2196],
  537. ];
  538. $res['user_age'] = $user_age;
  539. //注册相关
  540. /*$user_gender = UserModel::field("count(gender),gender")->group('gender')->column('count(gender)', 'gender');
  541. $res['people_total'] = array_sum($user_gender);
  542. $res['people_man'] = $user_gender[1];
  543. $res['people_woman'] = $user_gender[2];
  544. $res['broker_total'] = BrokerModel::count();*/
  545. $res['people_total'] = 13177;
  546. $res['people_man'] = 9224;
  547. $res['people_woman'] = 3953;
  548. $res['broker_total'] = 416;
  549. //岗位相关
  550. /*$res['company_total'] = WorkerModel::where('status', 'in', '4,5')->count();
  551. $res['comjobs_total'] = ComjobsModel::where($comjobs_map)->count();*/
  552. $res['company_total'] = 420;
  553. $res['comjobs_total'] = 4559;
  554. //培训相关
  555. /*$res['train'] = TrainModel::count();
  556. $res['train_join'] = TrainJoinModel::count();*/
  557. $res['train'] = 74;
  558. $res['train_join'] = 731;
  559. //月注册相关
  560. $year = date('Y');
  561. $month_arr = [
  562. strtotime($year . '-01-01'),
  563. strtotime($year . '-02-01'),
  564. strtotime($year . '-03-01'),
  565. strtotime($year . '-04-01'),
  566. strtotime($year . '-05-01'),
  567. strtotime($year . '-06-01'),
  568. strtotime($year . '-07-01'),
  569. strtotime($year . '-08-01'),
  570. strtotime($year . '-09-01'),
  571. strtotime($year . '-10-01'),
  572. strtotime($year . '-11-01'),
  573. strtotime($year . '-12-01'),
  574. ];
  575. $month_name = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
  576. $user_month = [];
  577. foreach ($month_arr as $k => $v) {
  578. if ($k == 11) {
  579. $item = [
  580. 'name' => $month_name[$k],
  581. 'count' => UserModel::where('createtime', 'between', [$v, strtotime(($year + 1) . '-01-01')])->count(),
  582. ];
  583. } else {
  584. $item = [
  585. 'name' => $month_name[$k],
  586. 'count' => UserModel::where('createtime', 'between', [$v, $month_arr[$k + 1]])->count(),
  587. ];
  588. }
  589. $user_month[] = $item;
  590. }
  591. $res['user_month'] = $user_month;
  592. //倍数
  593. if ($mul_min != 1 || $mul_max != 1) {
  594. foreach ($res as $k => $v) {
  595. if (is_array($v)) {
  596. foreach ($v as $k2 => $v2) {
  597. if (!empty($v2['count'])) {
  598. $res[$k][$k2]['count'] *= mt_rand($mul_min, $mul_max);
  599. }
  600. }
  601. } else {
  602. $res[$k] *= mt_rand($mul_min, $mul_max);
  603. }
  604. }
  605. }
  606. page_result(0, "", $res);
  607. }
  608. public function agg()
  609. {
  610. $res = [];
  611. //街道数据
  612. $comjobs_community = ComjobsModel::field("count(community),community")->group('community')->column('count(community)', 'community');
  613. $community = RensheCode::getList('community')->toArray();
  614. $broker_town = BrokerModel::field("count(town),town")->group('town')->column('count(town)', 'town');
  615. foreach ($community as &$v) {
  616. if (!empty($comjobs_community[$v['code']])) {
  617. $v['count'] = $comjobs_community[$v['code']];
  618. } else {
  619. $v['count'] = 0;
  620. }
  621. if (!empty($broker_town[$v['name']])) {
  622. $v['broker_count'] = $broker_town[$v['name']];
  623. } else {
  624. $v['broker_count'] = 0;
  625. }
  626. unset($v);
  627. }
  628. $community[] = [
  629. 'id' => 0,
  630. 'name' => '其他',
  631. 'code' => '',
  632. 'count' => $comjobs_community[''] ?? 0,
  633. 'broker_count' => $broker_town[''] ?? 0,
  634. ];
  635. $res['community'] = $community;
  636. //数量统计
  637. $comjobs_map = [];
  638. $comjobs_map[] = ['createtime', '<=', time()];
  639. $comjobs_map[] = ['status', 'in', '3,4'];
  640. $res['company_total'] = WorkerModel::where('status', 'in', '4,5')->count();
  641. $res['comjobs_total'] = ComjobsModel::where($comjobs_map)->count();
  642. $res['user_total'] = UserModel::count();
  643. page_result(0, "", $res);
  644. }
  645. }