vali пре 6 година
родитељ
комит
9b317c1a18

+ 29 - 0
vendor/GatewayWorker_linux/GatewayWorker/Applications/whisper/Events.php

@@ -47,6 +47,7 @@ class Events
     const  WEBSOCKALLUSER = 'WEBSOCKALLUSER';          //所有连接
     const  KFRELONINFLAG = 'KFRELOGIN';                 //客服重登陆标示
     const  ADMINLIST = 'adminList';               //后台管理的连接
+    const  KEFU_USERIDS = 'KEFU_USERIDS';       //客服和用户的关联映射
 
     /**
      * 进程启动后初始化数据库连接
@@ -890,6 +891,7 @@ class Events
                 self::MySendMsg($val, json_encode(['message_type' => 'serviceoffline', 'msg' => '客服人员下线!'], 256));
             }
         }
+        self::addKfUsermap($uid, 0, 0);
 
         return;
     }
@@ -961,6 +963,7 @@ class Events
                 $kfinfoArr['task'] = count($kfinfoArr['user_info']);
                 self::$redis->hset(self::KFINFOKEY, $info['kfuid'], json_encode($kfinfoArr, 256));*/
             }
+            self::addKfUsermap($info['kfuid'], $uid, 0);
         }
 
         $chat_message = [
@@ -1331,6 +1334,8 @@ class Events
         $key = date('Ymd') . 'success_in';
         self::$global->increment($key);
 
+        self::addKfUsermap($kfuid, $uid);
+
         return;
     }
 
@@ -1420,6 +1425,8 @@ class Events
         $key = date('Ymd') . 'success_in';
         self::$global->increment($key);
 
+        self::addKfUsermap($kfuid, $uid);
+
         return;
     }
 
@@ -1952,6 +1959,9 @@ class Events
         // 发送给用户转接消息
         Gateway::sendToClient($user_info['client_id'], json_encode(['message_type' => 'changeKeFuSuccess', 'data' => ['content' => "会话转接成功"]], 256));
 
+        self::addKfUsermap($fromkfuid, $uid, 0);
+        self::addKfUsermap($toukfid, $uid, 1);
+
         self::DebugOut('changekf 转换成功!');
 
         return;
@@ -2367,6 +2377,25 @@ class Events
 
     }
 
+    //客服用户映射哈希表
+    public static function addKfUsermap($kfuid, $userid = 0, $opt = 1)
+    {
+        $kfuid = self::getkfuid($kfuid);
+        $uid = intval($userid);
+        $key = self::KEFU_USERIDS . ':' . $kfuid;
+
+        if ($opt) {
+            $ret = self::$redis->hset($key, $uid, date("Y-m-d H:i:s"));
+        } else {
+            if ($userid) {
+                $ret = self::$redis->hdel($key, $uid);
+            } else {
+                $ret = self::del($key);
+            }
+        }
+        return $ret;
+    }
+
     //缓存获取用户信息
     public static function getUserInfoCache($uid, $cacheTime = 180, $fcache = 1)
     {

+ 29 - 0
vendor/GatewayWorker_windows/Applications/whisper/Events.php

@@ -47,6 +47,7 @@ class Events
     const  WEBSOCKALLUSER = 'WEBSOCKALLUSER';          //所有连接
     const  KFRELONINFLAG = 'KFRELOGIN';                 //客服重登陆标示
     const  ADMINLIST = 'adminList';               //后台管理的连接
+    const  KEFU_USERIDS = 'KEFU_USERIDS';       //客服和用户的关联映射
 
     /**
      * 进程启动后初始化数据库连接
@@ -890,6 +891,7 @@ class Events
                 self::MySendMsg($val, json_encode(['message_type' => 'serviceoffline', 'msg' => '客服人员下线!'], 256));
             }
         }
+        self::addKfUsermap($uid, 0, 0);
 
         return;
     }
@@ -961,6 +963,7 @@ class Events
                 $kfinfoArr['task'] = count($kfinfoArr['user_info']);
                 self::$redis->hset(self::KFINFOKEY, $info['kfuid'], json_encode($kfinfoArr, 256));*/
             }
+            self::addKfUsermap($info['kfuid'], $uid, 0);
         }
 
         $chat_message = [
@@ -1331,6 +1334,8 @@ class Events
         $key = date('Ymd') . 'success_in';
         self::$global->increment($key);
 
+        self::addKfUsermap($kfuid, $uid);
+
         return;
     }
 
@@ -1420,6 +1425,8 @@ class Events
         $key = date('Ymd') . 'success_in';
         self::$global->increment($key);
 
+        self::addKfUsermap($kfuid, $uid);
+
         return;
     }
 
@@ -1952,6 +1959,9 @@ class Events
         // 发送给用户转接消息
         Gateway::sendToClient($user_info['client_id'], json_encode(['message_type' => 'changeKeFuSuccess', 'data' => ['content' => "会话转接成功"]], 256));
 
+        self::addKfUsermap($fromkfuid, $uid, 0);
+        self::addKfUsermap($toukfid, $uid, 1);
+
         self::DebugOut('changekf 转换成功!');
 
         return;
@@ -2367,6 +2377,25 @@ class Events
 
     }
 
+    //客服用户映射哈希表
+    public static function addKfUsermap($kfuid, $userid = 0, $opt = 1)
+    {
+        $kfuid = self::getkfuid($kfuid);
+        $uid = intval($userid);
+        $key = self::KEFU_USERIDS . ':' . $kfuid;
+
+        if ($opt) {
+            $ret = self::$redis->hset($key, $uid, date("Y-m-d H:i:s"));
+        } else {
+            if ($userid) {
+                $ret = self::$redis->hdel($key, $uid);
+            } else {
+                $ret = self::del($key);
+            }
+        }
+        return $ret;
+    }
+
     //缓存获取用户信息
     public static function getUserInfoCache($uid, $cacheTime = 180, $fcache = 1)
     {