History.php 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. <?php
  2. namespace app\service\controller;
  3. /**
  4. * 客服系统会话历史类
  5. */
  6. class History extends Common
  7. {
  8. /**
  9. * 获取会话历史
  10. *
  11. * @access public
  12. * @return array JsonString
  13. */
  14. public function historyList()
  15. {
  16. // 验证token.
  17. $tokenStatus = $this->verifyToken();
  18. $code = -2;
  19. $msg = '错误';
  20. if ($tokenStatus === false) {
  21. $msg = 'token错误';
  22. return json(['code' => $code, 'data' => [], 'msg' => $msg]);
  23. }
  24. try {
  25. // 获取用户信息.
  26. $getUserInfo = $this->getUserInfo();
  27. $serviceLogField = [
  28. 'user_id',
  29. 'user_name',
  30. 'user_avatar',
  31. 'user_ip',
  32. 'start_time',
  33. 'end_time',
  34. 'name',
  35. 'website',
  36. 'system',
  37. 'browse',
  38. 'a.status',
  39. 'evaluate_id',
  40. 'intime',
  41. 'servicelog_id',
  42. ];
  43. // 关联信息.
  44. $serviceLogJoin['groups b'] = 'a.group_id = b.id';
  45. $serviceLogWhere['kf_id'] = $getUserInfo->id;
  46. // 分页.
  47. $currentPage = input('post.currentPage', '1');
  48. $pageSize = input('post.pageSize', '10');
  49. $start = input('post.start');
  50. $end = input('post.end');
  51. $userName = input('post.user_name');
  52. $startTime = strtotime(date('Y-m-d').'-6 day');
  53. $endTime = strtotime(date('Y-m-d').'+1 day');
  54. if (strlen($start) && strlen($end) ) {
  55. $startTime = strtotime($start);
  56. $endTime = strtotime($end.'+1 day');
  57. }
  58. if (strlen($userName)) {
  59. $serviceLogWhere['user_name'] = ['like', '%' . $userName . '%'];
  60. }
  61. $serviceLogWhere['start_time'] = [
  62. 'between',
  63. [
  64. $startTime,
  65. $endTime,
  66. ],
  67. ];
  68. $offset = (($currentPage - 1) * $pageSize);
  69. // 获取用户信息.
  70. $serviceLog = model('ServiceLog')->selectServiceLog(
  71. $serviceLogField,
  72. $offset,
  73. $pageSize,
  74. $serviceLogWhere,
  75. $serviceLogJoin
  76. );
  77. $countServiceLog = model('ServiceLog')->countServiceLog($serviceLogWhere);
  78. $evaluate = model('Evaluate')->getEvaluate();
  79. foreach ($serviceLog as $k => $v) {
  80. foreach ($evaluate as $va) {
  81. if ($v->evaluate_id == $va->evaluate_id) {
  82. $serviceLog[$k]->evaluate_name = $va->evaluate_name;
  83. }
  84. }
  85. }
  86. $result['total'] = $countServiceLog;
  87. $result['countPage'] = (ceil(($result['total']) / $pageSize));
  88. $result['currentPage'] = $currentPage;
  89. $result['list'] = $serviceLog;
  90. $result['pageSize'] = $pageSize;
  91. return json(['code' => 1, 'data' => $result, 'msg' => '成功']);
  92. } catch (\Exception $e) {
  93. return json(['code' => $code, 'data' => [], 'msg' => $msg]);
  94. }//end try
  95. }//end historyList()
  96. /**
  97. * 获取会话历史详细
  98. *
  99. * @access public
  100. * @return array JsonString
  101. */
  102. public function historyInfo()
  103. {
  104. // 验证token.
  105. $tokenStatus = $this->verifyToken();
  106. $code = -2;
  107. $msg = '错误';
  108. if ($tokenStatus === false) {
  109. $msg = 'token错误';
  110. return json(['code' => $code, 'data' => [], 'msg' => $msg]);
  111. }
  112. try {
  113. // 获取用户信息.
  114. $servicelogId = input('get.servicelog_id');
  115. $chatLogField = ['*'];
  116. // 关联信息.
  117. $chatLogWhere['servicelog_id'] = $servicelogId;
  118. // 分页.
  119. $currentPage = input('get.currentPage', '1');
  120. $pageSize = input('get.pageSize', '10');
  121. $offset = (($currentPage - 1) * $pageSize);
  122. // 获取用户信息.
  123. $chatLog = model('ChatLog')->selectChatLog($chatLogField, $offset, $pageSize, $chatLogWhere);
  124. $countChatLog = model('ChatLog')->countChatLog($chatLogWhere);
  125. // 查询报警信息.
  126. $alarmField = [
  127. 'evaluate_id',
  128. 'alarm_corresponding',
  129. 'alarm_cvtOvertime',
  130. 'alarm_userSensitive',
  131. 'alarm_serverSensitive',
  132. 'alarm_respond',
  133. ];
  134. $alarmWhere['b.servicelog_id'] = $servicelogId;
  135. $serviceLogJoin['service_log b'] = 'a.servicelog_id = b.servicelog_id';
  136. $alarm = model('Alarm')->findAlarm($alarmField, $alarmWhere, $serviceLogJoin);
  137. // 查询系统设置.
  138. $systemconfig = model('Systemconfig')->selectSystemconfig($alarmField, $alarmWhere, $serviceLogJoin);
  139. // 响应超时.
  140. $verifyReturnTime = 0;
  141. // 会话超时.
  142. $cvtOvertime = 0;
  143. foreach ($systemconfig as $v) {
  144. if ($v['systemconfig_enName'] == 'verifyReturnTime') {
  145. if ($v['systemconfig_data'] < $alarm['alarm_corresponding']) {
  146. $verifyReturnTime = 1;
  147. }
  148. }
  149. if ($v['systemconfig_enName'] == 'verifyAllTime') {
  150. if ($v['systemconfig_data'] < $alarm['alarm_cvtOvertime']) {
  151. $cvtOvertime = 1;
  152. }
  153. }
  154. }
  155. $service_log = db('service_log')->where('servicelog_id',$servicelogId)->find();
  156. $account = db('accounts')->field('id,account_name,nick_name,account_email,account_phone,address,remark')->where('id',$service_log['user_id'])->find();
  157. $account['user_ip'] = $service_log['user_ip'];
  158. $account['system'] = $service_log['system'];
  159. $account['browse'] = $service_log['browse'];
  160. $result['total'] = $countChatLog;
  161. $result['countPage'] = (ceil(($result['total']) / $pageSize));
  162. $result['currentPage'] = $currentPage;
  163. $result['list'] = $chatLog;
  164. $result['pageSize'] = $pageSize;
  165. $result['account'] = $account;
  166. $result['alarm'] = [
  167. 'evaluate_id' => $alarm['evaluate_id'],
  168. 'verifyReturnTime' => $verifyReturnTime,
  169. 'cvtOvertime' => $cvtOvertime,
  170. 'serverSensitive' => $alarm['alarm_serverSensitive'] ? 1 : 2,
  171. 'userSensitive' => $alarm['alarm_userSensitive'] ? 1 : 2,
  172. 'respond' => $alarm['alarm_respond'],
  173. ];
  174. return json(['code' => 1, 'data' => $result, 'msg' => '成功']);
  175. } catch (\Exception $e) {
  176. return json(['code' => $code, 'data' => [], 'msg' => $msg]);
  177. }//end try
  178. }//end historyInfo()
  179. /**
  180. * 获取用户会话历史详细
  181. *
  182. * @access public
  183. * @return array JsonString
  184. */
  185. public function userHistory()
  186. {
  187. // 验证token.
  188. $tokenStatus = $this->verifyToken();
  189. $code = -2;
  190. $msg = '错误';
  191. if ($tokenStatus === false) {
  192. $msg = 'token错误';
  193. return json(['code' => $code, 'data' => [], 'msg' => $msg]);
  194. }
  195. try {
  196. // 获取用户ID.
  197. $accountId = input('get.account_id');
  198. $chatLogField = ['*'];
  199. // 关联信息.
  200. $chatLogWhere['from_id'] = $accountId;
  201. $chatLogWhereOr['to_id'] = $accountId;
  202. // 分页.
  203. $currentPage = input('get.currentPage', '1');
  204. $pageSize = input('get.pageSize', '10');
  205. $offset = (($currentPage - 1) * $pageSize);
  206. // 获取用户信息.
  207. $chatLog = model('ChatLog')->userChatLog(
  208. $chatLogField,
  209. $chatLogWhere,
  210. $chatLogWhereOr,
  211. $offset,
  212. $pageSize
  213. );
  214. $countChatLog = model('ChatLog')->userChatLogCount($chatLogWhere, $chatLogWhereOr);
  215. $result['total'] = $countChatLog;
  216. $result['countPage'] = (ceil(($result['total']) / $pageSize));
  217. $result['currentPage'] = $currentPage;
  218. $result['list'] = $chatLog;
  219. $result['pageSize'] = $pageSize;
  220. return json(['code' => 1, 'data' => $result, 'msg' => '成功']);
  221. } catch (\Exception $e) {
  222. return json(['code' => $code, 'data' => [], 'msg' => $msg]);
  223. }//end try
  224. }//end userHistory()
  225. }