Sfoglia il codice sorgente

'新增修改工单信息方法'

Ethan 6 anni fa
parent
commit
b5b197db48
1 ha cambiato i file con 46 aggiunte e 21 eliminazioni
  1. 46 21
      vendor/GatewayWorker_windows/Applications/whisper/Events.php

+ 46 - 21
vendor/GatewayWorker_windows/Applications/whisper/Events.php

@@ -239,26 +239,13 @@ class Events
             Gateway::sendToClient($data['kf_client_id'], json_encode($chat_message, 256));
         }
         // 返回当前时间
-        if (isset($message['webTime'])) {
-            $timeDifference = strtotime(date('H:i')) - strtotime($message['webTime']);
-            if ($timeDifference >= 120) {
-                $chat_message = [
-                    'message_type' => 'webTime',
-                    'data' => [
-                        'webTime' => date('H:i'),
-                    ]
-                ];
-                Gateway::sendToCurrentClient(json_encode($chat_message, 256));
-            }
-        } else {
-            $chat_message = [
-                'message_type' => 'webTime',
-                'data' => [
-                    'webTime' => date('H:i'),
-                ]
-            ];
-            Gateway::sendToCurrentClient(json_encode($chat_message, 256));
-        }
+        $chat_message = [
+            'message_type' => 'webTime',
+            'data' => [
+                'webTime' => date('H:i'),
+            ]
+        ];
+        Gateway::sendToCurrentClient(json_encode($chat_message, 256));
         // 保存修改后的工单信息.
         self::$redis->HSET('SERVICELOG', $message['conversationId'], json_encode($data, 256));
 
@@ -741,6 +728,44 @@ class Events
     }
 
 
+    /**
+     * 修改工单数据库数据
+     * @param int $client_id 连接id
+     *
+     * tips: 当服务端主动退出的时候,会出现 exit status 9.原因是:服务端主动断开之后,连接的客户端会走这个方法,而短时间内进程
+     * 需要处理这多的逻辑,又有cas操作,导致进程退出会超时,然后会被内核杀死,从而报出错误 9.实际对真正的业务没有任何的影响。
+     */
+    public static function insertServerLog($servicelogId, $closeBy = 0)
+    {
+        // 获取当前工单数据.
+        $data = json_decode(self::$redis->HGET('SERVICELOG', $servicelogId), true);
+        if (empty($data)) {
+            return;
+        }
+        // 查询工单会话总数.
+        $chatCount = self::$db->select('count(*) as count')->from('ws_chat_log')->where("servicelog_id=$servicelogId")->row();
+        // 将数据存入数据库.
+        $updateServiceLogData = [
+            'status' => 2,
+            'evaluate_id' => isset($data['evaluate_id']) ? $data['evaluate_id'] : 0,
+            'evaluate_content' => isset($data['evaluate_content']) ? $data['evaluate_content'] : '',
+            'servicelog_close_type' => $closeBy,
+            'end_time' => time(),
+        ];
+        $updataAlarmData = [
+            'alarm_userSensitive' => $data['alarm_userSensitive'],
+            'alarm_serverSensitive' => $data['alarm_serverSensitive'],
+            'alarm_corresponding' => $data['alarm_corresponding'],
+            'alarm_cvtOvertime' => time() - $data['start_time'],
+            'alarm_respond' => $data['alarm_respond'],
+            'alarm_lineTime' => $data['start_time'] - $data['intime'],
+            'alarm_count' => $chatCount['count'],
+        ];
+        self::$db->update('ws_service_log')->cols($updateServiceLogData)->where("servicelog_id=$servicelogId")->query();
+        self::$db->update('ws_alarm')->cols($updataAlarmData)->where("servicelog_id=$servicelogId")->query();
+    }
+
+
     /**
      * 有人退出
      * @param $group
@@ -1558,7 +1583,7 @@ class Events
             });
 
             // 检查对话时效给出.
-            Timer::add(20, function () {
+            Timer::add(40, function () {
                 self::overTime();
             });