Screen.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  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. $res['community'] = $community;
  47. //岗位类别
  48. $comjobs_cate = ComjobsModel::field("count(cateid),cateid")->group('cateid')->column('count(cateid)', 'cateid');
  49. $cateids = array_keys($comjobs_cate);
  50. $cate = ComjobsCateModel::where('id', 'in', $cateids)->select()->toArray();
  51. foreach ($cate as &$v) {
  52. $v['count'] = $comjobs_cate[$v['id']];
  53. unset($v);
  54. }
  55. $res['cate'] = $cate;
  56. //岗位类型
  57. $comjobs_type = ComjobsModel::field("count(wtype) count,wtype")->group('wtype')->select();
  58. $res['type'] = $comjobs_type;
  59. //岗位数据
  60. $comjobs_map = [];
  61. $comjobs_map[] = ['createtime', '<=', time()];
  62. $comjobs_map[] = ['status', 'in', '3,4'];
  63. $orderby = ['status' => 'asc', 'updatetime' => 'desc', 'id' => 'desc'];
  64. $comjobs_new = [];
  65. $comjobs_new_data = ComjobsModel::with(['worker'])->where($comjobs_map)->order($orderby)->limit(20)->select();
  66. foreach ($comjobs_new_data as $v) {
  67. $comjobs_new[] = [
  68. 'title' => $v['title'],
  69. 'company' => $v['worker']['title'],
  70. 'salary' => $v['zwagall'],
  71. ];
  72. }
  73. $comjobs_hot = [];
  74. $comjobs_hot_data = ComjobsModel::with(['worker'])->where($comjobs_map)->order('volume', 'desc')->limit(20)->select();
  75. foreach ($comjobs_hot_data as $v) {
  76. $comjobs_hot[] = [
  77. 'title' => $v['title'],
  78. 'company' => $v['worker']['title'],
  79. 'salary' => $v['zwagall'],
  80. ];
  81. }
  82. $res['comjobs']['new'] = $comjobs_new;
  83. $res['comjobs']['hot'] = $comjobs_hot_data;
  84. //学历
  85. $user_education = UserModel::field("count(education),education")->group('education')->column('count(education)', 'education');
  86. $education_data = ['' => '未知', 1 => '初中及以下', 2 => '高中', 3 => '中技', 4 => '中专', 5 => '大专', 6 => '本科', 7 => '硕士', 8 => '博士'];
  87. $education = [];
  88. foreach ($education_data as $k => $v) {
  89. $item = ['name' => $v];
  90. if (empty($user_education[$k])) {
  91. $item['count'] = 0;
  92. } else {
  93. $item['count'] = $user_education[$k];
  94. }
  95. $education[] = $item;
  96. }
  97. $res['eduction'] = $education;
  98. //年龄分布
  99. $user_age_other = UserModel::where('idcard', '')->count();
  100. $user_idcard = UserModel::field('idcard')->where('idcard', '<>', '')->select();
  101. $user_age = [
  102. ['name' => '16-25', 'count' => 0],
  103. ['name' => '25-35', 'count' => 0],
  104. ['name' => '35-45', 'count' => 0],
  105. ['name' => '45以上', 'count' => 0],
  106. ['name' => '其他', 'count' => $user_age_other],
  107. ];
  108. foreach ($user_idcard as $v) {
  109. $age = get_age($v['idcard']);
  110. if ($age >= 16) {
  111. $user_age[0]['count']++;
  112. } elseif ($age >= 25) {
  113. $user_age[1]['count']++;
  114. } elseif ($age >= 35) {
  115. $user_age[2]['count']++;
  116. } elseif ($age >= 45) {
  117. $user_age[3]['count']++;
  118. }
  119. }
  120. $res['user_age'] = $user_age;
  121. //注册相关
  122. $user_gender = UserModel::field("count(gender),gender")->group('gender')->column('count(gender)', 'gender');
  123. $res['people_total'] = array_sum($user_gender);
  124. $res['people_man'] = $user_gender[1];
  125. $res['people_woman'] = $user_gender[2];
  126. $res['broker_total'] = BrokerModel::count();
  127. //岗位相关
  128. $res['company_total'] = WorkerModel::where('status', 'in', '4,5')->count();
  129. $res['comjobs_total'] = ComjobsModel::where($comjobs_map)->count();
  130. //培训相关
  131. $res['train'] = TrainModel::count();
  132. $res['train_join'] = TrainJoinModel::count();
  133. //月注册相关
  134. $year = date('Y');
  135. $month_arr = [
  136. strtotime($year . '-01-01'),
  137. strtotime($year . '-02-01'),
  138. strtotime($year . '-03-01'),
  139. strtotime($year . '-04-01'),
  140. strtotime($year . '-05-01'),
  141. strtotime($year . '-06-01'),
  142. strtotime($year . '-07-01'),
  143. strtotime($year . '-08-01'),
  144. strtotime($year . '-09-01'),
  145. strtotime($year . '-10-01'),
  146. strtotime($year . '-11-01'),
  147. strtotime($year . '-12-01'),
  148. ];
  149. $month_name = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
  150. $user_month = [];
  151. foreach ($month_arr as $k => $v) {
  152. if ($k == 11) {
  153. $item = [
  154. 'name' => $month_name[$k],
  155. 'count' => UserModel::where('createtime', 'between', [$v, strtotime(($year + 1) . '-01-01')])->count(),
  156. ];
  157. } else {
  158. $item = [
  159. 'name' => $month_name[$k],
  160. 'count' => UserModel::where('createtime', 'between', [$v, $month_arr[$k + 1]])->count(),
  161. ];
  162. }
  163. $user_month[] = $item;
  164. }
  165. $res['user_month'] = $user_month;
  166. //倍数
  167. if ($mul_min != 1 || $mul_max != 1) {
  168. foreach ($res as $k => $v) {
  169. if (is_array($v)) {
  170. foreach ($v as $k2 => $v2) {
  171. if (!empty($v2['count'])) {
  172. $res[$k][$k2]['count'] *= mt_rand($mul_min, $mul_max);
  173. }
  174. }
  175. } else {
  176. $res[$k] *= mt_rand($mul_min, $mul_max);
  177. }
  178. }
  179. }
  180. page_result(0, "", $res);
  181. }
  182. }