visitlogic.php 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. <?php
  2. namespace app\admin\logic;
  3. use app\admin\server\Webuserserver;
  4. use app\common\model\VisitBusinessTypeModel;
  5. use app\common\model\VisitModel;
  6. use app\common\server\PhpExcel as PhpExcelServer;
  7. use app\common\server\Redis;
  8. class visitlogic
  9. {
  10. public function newinfo($arr)
  11. {
  12. $userinfo = checkToken();
  13. $m_v = new VisitModel();
  14. $vid = $m_v->insertData($arr);
  15. if (empty($vid)) {
  16. return backarr(0, '创建失败');
  17. }
  18. //保存日志
  19. $s_w = new Webuserserver();
  20. $logData = [
  21. 'node' => '到访记录',
  22. 'type' => 1,
  23. ];
  24. $s_w->savelog($userinfo['id'], $logData);
  25. return backarr(1, '创建成功', ['vid' => $vid]);
  26. }
  27. public function getlist($arr)
  28. {
  29. $userinfo = checkToken();
  30. $wherefield = ['name', 'telno', 'name_center'];
  31. $where = [];
  32. foreach ($wherefield as $key => $value) {
  33. if (isset($arr[$value]) && !empty($arr[$value])) {
  34. $where[$value] = $arr[$value];
  35. }
  36. }
  37. $wherefield2 = ['is_member', 'business_type'];
  38. foreach ($wherefield2 as $key => $value) {
  39. if (isset($arr[$value]) && is_numeric($arr[$value])) {
  40. $where[$value] = $arr[$value];
  41. }
  42. }
  43. if (isset($arr['createtime'])) {
  44. if (is_array($arr['createtime'])
  45. && !empty(array_filter($arr['createtime']))
  46. && $arr['createtime'] = array_filter($arr['createtime'])) {
  47. $where['createtime'] = $arr['createtime'];
  48. }
  49. }
  50. $page = isset($arr['page']) && is_numeric($arr['page']) && !empty($arr['page']) && $arr['page'] > 0 ? $arr['page'] : 1;
  51. $size = isset($arr['size']) && is_numeric($arr['size']) && !empty($arr['size']) && $arr['size'] > 0 ? $arr['size'] : 10;
  52. $m_v = new VisitModel();
  53. $count = $m_v->getListjoinmealcenter($where, 'count');
  54. if ($count <= 0) {
  55. return backarr(0, "无数据");
  56. }
  57. $totalpage = ceil($count / $size);
  58. $page > $totalpage && $page = $totalpage;
  59. $list = $m_v->getListjoinmealcenter($where, "*", $page, $size)->toArray();
  60. $m_vbt = new VisitBusinessTypeModel();
  61. $tylist = $m_vbt->getList([], "*", 1, 0, "id asc");
  62. if (!empty($tylist)) {
  63. $tylist = $tylist->toArray();
  64. $tylist = array_combine(array_column($tylist, "id"), array_column($tylist, "name"));
  65. } else {
  66. $tylist = [];
  67. }
  68. foreach ($list as $key => $value) {
  69. if (!empty($tylist) && isset($tylist[$value['business_type']])) {
  70. $business = $tylist[$value['business_type']];
  71. } else {
  72. $business = '';
  73. }
  74. $value['business'] = $business;
  75. $list[$key] = $value;
  76. }
  77. $data = [
  78. 'page' => $page,
  79. 'size' => $size,
  80. 'count' => $count,
  81. 'list' => $list,
  82. ];
  83. return backarr(1, "查询成功", $data);
  84. }
  85. /**
  86. * 获取业务类型
  87. *
  88. * @return void
  89. * @author wj
  90. * @date 2023-01-18
  91. */
  92. public function getbusinesstyoelist()
  93. {
  94. $m_vbt = new VisitBusinessTypeModel();
  95. $where = [];
  96. $list = $m_vbt->getList($where, "*", 1, 0, "id asc");
  97. return backarr(1, 'success', $list);
  98. }
  99. /**
  100. * 验证导出条件
  101. *
  102. * @return void
  103. * @author wj
  104. * @date 2023-01-29
  105. */
  106. public function checkexportlist($arr)
  107. {
  108. $userinfo = checkToken();
  109. $wherefield = ['name', 'telno'];
  110. $where = [];
  111. foreach ($wherefield as $key => $value) {
  112. if (isset($arr[$value]) && !empty($arr[$value])) {
  113. $where[] = [$value, 'like', '%' . $arr[$value] . '%'];
  114. }
  115. }
  116. $wherefield2 = ['is_member', 'business_type'];
  117. foreach ($wherefield2 as $key => $value) {
  118. if (isset($arr[$value]) && is_numeric($arr[$value])) {
  119. $where[] = [$value, '=', $arr[$value]];
  120. }
  121. }
  122. if (isset($arr['createtime'])) {
  123. if (is_array($arr['createtime'])
  124. && !empty(array_filter($arr['createtime']))
  125. && $arr['createtime'] = array_filter($arr['createtime'])) {
  126. $where[] = ['createtime', 'between', $arr['createtime']];
  127. }
  128. }
  129. //$page = isset($arr['page']) && is_numeric($arr['page']) && !empty($arr['page']) && $arr['page'] > 0 ? $arr['page'] : 1;
  130. //$size = isset($arr['size']) && is_numeric($arr['size']) && !empty($arr['size']) && $arr['size'] > 0 ? $arr['size'] : 10;
  131. $m_v = new VisitModel();
  132. $count = $m_v->getList($where, 'count');
  133. if ($count <= 0) {
  134. return backarr(0, "无数据");
  135. }
  136. /*if (session('?visitlistwhere', '', 'export')) {
  137. session('visitlistwhere', null, 'export');
  138. }
  139. session('visitlistwhere', $where, 'export');*/
  140. $redis = new Redis();
  141. $redis->delete('visitlistwhere');
  142. $wherejson = json_encode($where);
  143. $redis->set('visitlistwhere', $wherejson);
  144. return backarr(1, "查询成功");
  145. }
  146. /**
  147. * 执行导出
  148. *
  149. * @return void
  150. * @author wj
  151. * @date 2023-01-29
  152. */
  153. public function doexportlist()
  154. {
  155. $redis = new Redis();
  156. $wherejson = $redis->get('visitlistwhere');
  157. $where = json_decode($wherejson, true);
  158. $redis->delete('visitlistwhere');
  159. $m_v = new VisitModel();
  160. $count = $m_v->getList($where, 'count');
  161. $size = 100;
  162. $totalpage = ceil($count / $size);
  163. $exportdata = [];
  164. $exporttitle = [];
  165. $indexChar = 65;
  166. $indexNum = 2;
  167. $m_vbt = new VisitBusinessTypeModel();
  168. $tylist = $m_vbt->getList([], "*", 1, 0, "id asc");
  169. if (!empty($tylist)) {
  170. $tylist = $tylist->toArray();
  171. $tylist = array_combine(array_column($tylist, "id"), array_column($tylist, "name"));
  172. } else {
  173. $tylist = [];
  174. }
  175. for ($page = 1; $page <= $totalpage; $page++) {
  176. $list = $m_v->getList($where, "*", $page, $size)->toArray();
  177. foreach ($list as $key => $value) {
  178. if (!empty($tylist) && isset($tylist[$value['business_type']])) {
  179. $business = $tylist[$value['business_type']];
  180. } else {
  181. $business = '';
  182. }
  183. $value['business'] = $business;
  184. if (1 == $value['is_member']) {
  185. $value['is_member'] = '是';
  186. } else {
  187. $value['is_member'] = '否';
  188. }
  189. $item = [
  190. 'id' => $value['id'],
  191. 'name' => $value['name'],
  192. 'age' => $value['age'],
  193. 'gender' => $value['gender'],
  194. 'address' => $value['address'],
  195. 'telno' => $value['telno'] . " ",
  196. 'is_member' => $value['is_member'],
  197. 'business' => $value['business'],
  198. 'remark' => $value['remark'],
  199. 'createtime' => $value['createtime'],
  200. ];
  201. $itemuse = [];
  202. foreach ($item as $ikey => $ivalue) {
  203. $itemuse[] = [
  204. 'cell' => chr($indexChar) . $indexNum,
  205. 'value' => $ivalue,
  206. ];
  207. $indexChar++;
  208. }
  209. $indexChar = 65;
  210. $indexNum++;
  211. $exportdata[] = $itemuse;
  212. }
  213. }
  214. $exporttitle = [
  215. ['cell' => 'A1', 'value' => 'ID'],
  216. ['cell' => 'B1', 'value' => '姓名'],
  217. ['cell' => 'C1', 'value' => '年龄'],
  218. ['cell' => 'D1', 'value' => '性别'],
  219. ['cell' => 'E1', 'value' => '地址'],
  220. ['cell' => 'F1', 'value' => '手机号'],
  221. ['cell' => 'G1', 'value' => '是否会员'],
  222. ['cell' => 'H1', 'value' => '到访事由'],
  223. ['cell' => 'I1', 'value' => '备注'],
  224. ['cell' => 'J1', 'value' => '到访时间'],
  225. ];
  226. $style = [
  227. 'A' => ['width' => 5],
  228. 'B' => ['width' => 10],
  229. 'C' => ['width' => 5],
  230. 'D' => ['width' => 5],
  231. 'E' => ['width' => 20],
  232. 'F' => ['width' => 20],
  233. 'G' => ['width' => 10],
  234. 'H' => ['width' => 10],
  235. 'I' => ['width' => 30],
  236. 'J' => ['width' => 10],
  237. ];
  238. $s_pes = new PhpExcelServer();
  239. $s_pes->getsheetobj($exportdata, $exporttitle, $style);
  240. $filename = "visitlist_" . date('YmdHis') . '.xlsx';
  241. $s_pes->exportsheet($filename);
  242. return backarr(1, "操作成功");
  243. }
  244. }