Kefu.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. namespace app\admin\controller;
  3. use app\BaseController;
  4. use app\admin\model\Admin;
  5. use app\admin\model\Sign;
  6. use app\admin\model\KefuWork;
  7. use Exception;
  8. class Kefu extends BaseController
  9. {
  10. public function statistics()
  11. {
  12. // 统计
  13. $data['visit_count'] = 0; //当前客服页访问量
  14. $data['online_count'] = 0; //当前客服在线人数
  15. $data['handling_count'] = 0; //当前客服接线中的总数
  16. $data['today_handling_count'] = 0; //今日客服接线总数
  17. return $this->success($data);
  18. }
  19. /**
  20. * @api {get} /today 今日在线客服列表
  21. */
  22. public function today()
  23. {
  24. try {
  25. $params = $this->request->param();
  26. $page = $params['page'] ?? 1;
  27. $limit = $params['limit'] ?? 15;
  28. $query = Admin::alias('admin')->join('kefu_work', 'kefu_work.admin_id = admin.id', 'left');
  29. if (isset($params['is_online'])) {
  30. $query->where('is_online', $params['is_online']);
  31. }
  32. $count = $query->count();
  33. $list = $query->field(['admin.*', 'kefu_work.chat_num','kefu_work.transfer_num','kefu_work.intervention_num','kefu_work.completed_num'])
  34. ->order('admin.id', 'asc')
  35. ->limit($limit)
  36. ->page($page)
  37. ->select();
  38. foreach ($list as &$value) {
  39. $value['chat_num'] = intval($value['chat_num']);
  40. $value['transfer_num'] = intval($value['transfer_num']);
  41. $value['intervention_num'] = intval($value['intervention_num']);
  42. $value['completed_num'] = intval($value['completed_num']);
  43. $value['inprocess'] = 0;//进行中
  44. $value['unprocessed'] = 0;//待处理
  45. }
  46. } catch (Exception $e) {
  47. return $this->error($e->getMessage());
  48. }
  49. return $this->success(['count' => $count, 'list' => $list]);
  50. }
  51. /**
  52. * @api {get} /list 客服数据展板列表
  53. */
  54. public function list()
  55. {
  56. try {
  57. $params = $this->request->param();
  58. $page = $params['page'] ?? 1;
  59. $limit = $params['limit'] ?? 15;
  60. $query = KefuWork::alias('kefu_work')->join('admin', 'kefu_work.admin_id = admin.id', 'left');
  61. if (isset($params['is_online'])) {
  62. $query->where('is_online', $params['is_online']);
  63. }
  64. if (!empty($params['start_time'])) {
  65. $query->where('kefu_work.created_at', '>=', $params['start_time'].'00:00:00');
  66. }
  67. if (!empty($params['end_time'])) {
  68. $query->where('kefu_work.created_at', '<=', $params['end_time'].'23:59:59');
  69. }
  70. $count = $query->count();
  71. $list = $query->field(['admin.username','admin.nickname','admin.is_online', 'kefu_work.*'])
  72. ->order('kefu_work.id', 'desc')
  73. ->limit($limit)
  74. ->page($page)
  75. ->select();
  76. foreach ($list as &$value) {
  77. // $value['chat_num'] = intval($value['chat_num']);
  78. // $value['transfer_num'] = intval($value['transfer_num']);
  79. // $value['intervention_num'] = intval($value['intervention_num']);
  80. // $value['completed_num'] = intval($value['completed_num']);
  81. // $value['inprocess'] = 0;//进行中
  82. // $value['unprocessed'] = 0;//待处理
  83. }
  84. } catch (Exception $e) {
  85. return $this->error($e->getMessage());
  86. }
  87. return $this->success(['count' => $count, 'list' => $list]);
  88. }
  89. //客服签到
  90. public function sign()
  91. {
  92. try {
  93. $admin_id = $this->admin_id;
  94. KefuWork::addNum($admin_id, 'sign_num');//客服签到次数更新
  95. //签到记录
  96. Sign::create([
  97. 'admin_id' => $admin_id,
  98. ]);
  99. } catch (\Exception $e) {
  100. return $this->error($e->getMessage());
  101. }
  102. }
  103. }