|
|
@@ -209,11 +209,38 @@ class Events
|
|
|
//更新用户缓存信息
|
|
|
self::updateusercache($client_id, $message['data']);
|
|
|
break;
|
|
|
+ case 'tickkf':
|
|
|
+ //将某个kf踢下线
|
|
|
+ self::tickkf($client_id, $message['data']);
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ //将某个客服踢下线 (只能是管理员连上来的socket才可以操作)
|
|
|
+ public static function tickkf($client_id, $messag)
|
|
|
+ {
|
|
|
+ if (!self::isAdmin($client_id)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $kfuid = self::getkfuid($messag['kfuid']);
|
|
|
+ $kfdatas = json_decode(self::$redis->hget(self::KFINFOKEY, $kfuid), true);
|
|
|
+ if (!$kfdatas) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $client_id = $kfdatas['client_id'];
|
|
|
+ Gateway::closeClient($client_id);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //看一个连接是否来自管理员的
|
|
|
+ public static function isAdmin($client_id)
|
|
|
+ {
|
|
|
+ return self::$redis->sismember(self::ADMINLIST, $client_id);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
//更新用户缓存信息
|
|
|
public static function updateusercache($client_id, $dataArray)
|
|
|
@@ -572,7 +599,7 @@ class Events
|
|
|
// 查询token是否存在.
|
|
|
$systemConfigData = self::$db->query("SELECT `id` FROM `ws_admins` where `token`= '$token'");
|
|
|
if ($systemConfigData) {
|
|
|
- self::$redis->sadd('adminList', $client_id);
|
|
|
+ self::$redis->sadd(self::ADMINLIST, $client_id);
|
|
|
self::systemMonitoring([$client_id]);
|
|
|
} else {
|
|
|
$chat_message = [
|
|
|
@@ -718,9 +745,9 @@ class Events
|
|
|
|
|
|
echo date("Y-m-d H:i:s") . ' - ' . "下线:uid: $uid - cid: $client_id - iskf: $isKefuoff \n";
|
|
|
|
|
|
- $isAdmin = self::$redis->sismember('adminList', $client_id);
|
|
|
+ $isAdmin = self::isAdmin($client_id);
|
|
|
if ($isAdmin) {
|
|
|
- self::$redis->srem('adminList', $client_id);
|
|
|
+ self::$redis->srem(self::ADMINLIST, $client_id);
|
|
|
}
|
|
|
if (empty($uid)) {
|
|
|
return true;
|
|
|
@@ -1948,7 +1975,7 @@ class Events
|
|
|
// 管理员实时监控.
|
|
|
Timer::add(20, function () {
|
|
|
// 获取在线管理员
|
|
|
- $adminList = self::$redis->smembers('adminList');
|
|
|
+ $adminList = self::$redis->smembers(self::ADMINLIST);
|
|
|
if ($adminList) {
|
|
|
self::systemMonitoring($adminList);
|
|
|
}
|
|
|
@@ -2011,7 +2038,7 @@ class Events
|
|
|
// 管理员实时监控.
|
|
|
Timer::add(20, function () {
|
|
|
// 获取在线管理员
|
|
|
- $adminList = self::$redis->smembers('adminList');
|
|
|
+ $adminList = self::$redis->smembers(self::ADMINLIST);
|
|
|
if ($adminList) {
|
|
|
self::systemMonitoring($adminList);
|
|
|
}
|