statisticssqlmodel.php 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: sicilon_IT
  5. * Date: 2021/10/7
  6. * Time: 22:55
  7. */
  8. namespace app\index\model;
  9. use app\index\model\userconnectrecorddaymodel;
  10. use think\Model;
  11. class statisticssqlmodel extends Model
  12. {
  13. /**
  14. * 获取电话统计数据
  15. * 20211206
  16. * wj
  17. */
  18. public function getTelnoConnectNum()
  19. {
  20. $sqlhavetime = "select DATE_FORMAT(calltime,'%Y-%m-%d %H:00:00') date,count(*) count from t_userconnectrecord
  21. where calltime>=DATE_SUB(DATE_FORMAT(NOW(),'%Y-%m-%d 00:00:00'),interval 1 day)
  22. and calltime<DATE_ADD(DATE_FORMAT(NOW(),'%Y-%m-%d 00:00:00'),interval 1 day)
  23. GROUP BY DATE_FORMAT(calltime,'%Y-%m-%d %H:00:00')
  24. ORDER BY date desc";
  25. //暂时不用
  26. //$timelist = $this->query("select * from (" . $sqlhavetime . ") as t");
  27. $sqlcount = "select DATE_FORMAT(calltime,'%Y-%m-%d') date,count(*) count from t_userconnectrecord
  28. where calltime>=DATE_SUB(DATE_FORMAT(NOW(),'%Y-%m-%d 00:00:00'),interval 1 day)
  29. and calltime<DATE_ADD(DATE_FORMAT(NOW(),'%Y-%m-%d 00:00:00'),interval 1 day)
  30. GROUP BY DATE_FORMAT(calltime,'%Y-%m-%d')
  31. ORDER BY date desc";
  32. $countlist = $this->query("select * from (" . $sqlcount . ") as t");
  33. $data = ['countlist' => $countlist];
  34. return $data;
  35. }
  36. /**
  37. * 获取无代发数据
  38. * 20211206
  39. * wj
  40. */
  41. public function getinventcount1()
  42. {
  43. $sql = "select DATE_FORMAT(createdate,'%Y-%m-%d') date,isactive,ispass,count(*) count from t_invent
  44. where createdate>=DATE_SUB(DATE_FORMAT(NOW(),'%Y-%m-%d 00:00:00'),interval 1 day)
  45. and createdate<DATE_ADD(DATE_FORMAT(NOW(),'%Y-%m-%d 00:00:00'),interval 1 day)
  46. and releaseid is NULL
  47. GROUP BY DATE_FORMAT(createdate,'%Y-%m-%d'),isactive,ispass";
  48. $list = $this->query("select * from (" . $sql . ") as t");
  49. return $list;
  50. }
  51. /***
  52. * 各招工电话联系 联系数量 列表
  53. * 20211206
  54. * wj
  55. */
  56. public function getinventitemtelnoconnectlist($count = false, $page = 1, $size = 10)
  57. {
  58. $sql = "select uc.sourceid,i.code,u.telno,count(*) count from t_userconnectrecord as uc
  59. join t_invent as i on i.id=uc.sourceid
  60. join t_userinfo as u on u.id=i.createuid
  61. where uc.sourcetype=1
  62. GROUP BY uc.sourceid
  63. ORDER BY count desc";
  64. if (!$count) {
  65. $index = ($page - 1) * $size;
  66. $sql .= " limit " . $index . "," . $size;
  67. }
  68. if ($count) {
  69. $list = $this->query("select count(*) count from (" . $sql . ") as t");
  70. } else {
  71. $list = $this->query("select * from (" . $sql . ") as t");
  72. }
  73. return $list;
  74. }
  75. /***
  76. * 各招工电话联系 联系数量 列表 今日
  77. * 20211220
  78. * wj
  79. */
  80. public function getinventitemtelnoconnectbydaylist($count = false, $page = 1, $size = 10)
  81. {
  82. $m_ucrd = new userconnectrecorddaymodel();
  83. $day = date("Ymd");
  84. $isExist = $m_ucrd->isexist($day);
  85. if (!$isExist) {
  86. return false;
  87. }
  88. $tablename = 't_userconnectrecord_' . $value;
  89. $sql = "select uc.sourceid,i.code,u.telno,count(*) count from " . $tablename . " as uc
  90. join t_invent as i on i.id=uc.sourceid
  91. join t_userinfo as u on u.id=i.createuid
  92. where uc.sourcetype=1
  93. GROUP BY uc.sourceid
  94. ORDER BY count desc";
  95. if (!$count) {
  96. $index = ($page - 1) * $size;
  97. $sql .= " limit " . $index . "," . $size;
  98. }
  99. if ($count) {
  100. $list = $this->query("select count(*) count from (" . $sql . ") as t");
  101. } else {
  102. $list = $this->query("select * from (" . $sql . ") as t");
  103. }
  104. return $list;
  105. }
  106. /***
  107. * 近两日 打电话数量及人数
  108. * 20211220
  109. * wj
  110. */
  111. public function getinventcount2()
  112. {
  113. $m_ucrd = new userconnectrecorddaymodel();
  114. $day = [
  115. date("Ymd"),
  116. date("Ymd", strtotime("-1 day")),
  117. ];
  118. $list = [];
  119. foreach ($day as $key => $value) {
  120. $valueDay = date('Y-m-d', strtotime($value));
  121. $isExist = $m_ucrd->isexist($value);
  122. if (!$isExist) {
  123. $list[] = ['date' => $valueDay, 'count_suid' => 0, 'total' => 0];
  124. continue;
  125. }
  126. $tablename = 't_userconnectrecord_' . $value;
  127. $sql = "select count(senduserid) count_suid,sum(count) total from (
  128. select senduserid,count(*) count from " . $tablename . " GROUP BY senduserid
  129. ) as t";
  130. $data = $this->query($sql);
  131. $item = $data[0];
  132. $item['count_suid'] = empty($item['count_suid']) ? 0 : $item['count_suid'];
  133. $item['total'] = empty($item['total']) ? 0 : $item['total'];
  134. $item['date'] = $valueDay;
  135. $list[] = $item;
  136. }
  137. return $list;
  138. }
  139. /***
  140. * 各招工电话联系 间隔时间 列表
  141. * 20211206
  142. * wj
  143. */
  144. public function getinventitemtelnointervallist($count = false, $page = 1, $size = 10)
  145. {
  146. $sql = "select * from (
  147. select ucid,sourceid,code,telno,time
  148. from (
  149. select uc.id ucid,uc.sourceid,i.code,i.createdate,uc.calltime,ROUND((UNIX_TIMESTAMP(uc.calltime)-UNIX_TIMESTAMP(i.passtime))/60,0) time,u.telno
  150. from t_userconnectrecord as uc
  151. join t_invent as i on i.id=uc.sourceid
  152. join t_userinfo as u on u.id=i.createuid
  153. where passtime is not null
  154. ORDER BY time asc
  155. ) as tab
  156. GROUP BY sourceid
  157. ) as tab ORDER BY time asc";
  158. if (!$count) {
  159. $index = ($page - 1) * $size;
  160. $sql .= " limit " . $index . "," . $size;
  161. }
  162. if ($count) {
  163. $list = $this->query("select count(*) count from (" . $sql . ") as t");
  164. } else {
  165. $list = $this->query("select * from (" . $sql . ") as t");
  166. }
  167. return $list;
  168. }
  169. /***
  170. * 各招工电话联系 间隔时间 列表 今日 平均值
  171. * 20211220
  172. * wj
  173. */
  174. public function getinventitemtelnoavgbydaylist()
  175. {
  176. $m_ucrd = new userconnectrecorddaymodel();
  177. $day = [
  178. date("Ymd"),
  179. date("Ymd", strtotime("-1 day")),
  180. ];
  181. $list = [];
  182. foreach ($day as $key => $value) {
  183. $valueDay = date('Y-m-d', strtotime($value));
  184. $isExist = $m_ucrd->isexist($value);
  185. if (!$isExist) {
  186. $list[] = ['avg_time' => 0, 'date' => $valueDay];
  187. continue;
  188. }
  189. $tablename = 't_userconnectrecord_' . $value;
  190. $sql = "select avg(time) avg_time from (
  191. select ucid,sourceid,code,telno,time
  192. from (
  193. select uc.id ucid,uc.sourceid,i.code,i.createdate,uc.calltime,ROUND((UNIX_TIMESTAMP(uc.calltime)-UNIX_TIMESTAMP(i.passtime))/60,0) time,u.telno
  194. from " . $tablename . " as uc
  195. join t_invent as i on i.id=uc.sourceid
  196. join t_userinfo as u on u.id=i.createuid
  197. where passtime is not null and passtime like '%" . $valueDay . "%'
  198. ORDER BY time asc
  199. ) as tab
  200. GROUP BY sourceid
  201. ) as tab";
  202. $data = $this->query($sql);
  203. if (empty($data)) {
  204. $item['avg_time'] = 0;
  205. } else {
  206. $item['avg_time'] = empty($data[0]['avg_time']) ? 0 : $data[0]['avg_time'];
  207. }
  208. $item['date'] = $valueDay;
  209. $list[] = $item;
  210. }
  211. return $list;
  212. }
  213. /***
  214. * 招工 已招满
  215. * 20211206
  216. * wj
  217. */
  218. public function getinventfull()
  219. {
  220. $sql = "select count(*) count from t_evaluate where evaluatememo like '%已招满%'";
  221. $list = $this->query("select * from (" . $sql . ") as t");
  222. return $list;
  223. }
  224. /***
  225. * 招工没接电话
  226. * 20211206
  227. * wj
  228. */
  229. public function getinventnotanswer()
  230. {
  231. $sql = "select count(*) count from t_evaluate where evaluatememo like '%没接电话%'";
  232. $list = $this->query("select * from (" . $sql . ") as t");
  233. return $list;
  234. }
  235. /***
  236. * 统计用户积分
  237. * 20211206
  238. * wj
  239. */
  240. public function getuseraccount($count = false, $page = 1, $size = 10)
  241. {
  242. $sql = "select u.id,u.wname,goldscore,siliverscore,goldscore+siliverscore sumscore
  243. from t_useraccount as ua
  244. join (
  245. select senduserid from t_userconnectrecord GROUP BY senduserid
  246. ) as uc on uc.senduserid = ua.userid
  247. join t_userinfo as u on u.id = ua.userid ORDER BY goldscore,siliverscore";
  248. if (!$count) {
  249. $index = ($page - 1) * $size;
  250. $sql .= " limit " . $index . "," . $size;
  251. }
  252. if ($count) {
  253. $list = $this->query("select count(*) count from (" . $sql . ") as t");
  254. } else {
  255. $list = $this->query("select * from (" . $sql . ") as t");
  256. }
  257. return $list;
  258. }
  259. }