Pārlūkot izejas kodu

'修改客服转接提示'

Ethan 6 gadi atpakaļ
vecāks
revīzija
7d83e0189c

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

@@ -625,16 +625,16 @@ class Events
         self::$redis->hdel(self::USERINFOKEY, $uid);
         self::$redis->hdel(self::USERINFOKEY, $uid);
 
 
 
 
-        /*if (!empty($info['kfuid'])) {
+        if (!empty($info['kfuid'])) {
             $kfinfo = self::$redis->hget(self::KFINFOKEY, $info['kfuid']);
             $kfinfo = self::$redis->hget(self::KFINFOKEY, $info['kfuid']);
             if (!empty($kfinfo)) {
             if (!empty($kfinfo)) {
                 $kfinfoArr = json_decode($kfinfo, true);
                 $kfinfoArr = json_decode($kfinfo, true);
                 $krclient_id = $kfinfoArr['client_id'];
                 $krclient_id = $kfinfoArr['client_id'];
-                $kfinfoArr['user_info'] = self::ArrayDataopt($kfinfoArr['user_info'], $client_id, 0);
+                /*$kfinfoArr['user_info'] = self::ArrayDataopt($kfinfoArr['user_info'], $client_id, 0);
                 $kfinfoArr['task'] = count($kfinfoArr['user_info']);
                 $kfinfoArr['task'] = count($kfinfoArr['user_info']);
-                self::$redis->hset(self::KFINFOKEY, $info['kfuid'], json_encode($kfinfoArr, 256));
+                self::$redis->hset(self::KFINFOKEY, $info['kfuid'], json_encode($kfinfoArr, 256));*/
             }
             }
-        }*/
+        }
 
 
         $chat_message = [
         $chat_message = [
             'message_type' => 'userClose',
             'message_type' => 'userClose',
@@ -814,7 +814,7 @@ class Events
             // 指定用指定组 [可能存在断线重连的情况] 如果存在旧的会话,直接连线客服和用户
             // 指定用指定组 [可能存在断线重连的情况] 如果存在旧的会话,直接连线客服和用户
             //否则按先到后到以及客服最大服务数限制
             //否则按先到后到以及客服最大服务数限制
             if ($last) {
             if ($last) {
-                //self::BeginTalk(self::getkfuid($last['kf_id']), $uid, $last['group_id'], $last['servicelog_id']);
+                self::BeginTalk(self::getkfuid($last['kf_id']), $uid, $last['group_id'], $last['servicelog_id']);
                 // 获取工单信息.
                 // 获取工单信息.
                 $data = json_decode(self::$redis->HGET('SERVICELOG', $last['servicelog_id']), true);
                 $data = json_decode(self::$redis->HGET('SERVICELOG', $last['servicelog_id']), true);
                 if (empty($data)) {
                 if (empty($data)) {
@@ -988,6 +988,61 @@ class Events
         return;
         return;
     }
     }
 
 
+    //连接至上一个会话
+    private static function BeginOldTalk($kfuid, $uid, $group, $serviceid = 0, $userInfo = false)
+    {
+        $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)) {
+            return false;
+        }
+        // 获取旧工单信息.
+        $data = json_decode(self::$redis->HGET('SERVICELOG', $last['servicelog_id']), true);
+        // 修改工单数据.
+        $data['user_avatar'] = $userInfo['avatar'];
+        $data['client_id'] = $userInfo['client_id'];
+        $data['user_ip'] = $userInfo['ip'];
+        $data['website'] = $userInfo['website'];
+        $data['system'] = $userInfo['system'];
+        $data['browse'] = $userInfo['browse'];
+        $data['status'] = $userInfo['status'];
+        self::$redis->hset(self::SERVICELOG, $serviceid, json_encode($data, 256));
+
+        // 更改用户连接客服信息
+        $userInfo['serverid'] = $serviceid;
+        $userInfo['kfuid'] = $kfuid;
+        self::$redis->hset(self::USERINFOKEY, $uid, json_encode($userInfo, 256));
+
+        // 通知会员发送信息绑定客服的id
+        $noticeUser = [
+            'message_type' => 'connect',
+            'data' => [
+                'kf_id' => $kfuid,
+                'conversationId' => $serviceid,
+                'serverInfo' => $kfinfo,
+                'kf_name' => $kfinfo['job_name']
+            ]
+        ];
+        self::MySendMsg($userInfo['client_id'], json_encode($noticeUser, 256));
+
+        // 发送给客服用户信息.
+        $noticeKf = [
+            'message_type' => 'connect',
+            'data' => [
+                'user_info' => $userInfo,
+                'conversationId' => $serviceid,
+            ]
+        ];
+        self::MySendMsg($kfinfo['client_id'], json_encode($noticeKf, 256));
+        unset($noticeKf);
+
+        $key = date('Ymd') . 'success_in';
+        self::$global->increment($key);
+
+        return;
+    }
+
 
 
     //用户排队数据  按组
     //用户排队数据  按组
     private static function getUserListData()
     private static function getUserListData()
@@ -1500,6 +1555,7 @@ class Events
             self::$redis->del(self::USERINFOKEY);
             self::$redis->del(self::USERINFOKEY);
             self::$redis->del('adminList');
             self::$redis->del('adminList');
             self::$redis->del(self::WEBSOCKALLUSER);
             self::$redis->del(self::WEBSOCKALLUSER);
+            self::$redis->del('SERVICELOG');
             self::$db->query("update ws_service_log set status=2,end_time=$now where  start_time>=$t and  status!=2");
             self::$db->query("update ws_service_log set status=2,end_time=$now where  start_time>=$t and  status!=2");
         }
         }