vali 6 年之前
父节点
当前提交
f5ffea7dfd
共有 1 个文件被更改,包括 20 次插入15 次删除
  1. 20 15
      vendor/GatewayWorker_windows/Applications/whisper/Events.php

+ 20 - 15
vendor/GatewayWorker_windows/Applications/whisper/Events.php

@@ -546,7 +546,9 @@ class Events
             $data['kfuid'] = $last['kf_id'];
             $data['serverid'] = $last['servicelog_id'];
         }
-        self::$redis->hset(self::USERLIST, $uid, json_encode($data, 256));
+        if (!$last) {
+            self::$redis->hset(self::USERLIST, $uid, json_encode($data, 256));
+        }
         self::$redis->hset(self::USERINFOKEY, $uid, json_encode($data, 256));
 
         // 写入接入值
@@ -823,25 +825,13 @@ class Events
      */
     private static function userOnlineTask($group = 0, $uid = 0, $last = [], $client_id = '')
     {
-
-        $allusergkarr = self::getUserListData();
-        if (empty($allusergkarr)) {
-            return;
-        }
-
-        $allkfgkarr = self::getWorkKfData();
-        ///做某个组的客户是还有人服务检测,如果此组没有客服在线了,要把对应排队的人kh踢掉
-        self::Kf_user_click($allkfgkarr, $allusergkarr);
-
-        if (empty($allkfgkarr) && !$last) {
-            return;
-        }
-        $maxset = intval((self::$global->systemconfig)['KFMaxServices']['systemconfig_data']);
         if ($group && $uid) {
             // 指定用指定组 [可能存在断线重连的情况] 如果存在旧的会话,直接连线客服和用户
             //否则按先到后到以及客服最大服务数限制
             if ($last) {
+                //self::$redis->hdel(self::USERLIST, $uid);
                 self::BeginOldTalk(self::getkfuid($last['kf_id']), $uid, $last['group_id'], $last['servicelog_id']);
+
                 // 查询工单历史会话.
                 $serviceid = $last['servicelog_id'];
                 $chatLog = self::$db->select('*')->from('ws_chat_log')->where("servicelog_id=$serviceid")->orderByDESC(['time_line'])->row();
@@ -857,6 +847,19 @@ class Events
             }
         }
 
+        $allusergkarr = self::getUserListData();
+        if (empty($allusergkarr)) {
+            return;
+        }
+
+        $allkfgkarr = self::getWorkKfData();
+        ///做某个组的客户是还有人服务检测,如果此组没有客服在线了,要把对应排队的人kh踢掉
+        self::Kf_user_click($allkfgkarr, $allusergkarr);
+
+        if (empty($allkfgkarr) && !$last) {
+            return;
+        }
+        $maxset = intval((self::$global->systemconfig)['KFMaxServices']['systemconfig_data']);
 
         //系统定时调用时,无组,无用户
         foreach ($allusergkarr as $group => $gusersArr) {
@@ -1018,6 +1021,8 @@ class Events
     //连接至上一个会话
     private static function BeginOldTalk($kfuid, $uid, $group, $serviceid = 0, $userInfo = false)
     {
+        echo "BeginOldTalk " . print_r([$kfuid, $uid, $group, $serviceid, $userInfo], true) . "\n";
+
         $serviceid = intval($serviceid);
         $userInfo = json_decode(self::$redis->hget(self::USERINFOKEY, $uid), true);
         $kfinfo = json_decode(self::$redis->hget(self::KFINFOKEY, $kfuid), true);