| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- <?php
- namespace app\service\controller;
- /**
- * 客服系统首页类
- */
- class Index extends Common
- {
- /**
- * 获取用户详情
- *
- * @access public
- * @return array JsonString
- */
- public function userInfo()
- {
- // 验证token.
- $tokenStatus = $this->verifyToken();
- $code = -2;
- $msg = '错误';
- if ($tokenStatus === false) {
- return json(['code' => $code, 'data' => [], 'msg' => $msg]);
- }
- try {
- $getUserToken = input('server.HTTP_userToken');
- $usersField = [
- 'a.id',
- 'user_name',
- 'user_avatar',
- 'b.name',
- ];
- // 关联信息.
- $join['groups b'] = 'a.group_id = b.id';
- $usersWhere['token'] = $getUserToken;
- // 获取用户信息.
- $usersInfo = model('users')->findInfo($usersField, $usersWhere, $join);
- return json(['code' => 200, 'data' => $usersInfo, 'msg' => '成功']);
- } catch (\Exception $e) {
- return json(['code' => $code, 'data' => [], 'msg' => $msg]);
- }//end try
- }//end userInfo()
- /**
- * 获取用户快捷语
- *
- * @access public
- * @return array JsonString
- */
- public function userWords()
- {
- // 验证token.
- $tokenStatus = $this->verifyToken();
- $code = -2;
- $msg = '错误';
- if ($tokenStatus === false) {
- return json(['code' => $code, 'data' => [], 'msg' => $msg]);
- }
- try {
- // 获取用户信息.
- $getUserInfo = $this->getUserInfo();
- // 获取快捷语.
- $wordsField = [
- 'id',
- 'content',
- 'title',
- ];
- $sysWordsWhere['status'] = 1;
- $sysWordsWhere['user_id'] = 0;
- // 查询系统快捷语.
- $sysWords = model('words')->selectWords($wordsField, $sysWordsWhere);
- // 查询用户私有快捷语条件.
- $userWordsWhere['user_id'] = $getUserInfo->id;
- // 查询用户私有快捷语.
- $userWords = model('words')->selectWords($wordsField, $userWordsWhere);
- $result = [
- 'sysWords' => $sysWords,
- 'userWords' => $userWords,
- ];
- return json(['code' => 200, 'data' => $result, 'msg' => '成功']);
- } catch (\Exception $e) {
- return json(['code' => $code, 'data' => [], 'msg' => $msg]);
- }//end try
- }//end userWords()
- /**
- * 获取敏感词
- *
- * @access public
- * @return array JsonString
- */
- public function sensitiveWords()
- {
- // 验证token.
- $tokenStatus = $this->verifyToken();
- $code = -2;
- $msg = '错误';
- if ($tokenStatus === false) {
- return json(['code' => $code, 'data' => [], 'msg' => $msg]);
- }
- try {
- // 获取快捷语.
- $wordsField = ['*'];
- $sysWordsWhere['sensitivewords_status'] = 1;
- // 查询系统快捷语.
- $sensitiveWords = model('sensitivewords')->selectWords($wordsField, $sysWordsWhere);
- return json(['code' => 200, 'data' => $sensitiveWords, 'msg' => '成功']);
- } catch (\Exception $e) {
- return json(['code' => $code, 'data' => [], 'msg' => $msg]);
- }//end try
- }//end userWords()
- public function index()
- {
- $getUserInfo = $this->getUserInfo();
- // 客服信息
- $userInfo = db('users')->where('id', 1)->find();
- $this->assign([
- 'uinfo' => $userInfo,
- 'word' => db('words')->select(),
- 'groups' => db('groups')->where('status', 1)->select(),
- 'status' => db('kf_config')->where('id', 1)->find()
- ]);
- return $this->fetch();
- }
- // 获取服务用户列表
- // 此方法是为了防止客服工作期间错误的刷新工作台,导致服务人员消失的问题
- public function getUserList()
- {
- if(request()->isAjax()){
- // 此处只查询过去 三个小时 内的未服务完的用户
- $userList = db('service_log')
- ->where(function ($query) {
- $query = $query->where('status', 1);
- $query = $query->whereOr('status', 3);
- return $query;
- })
- ->select();
- return json(['code' => 1, 'data' => $userList, 'msg' => 'ok']);
- }
- }
- // 获取聊天记录
- public function getChatLog()
- {
- if(request()->isAjax()){
- $param = input('param.');
- $limit = 10; // 一次显示10 条聊天记录
- $offset = ($param['page'] - 1) * $limit;
- $logs = db('chat_log')->where(function($query) use($param){
- $query->where('from_id', $param['uid'])->where('to_id', 'KF' . cookie('l_user_id'));
- })->whereOr(function($query) use($param){
- $query->where('from_id', 'KF' . cookie('l_user_id'))->where('to_id', $param['uid']);
- })->limit($offset, $limit)->order('id', 'desc')->select();
- $total = db('chat_log')->where(function($query) use($param){
- $query->where('from_id', $param['uid'])->where('to_id', 'KF' . cookie('l_user_id'));
- })->whereOr(function($query) use($param){
- $query->where('from_id', 'KF' . cookie('l_user_id'))->where('to_id', $param['uid']);
- })->count();
- foreach($logs as $key=>$vo){
- $logs[$key]['type'] = 'user';
- $logs[$key]['time_line'] = date('Y-m-d H:i:s', $vo['time_line']);
- if($vo['from_id'] == 'KF' . cookie('l_user_id')){
- $logs[$key]['type'] = 'mine';
- }
- }
- return json(['code' => 1, 'data' => $logs, 'msg' => intval($param['page']), 'total' => ceil($total / $limit)]);
- }
- }
- // ip 定位
- public function getCity()
- {
- $ip = input('param.ip');
- $ip2region = new \Ip2Region();
- $info = $ip2region->btreeSearch($ip);
- $city = explode('|', $info['region']);
- if(0 != $info['city_id']){
- return json(['code' => 1, 'data' => $city['2'] . $city['3'] . $city['4'], 'msg' => 'ok']);
- }else{
- return json(['code' => 1, 'data' => $city['0'], 'msg' => 'ok']);
- }
- }
- }
|