vali hace 6 años
padre
commit
eb5f4b1032
Se han modificado 1 ficheros con 53 adiciones y 43 borrados
  1. 53 43
      vendor/GatewayWorker_windows/Applications/whisper/Events.php

+ 53 - 43
vendor/GatewayWorker_windows/Applications/whisper/Events.php

@@ -138,48 +138,7 @@ class Events
         switch ($message['type']) {
         switch ($message['type']) {
             // 客服初始化
             // 客服初始化
             case 'init':
             case 'init':
-                $kfList = self::$global->kfList;
-
-                //客服登陆验证 不符合的直接断掉
-                $logcheck = true ;     //开发时使用
-                //$logcheck = self::KfloginChedk($client_id, $message);
-                if (!$logcheck) {
-                    Gateway::closeCurrentClient();
-                    return true;
-                }
-
-                // 如果该客服未在内存中记录则记录
-                if (!isset($kfList[$message['group']]) || !array_key_exists($message['uid'], $kfList[$message['group']])) {
-
-                    do {
-                        $newKfList = $kfList;
-                        $newKfList[$message['group']][$message['uid']] = [
-                            'id' => $message['uid'],
-                            'name' => $message['name'],
-                            'avatar' => $message['avatar'],
-                            'client_id' => $client_id,
-                            'task' => 0,
-                            'user_info' => []
-                        ];
-                    } while (!self::$global->cas('kfList', $kfList, $newKfList));
-                    unset($newKfList, $kfList);
-                } else if (isset($kfList[$message['group']][$message['uid']])) {
-
-                    do {
-                        $newKfList = $kfList;
-                        $newKfList[$message['group']][$message['uid']]['client_id'] = $client_id;
-                    } while (!self::$global->cas('kfList', $kfList, $newKfList));
-                    unset($newKfList, $kfList);
-                }
-
-                // 绑定 client_id 和 uid
-                Gateway::bindUid($client_id, $message['uid']);
-                $_SESSION['group'] = $message['group'];
-                $_SESSION['iskefu'] = 1;
-                $_SESSION['uid'] = $message['uid'];
-
-                // TODO 尝试拉取用户来服务 [二期规划]
-
+                self::Kfinit($client_id, $message);
                 break;
                 break;
             // 顾客初始化
             // 顾客初始化
             case 'userInit';
             case 'userInit';
@@ -334,6 +293,52 @@ class Events
 
 
     }
     }
 
 
+    //客服接入sock,及初始化
+    public static  function  Kfinit($client_id, $message){
+        $kfList = self::$global->kfList;
+
+        //客服登陆验证 不符合的直接断掉
+        $logcheck = true ;     //开发时使用
+        //$logcheck = self::KfloginChedk($client_id, $message);
+        if (!$logcheck) {
+            Gateway::closeCurrentClient();
+            return true;
+        }
+
+        // 如果该客服未在内存中记录则记录
+        if (!isset($kfList[$message['group']]) || !array_key_exists($message['uid'], $kfList[$message['group']])) {
+
+            do {
+                $newKfList = $kfList;
+                $newKfList[$message['group']][$message['uid']] = [
+                    'id' => $message['uid'],
+                    'name' => $message['name'],
+                    'avatar' => $message['avatar'],
+                    'client_id' => $client_id,
+                    'task' => 0,
+                    'user_info' => []
+                ];
+            } while (!self::$global->cas('kfList', $kfList, $newKfList));
+            unset($newKfList, $kfList);
+        } else if (isset($kfList[$message['group']][$message['uid']])) {
+
+            do {
+                $newKfList = $kfList;
+                $newKfList[$message['group']][$message['uid']]['client_id'] = $client_id;
+            } while (!self::$global->cas('kfList', $kfList, $newKfList));
+            unset($newKfList, $kfList);
+        }
+
+        // 绑定 client_id 和 uid
+        Gateway::bindUid($client_id, $message['uid']);
+        $_SESSION['group'] = $message['group'];
+        $_SESSION['iskefu'] = 1;
+        $_SESSION['uid'] = $message['uid'];
+
+        // TODO 尝试拉取用户来服务 [二期规划]
+
+    }
+
     //客服登陆验证
     //客服登陆验证
     public static function KfloginChedk($client, $messageArray)
     public static function KfloginChedk($client, $messageArray)
     {
     {
@@ -347,7 +352,8 @@ class Events
         $kfid = intval(substr($uid, 2));
         $kfid = intval(substr($uid, 2));
         $ret = self::$db->select('*')->from('ws_users')->where('id= :id and  token=:token and  expire_time>=:expire_time')->bindValues(array('id' => $kfid, 'token' => $token, 'expire_time' => $expire_time_vali))->row();
         $ret = self::$db->select('*')->from('ws_users')->where('id= :id and  token=:token and  expire_time>=:expire_time')->bindValues(array('id' => $kfid, 'token' => $token, 'expire_time' => $expire_time_vali))->row();
         if ($ret) {
         if ($ret) {
-            return true;
+            self::$db->update('ws_users')->cols(array('online_status'=>1,'online_connectid'=>$client))->where('id='.$kfid)->query();
+            return $ret;
         }
         }
         return false;
         return false;
     }
     }
@@ -465,6 +471,10 @@ class Events
             }
             }
         }
         }
         unset($kefuinfo_old_new[$group][$uid]);
         unset($kefuinfo_old_new[$group][$uid]);
+
+        $kfid = intval(substr($uid,2));
+        self::$db->update('ws_users')->cols(array('online_status'=>0,'online_connectid'=>''))->where('id='.$kfid)->query();
+
         do {
         do {
         } while (!self::$global->cas('kfList', $kefuinfo_old, $kefuinfo_old_new));
         } while (!self::$global->cas('kfList', $kefuinfo_old, $kefuinfo_old_new));
         return;
         return;