|
|
@@ -112,7 +112,6 @@ class Events
|
|
|
return;
|
|
|
} else {
|
|
|
self::DebugOut($message, "OnMessage");
|
|
|
- self::DebugOut([self::$global->kfList, self::$global->userList, self::$global->uidSimpleList, self::$global->userToKf, $_SESSION['remotip'] . ':' . $_SESSION['remotport']], 'Msg mem: ');
|
|
|
}
|
|
|
$message = json_decode($message, true);
|
|
|
if (isset($message['type'])) {
|
|
|
@@ -207,10 +206,76 @@ class Events
|
|
|
//客服接入sock,及初始化
|
|
|
public static function Kfinit($client_id, $message)
|
|
|
{
|
|
|
+ $uid = self::getPars($message, 'uid');
|
|
|
+ $group = intval(self::getPars($message, 'group', 0));
|
|
|
|
|
|
+ if (empty($uid) || empty($group) || !isset(self::$global->groupmap[$group])) {
|
|
|
+ self::MySendMsg($client_id, json_encode(["message_type" => 'checkfalse', 'data' => "客服登陆参数错误"], 256));
|
|
|
+ Gateway::closeCurrentClient();
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- // TODO 尝试拉取用户来服务 [二期规划]
|
|
|
+ //客服登陆验证 不符合的直接断掉
|
|
|
+ $kfinfo = self::KfloginCheck($client_id, $message);
|
|
|
+ if (empty($kfinfo)) {
|
|
|
+ self::MySendMsg($client_id, json_encode(["message_type" => 'checkfalse', 'data' => "验证失败"], 256));
|
|
|
+ Gateway::closeCurrentClient();
|
|
|
+ return true;
|
|
|
+ } elseif ($kfinfo['status'] != 1) {
|
|
|
+ self::MySendMsg($client_id, json_encode(["message_type" => 'checkfalse', 'data' => "禁用中..."], 256));
|
|
|
+ Gateway::closeCurrentClient();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
|
|
|
+ $loginstate = self::$logic->Kfislogin($client_id, $uid, $group);
|
|
|
+ if ($loginstate == 1) {
|
|
|
+ self::MySendMsg($oldcontid, (json_encode(['message_type' => 'reLoginErr', 'msg' => '正在登陆中,请稍后...'], 256)));
|
|
|
+ Gateway::closeClient($oldcontid);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($loginstate == 2) {
|
|
|
+ $oldcontids = Gateway::getClientIdByUid($uid);
|
|
|
+ Gateway::sendToClient($oldcontids['0'], (json_encode(['message_type' => 'reLoginErr', 'msg' => '你的账号在其它登陆,本次下线'], 256)));
|
|
|
+ Gateway::closeClient($oldcontids['0']);
|
|
|
+ sleep(2);
|
|
|
+ }
|
|
|
+
|
|
|
+ self::$redis->hset('loginTmp:' . $uid, 'uid', time());
|
|
|
+ self::$redis->expire('loginTmp:' . $uid, 5);
|
|
|
+
|
|
|
+ $newinfo =
|
|
|
+ [
|
|
|
+ 'id' => 'KF' . $kfinfo['id'],
|
|
|
+ 'name' => $kfinfo['user_name'],
|
|
|
+ 'job_name' => $kfinfo['user_job_number'],
|
|
|
+ 'avatar' => $kfinfo['user_avatar'],
|
|
|
+ 'client_id' => $client_id,
|
|
|
+ 'task' => 0,
|
|
|
+ 'signature' => $kfinfo['signature'],
|
|
|
+ 'status' => 2, // 1为在线(接收分配、接收消息)2为隐身(不接收分配、只接收消息)3、休息
|
|
|
+ 'user_info' => []
|
|
|
+ ];
|
|
|
+
|
|
|
+ self::$redis->hset('KFINFO', $uid, json_encode($newinfo, 256));
|
|
|
+ $_SESSION['info'] = $newinfo;
|
|
|
+
|
|
|
+ // 绑定 client_id 和 uid
|
|
|
+ Gateway::bindUid($client_id, $message['uid']);
|
|
|
+ $_SESSION['group'] = $message['group'];
|
|
|
+ $_SESSION['iskefu'] = 1;
|
|
|
+ $_SESSION['uid'] = $message['uid'];
|
|
|
+ $_SESSION['name'] = $message['name'];
|
|
|
+ Gateway::joinGroup($client_id, 'group_' . $message['group']);
|
|
|
+
|
|
|
+ $chat_message = [
|
|
|
+ 'message_type' => 'loginSuccess',
|
|
|
+ ];
|
|
|
+ self::MySendMsg($client_id, json_encode($chat_message, 256));
|
|
|
+ unset($chat_message);
|
|
|
+ self::writeLogKfStatus($message['uid'], 2);
|
|
|
+
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -778,11 +843,43 @@ class Events
|
|
|
//调试使用
|
|
|
public static function mydebug($client_id, $message)
|
|
|
{
|
|
|
- print_r(self::$redis);
|
|
|
- $v = self::$redis->hget('test', 't01');
|
|
|
- echo 'mydebug ' . $v . "\n";
|
|
|
+ $date = self::$db->select('*')->from('ws_service_log')->where('servicelog_id= :id')->bindValues(['id' => 1])->row();
|
|
|
+ self::$redis->hset('SERVICELOG', 1, json_encode($date, 256));
|
|
|
|
|
|
}
|
|
|
|
|
|
+ public static function MySendMsg($clientId, $msg)
|
|
|
+ {
|
|
|
+ Gateway::sendToClient($clientId, $msg);
|
|
|
+ }
|
|
|
+
|
|
|
+ //得到客服的UID字符值
|
|
|
+ public static function getkfuid($uid)
|
|
|
+ {
|
|
|
+ if (substr($uid, 0, 2) == 'KF') {
|
|
|
+ return $uid;
|
|
|
+ } else {
|
|
|
+ return 'KF' . intval($uid);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //得到客服的ID整数值
|
|
|
+ public static function getkfid($id)
|
|
|
+ {
|
|
|
+ if ($id == intval($id)) {
|
|
|
+ return $id;
|
|
|
+ } else {
|
|
|
+ return intval(substr($id, 2));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function getPars($array, $key, $default = '')
|
|
|
+ {
|
|
|
+ if (isset($array[$key])) {
|
|
|
+ return $array[$key];
|
|
|
+ }
|
|
|
+ return $default;
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
+
|