Selaa lähdekoodia

Merge branch 'dev' of http://git.bocai108.com:10180/Ethan/Customer-Service into dev

Jonlin 6 vuotta sitten
vanhempi
commit
19de81b3c7
1 muutettua tiedostoa jossa 54 lisäystä ja 27 poistoa
  1. 54 27
      vendor/GatewayWorker_windows/Applications/whisper/Events.php

+ 54 - 27
vendor/GatewayWorker_windows/Applications/whisper/Events.php

@@ -176,7 +176,7 @@ class Events
                     break;
                 // 客服关闭会话.
                 case 'kfCloseUser':
-                    self::serverClose($message['data']['conversationId'], 3);
+                    self::serverClose($message['data']['conversationId'], $message['data']['type']);
                     break;
                 // 客服更改状态.
                 case 'kfOnline':
@@ -356,12 +356,6 @@ class Events
         self::writeLogKfStatus($userId, $status);
         Gateway::sendToCurrentClient(json_encode(['message_type' => 'cgstatus', 'data' => ['new_status' => $status, 'old_status' => $oldstatus]]));
 
-        $flag = self::$redis->hget(self::KFRELONINFLAG, $userId);
-        if (!empty($flag)) {
-            self::kfonlilneRework($client_id, $userId);
-            self::$redis->hdel(self::KFRELONINFLAG, $userId);
-        }
-
         return;
     }
 
@@ -448,11 +442,25 @@ class Events
         ];
         self::MySendMsg($client_id, json_encode($chat_message, 256));
         unset($chat_message);
-        self::writeLogKfStatus($message['uid'], 2);
+        self::KFStatusCg($client_id, ['data' => ['uid' => $uid, 'status' => 1]]);
+
+        self::SendKFHistoryRecord($client_id, $uid);
 
         return;
     }
 
+
+    //客服掉线后 历史聊天记录
+    private static function SendKFHistoryRecord($client_id, $userId)
+    {
+        $flag = self::$redis->hget(self::KFRELONINFLAG, $userId);
+        if (!empty($flag)) {
+            self::kfonlilneRework($client_id, $userId);
+            self::$redis->hdel(self::KFRELONINFLAG, $userId);
+        }
+        return;
+    }
+
     //客服上线重新处理下旧的没完成的工单信息
     private static function kfonlilneRework($clientid, $kfuid)
     {
@@ -898,20 +906,24 @@ class Events
             //否则按先到后到以及客服最大服务数限制
 
             if ($last) {
-                //self::$redis->hdel(self::USERLIST, $uid);
+                $userInfo = json_decode(self::$redis->hget(self::USERINFOKEY, $uid), true);
                 self::BeginOldTalk(self::getkfuid($last['kf_id']), $uid, $last['group_id'], $last['servicelog_id']);
-
-                // 查询工单历史会话.
-                $serviceid = $last['servicelog_id'];
-                $chatLog = self::$db->query("SELECT * FROM `ws_chat_log` where `servicelog_id`= '$serviceid' order by `time_line`");
-                $toOld_message = [
-                    'message_type' => 'toOld',
-                    'data' => [
-                        'chatLog' => $chatLog ?? [],
-                        'content' => '接入至未结束的会话'
-                    ]
-                ];
-                Gateway::sendToCurrentClient(json_encode($toOld_message, 256));
+                print_r([$client_id,$userInfo['client_id']]);
+                if ($client_id == $userInfo['client_id']) {
+                    // 查询工单历史会话.
+                    $serviceid = $last['servicelog_id'];
+                    $chatLog = self::$db->query("SELECT * FROM `ws_chat_log` where `servicelog_id`= '$serviceid' order by `time_line`");
+                    $toOld_message = [
+                        'message_type' => 'toOld',
+                        'data' => [
+                            'chatLog' => $chatLog ?? [],
+                            'content' => '接入至未结束的会话',
+                            'serviceid' => $serviceid,
+                            'uid' => $uid
+                        ]
+                    ];
+                    Gateway::sendToCurrentClient(json_encode($toOld_message, 256));
+                }
                 return;
             }
         }
@@ -1077,6 +1089,7 @@ class Events
             'data' => [
                 'user_info' => $userInfo,
                 'conversationId' => $serviceid,
+                'history' => [],
             ]
         ];
         self::MySendMsg($kfinfo['client_id'], json_encode($noticeKf, 256));
@@ -1095,7 +1108,7 @@ class Events
         $serviceid = intval($serviceid);
         $userInfo = json_decode(self::$redis->hget(self::USERINFOKEY, $uid), true);
         $kfinfo = json_decode(self::$redis->hget(self::KFINFOKEY, $kfuid), true);
-        if (empty($userInfo) || empty($kfinfo)) {
+        if (empty($userInfo)) {
             return false;
         }
         // 获取旧工单信息.
@@ -1242,12 +1255,26 @@ class Events
 
 
     //找到用户是否有一条未关闭的会话
-    private static function UserHasOldTalk($uid)
+    private static function UserHasOldTalk($uid, $database = 0)
     {
-        $uid = intval($uid);
-        $start_time = time() - 86400;
-        $ret = self::$db->select('*')->from('ws_service_log')->where("start_time>=$start_time and user_id=$uid and  status!=2 ")->orderByDESC(['servicelog_id'])->row();
-        return $ret;
+        if ($database) {
+            $uid = intval($uid);
+            $start_time = time() - 86400;
+            $ret = self::$db->select('*')->from('ws_service_log')->where("start_time>=$start_time and user_id=$uid and  status!=2 ")->orderByDESC(['servicelog_id'])->row();
+            return $ret;
+        }
+
+        $all = self::$redis->hgetall(self::SERVICELOG);
+        if (empty($all)) {
+            return false;
+        }
+        foreach ($all as $val) {
+            $tmp = json_decode($val, true);
+            if ($tmp && $tmp['user_id'] == $uid) {
+                return $tmp;
+            }
+        }
+        return false;
     }