|
|
@@ -342,6 +342,12 @@ class Events
|
|
|
|
|
|
self::writeLogKfStatus($userId, $status);
|
|
|
Gateway::sendToCurrentClient(json_encode(['message_type' => 'cgstatus', 'data' => ['new_status' => $status, 'old_status' => $oldstatus]]));
|
|
|
+
|
|
|
+ if ($status == 1) {
|
|
|
+ self::kfonlilneRework($client_id, $userId);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -417,6 +423,8 @@ class Events
|
|
|
$_SESSION['iskefu'] = 1;
|
|
|
$_SESSION['uid'] = $message['uid'];
|
|
|
$_SESSION['name'] = $message['name'];
|
|
|
+ $_SESSION['client_id'] = $client_id;
|
|
|
+
|
|
|
Gateway::joinGroup($client_id, 'group_' . $message['group']);
|
|
|
|
|
|
$chat_message = [
|
|
|
@@ -429,6 +437,27 @@ class Events
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ //客服上线重新处理下旧的没完成的工单信息
|
|
|
+ private static function kfonlilneRework($clientid, $kfuid)
|
|
|
+ {
|
|
|
+ $oldService = self::$redis->hgetall(self::getKfServiceKey($kfuid));
|
|
|
+ if ($oldService) {
|
|
|
+ foreach ($oldService as $tmpcie => $tmpsid) {
|
|
|
+ $tmpserver = json_decode(self::$redis->hget(self::SERVICELOG, $tmpsid), true);
|
|
|
+ if (!$tmpserver) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ $useronline = Gateway::isUidOnline($tmpserver['user_id']);
|
|
|
+ if (!$useronline) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ $tmpserver['kf_client_id'] = $clientid;
|
|
|
+ self::$redis->hset(self::SERVICELOG, $tmpsid, json_encode($tmpserver), 256);
|
|
|
+ self::userOnlineTask($tmpserver['group_id'], $tmpserver['user_id'], $tmpserver, 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 管理员登陆验证
|
|
|
@@ -593,13 +622,37 @@ class Events
|
|
|
}
|
|
|
|
|
|
if ($isKefuoff) {
|
|
|
- self::serviceOffline($client_id, $uid);
|
|
|
+ self::serviceOfflineV2($client_id, $uid);
|
|
|
} else {
|
|
|
self::guestOffline($client_id, $uid);
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ //客服掉线处理 第二版 系统调用,不能手动调用
|
|
|
+ public static function serviceOfflineV2($client_id, $uid)
|
|
|
+ {
|
|
|
+ $group = $_SESSION['group'];
|
|
|
+ $uinfo = self::$redis->hget(self::KFINFOKEY, $uid);
|
|
|
+ self::$redis->hdel(self::KFINFOKEY, $uid);
|
|
|
+ $uinfo = json_decode($uinfo, true);
|
|
|
+ if (empty($uinfo) || empty($group)) {
|
|
|
+ echo "客服发生异常退出\n";
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ $user_info = self::$redis->hgetall(self::getKfServiceKey($uid));
|
|
|
+ if (!empty($user_info)) {
|
|
|
+ foreach ($user_info as $val => $serverid) {
|
|
|
+ self::MySendMsg($val, json_encode(['message_type' => 'serviceoffline', 'msg' => '客户人员下线!'], 256));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ echo "客服退出: " . $uid . "\n";
|
|
|
+ self::writeLogKfStatus($uid, 0);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
//客服下线了 系统调用,不能手动调用
|
|
|
public static function serviceOffline($client_id, $uid)
|
|
|
{
|