vali 6 år sedan
förälder
incheckning
c65eb9b6d1
1 ändrade filer med 32 tillägg och 5 borttagningar
  1. 32 5
      vendor/GatewayWorker_windows/Applications/whisper/Events.php

+ 32 - 5
vendor/GatewayWorker_windows/Applications/whisper/Events.php

@@ -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);
                     }