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', ]; $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() public function index() { // 客服信息 $userInfo = db('users')->where('id', cookie('l_user_id'))->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']); } } }