|
|
@@ -80,6 +80,8 @@ class Events
|
|
|
|
|
|
// 定时统计数据
|
|
|
if (0 === $worker->id) {
|
|
|
+ self::writeLogKfStatus(0, 0, 0);
|
|
|
+
|
|
|
// 1分钟统计一次实时数据
|
|
|
Timer::add(60 * 1, function () {
|
|
|
self::writeLog(1);
|
|
|
@@ -210,7 +212,7 @@ class Events
|
|
|
$data = $message['data'];
|
|
|
self::userInitEnt($client_id, $data);
|
|
|
break;
|
|
|
- // 聊天
|
|
|
+ //在线客服信息
|
|
|
case 'getkfonlines':
|
|
|
Gateway::sendToCurrentClient(json_encode(self::getkfonlines(), 256));
|
|
|
break;
|
|
|
@@ -375,6 +377,8 @@ class Events
|
|
|
}
|
|
|
}
|
|
|
self::$global->kfList = $kfList;
|
|
|
+ self::writeLogKfStatus($userId, $status);
|
|
|
+
|
|
|
break;
|
|
|
case 'changeOtherhKeFu';
|
|
|
self::changeOtherhKeFu($client_id, $message);
|
|
|
@@ -413,7 +417,7 @@ class Events
|
|
|
foreach ($kfs as $gruop => $fs) {
|
|
|
foreach ($fs as $kfid => $kfdata) {
|
|
|
if ($kfdata['status'] == 1) {
|
|
|
- $ret[$gruop][] = ['id' => $kfid, 'name' => $kfdata['name'], 'job_member' => $kfdata['job_name'], 'avatar' => $kfdata['avatar'],'signature'=>$kfdata['signature']];
|
|
|
+ $ret[$gruop][] = ['id' => $kfid, 'name' => $kfdata['name'], 'job_member' => $kfdata['job_name'], 'avatar' => $kfdata['avatar'], 'signature' => $kfdata['signature']];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -452,6 +456,11 @@ class Events
|
|
|
if (!isset($kfList[$groupid]) || !isset($kfList[$groupid][$toukfid]) || !isset($kfList[$groupid][$fromkfuid])) {
|
|
|
return false;
|
|
|
}
|
|
|
+ if ($kfList[$groupid][$toukfid]['status'] != 1) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
foreach ($kfList[$groupid] as $key => $val) {
|
|
|
if ($key == $fromkfuid) {
|
|
|
$kfList_new[$groupid][$fromkfuid]['task']--;
|
|
|
@@ -546,7 +555,7 @@ class Events
|
|
|
'avatar' => $kfinfo['user_avatar'],
|
|
|
'client_id' => $client_id,
|
|
|
'task' => 0,
|
|
|
- 'signature'=>$kfinfo['signature'],
|
|
|
+ 'signature' => $kfinfo['signature'],
|
|
|
'status' => 2,// 1为在线(接收分配、接收消息)2为隐身(不接收分配、只接收消息)
|
|
|
'user_info' => []
|
|
|
];
|
|
|
@@ -568,6 +577,8 @@ class Events
|
|
|
$_SESSION['uid'] = $message['uid'];
|
|
|
$_SESSION['name'] = $message['name'];
|
|
|
|
|
|
+ self::writeLogKfStatus($message['uid'], 2);
|
|
|
+
|
|
|
// TODO 尝试拉取用户来服务 [二期规划]
|
|
|
|
|
|
}
|
|
|
@@ -712,6 +723,9 @@ class Events
|
|
|
|
|
|
do {
|
|
|
} while (!self::$global->cas('kfList', $kefuinfo_old, $kefuinfo_old_new));
|
|
|
+
|
|
|
+ self::writeLogKfStatus($uid, 0);
|
|
|
+
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -1509,6 +1523,24 @@ class Events
|
|
|
}
|
|
|
|
|
|
|
|
|
+ //客服在线状态写组
|
|
|
+ private static function writeLogKfStatus($kf, $status, $flag = 1)
|
|
|
+ {
|
|
|
+ if ($flag == 1) {
|
|
|
+ $status = intval($status);
|
|
|
+ if ($status == 0) {
|
|
|
+ self::$db->delete('ws_kfonline')->where("uid='$kf'")->query();
|
|
|
+ } else {
|
|
|
+ $now = date('Y-m-d H:i;s');
|
|
|
+ $sql = "insert into ws_kfonline(uid,status,uptime) values('$kf',$status,'$now') ON DUPLICATE KEY UPDATE status=$status,uptime='$now' ";
|
|
|
+ self::$db->query($sql);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ self::$db->query("delete from ws_kfonline ");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
//踢掉同一用户的旧用户
|
|
|
private static function tickOlduser($uid)
|
|
|
{
|