vali 6 سال پیش
والد
کامیت
e47aa6f9e8
1فایلهای تغییر یافته به همراه33 افزوده شده و 4 حذف شده
  1. 33 4
      vendor/GatewayWorker_windows/Applications/whisper/Events.php

+ 33 - 4
vendor/GatewayWorker_windows/Applications/whisper/Events.php

@@ -190,7 +190,35 @@ class Events
     //获取在线客服列表
     public static function getkfonlines()
     {
+        $return = [
+            'message_type' => 'onlinekfs',
+            'data' => [],
+        ];
+        $nowkfid = isset($_SESSION['uid']) ? $_SESSION['uid'] : 0;
+        $fromgrouupid = isset($_SESSION['group']) ? $_SESSION['group'] : 0;
+
+        if (empty($fromgrouupid) || empty($nowkfid)) {
+            return $return;
+        }
+
+        $online = self::getOnlineKfData(0, 1);
+
+        if (empty($online)) {
+            return $return;
+        }
 
+        $groupnamemap = self::$global->groupmap;
+        $ret = [];
+
+        foreach ($online as $uinfo) {
+            if ($nowkfid == $uinfo['id']) {
+                continue;
+            }
+            $ret[] = ['groupid' => $uinfo['group'], 'groupname' => $groupnamemap[$uinfo['group']], 'kfuid' => $uinfo['id'], 'kfname' => $uinfo['name'], 'kfjobname' => $uinfo['job_name']];
+        }
+        $return['data'] = $ret;
+
+        return $return;
     }
 
 
@@ -470,16 +498,18 @@ class Events
         $kfid = self::getkfid($uid);
         $now = time();
         $starttime = $now - 86400 * 7;
-        $serlogs = self::$db->select('servicelog_id')->from('ws_service_log')->where(" start_time>=$starttime  kf_id=$kfid AND status !=2 ")->query();
+        $serlogs = self::$db->select('servicelog_id')->from('ws_service_log')->where(" start_time>=$starttime and  kf_id=$kfid AND status !=2 ")->query();
 
         if (!empty($user_info)) {
-            foreach ($user_info as $val) {
+            foreach ($user_info as $val => $serverid) {
                 self::MySendMsg($val, json_encode(['message_type' => 'serviceoffline', 'msg' => '客户人员下线!'], 256));
                 Gateway::closeClient($val);
             }
         }
 
-        self::$db->query("update `ws_service_log` set `status` = '2',end_time=$now,`servicelog_close_type` = 4   where  kf_id=$uiiid and  group_id=$group  and  `status`!=2 ");
+        $sql = "update `ws_service_log` set `status` = '2',end_time=$now,`servicelog_close_type` = 4   where  start_time>=$starttime  and kf_id=$kfid and  group_id=$group  and  `status`!=2 ";
+        echo "客服退出: " . $sql . "\n";
+        self::$db->query($sql);
         self::$db->update('ws_users')->cols(array('online_status' => 0, 'online_connectid' => ''))->where('id=' . $kfid)->query();
         self::writeLogKfStatus($uid, 0);
 
@@ -591,7 +621,6 @@ class Events
             // 指定用指定组 [可能存在断线重连的情况] 如果存在旧的会话,直接连线客服和用户
             //否则按先到后到以及客服最大服务数限制
             $last = self::UserHasOldTalk($uid);
-            echo "last-> " . print_r($last, true) . "\n";
             if ($last) {
                 self::BeginTalk(self::getkfuid($last['kf_id']), $uid, $last['group_id'], $last['servicelog_id']);
                 return;