|
|
@@ -5,6 +5,7 @@ namespace app\admin\model;
|
|
|
use app\BaseModel;
|
|
|
use think\model\concern\SoftDelete;
|
|
|
use thans\jwt\facade\JWTAuth;
|
|
|
+use app\enterprise\model\{Message,Friend};
|
|
|
|
|
|
class User extends BaseModel
|
|
|
{
|
|
|
@@ -76,4 +77,45 @@ class User extends BaseModel
|
|
|
]);
|
|
|
}
|
|
|
|
|
|
+ //客服离线后自动结束所有客服会话
|
|
|
+ public static function KefuOffline($kefu_user_id, $admin_id) {
|
|
|
+
|
|
|
+ wsSendMsg(0,'isOnline',['id'=>$kefu_user_id,'is_online'=>0]);
|
|
|
+ //更新客服状态
|
|
|
+ User::where('user_id', $kefu_user_id)->update(['is_online'=>0, 'offline_time'=>time(), 'is_finished' => 1, 'chat_num' => 0]);
|
|
|
+ //更新客服接线的用户
|
|
|
+ $cs_uid = getAutoCsUid();
|
|
|
+
|
|
|
+ $list = User::where('cs_uid', $kefu_user_id)->select()->toArray();
|
|
|
+ foreach($list as $item) {
|
|
|
+ //更新用户会话状态
|
|
|
+ User::where('user_id', $item['user_id'])->update(['cs_uid' => $cs_uid, 'service_status' => 0, 'service_start' => time()]);
|
|
|
+
|
|
|
+ $user_id = $item['user_id'];
|
|
|
+ $old_cs_uid = $item['cs_uid'];
|
|
|
+
|
|
|
+ $friend = Friend::where('create_user', $user_id)->order('create_time', 'desc')->find();
|
|
|
+ if ($friend) {
|
|
|
+ $friend->friend_user_id = $cs_uid;
|
|
|
+ $friend->save();
|
|
|
+
|
|
|
+ $chat_identify = $cs_uid . '-' . $user_id;
|
|
|
+ Message::where(['from_user' => $user_id, 'to_user' => $old_cs_uid])->update(['to_user' => $cs_uid, 'chat_identify' => $chat_identify, 'is_read' => 1]);
|
|
|
+ Message::where(['from_user' => $old_cs_uid, 'to_user' => $user_id])->update(['from_user' => $cs_uid, 'chat_identify' => $chat_identify, 'is_read' => 1]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //结束客服忙碌时间
|
|
|
+ KefuTime::endData($admin_id, 1);
|
|
|
+ //结束客服在线时间
|
|
|
+ KefuTime::endData($admin_id, 2);
|
|
|
+
|
|
|
+ //结束客服接线时间
|
|
|
+ KefuTime::endData($admin_id, 3, $kefu_user_id);
|
|
|
+ //结束客服服务时间
|
|
|
+ KefuTime::endData($admin_id, 4);
|
|
|
+
|
|
|
+ //通知客服已结束
|
|
|
+ wsSendMsg(0,'handleChat',['user_id'=>0]);
|
|
|
+ }
|
|
|
+
|
|
|
}
|