在离线

This commit is contained in:
2025-12-02 19:08:07 +08:00
parent 6f9d80c744
commit c4b03097bf
2 changed files with 41 additions and 44 deletions

View File

@@ -10,20 +10,21 @@ use app\common\controller\BaseCom;
class Xintiao extends BaseCom
{
public function keep_xintiao()
//房间内保持心跳
public function keep_room_heartbeat()
{
$room_id = input('room_id');
$user_id = $this->uid;
$is_xintiao = db::name('vs_xintiao')->where('user_id' , $user_id)->find();
$is_xintiao = db::name('vs_room_heartbeat')->where(['user_id' => $user_id, 'room_id' => $room_id])->find();
if($is_xintiao){
db::name('vs_xintiao')->where('user_id' , $user_id)->update(['updatetime' => time()]);
db::name('vs_room_heartbeat')->where('user_id' , $user_id)->update(['updatetime' => time()]);
}else{
db::name('vs_xintiao')->insert([
db::name('vs_room_heartbeat')->insert([
'user_id' => $user_id,
'createtime' => time(),
'updatetime' => time()
]);
]);
}
return V(1, '成功', null);
}
@@ -33,7 +34,4 @@ class Xintiao extends BaseCom
}

View File

@@ -25,57 +25,56 @@ class RoomPan
$this->blind_box_turntable_gift_send();//盲盒转盘礼物补发
echo "盲盒转盘礼物补发结束 \n";
echo "查询用户在线状态\n";
$this->online_status();
echo "查询用户是否在房间内保持心跳\n";
$this->keep_room_heartbeat();
echo "\n";
}
//查询在线状态
protected function online_status()
{
$user_list = db::name('vs_xintiao')->select();
/*
* 查询用户是否在房间内保持心跳
*/
public function keep_room_heartbeat(){
$user_list = db::name('vs_room_heartbeat')->select();
if($user_list){
foreach ($user_list as $value){
if(time() - $value['updatetime'] >= 180){//三分钟没有上线
$is_online = db::name('user')->where('id',$value['user_id'])->value('is_online');
if($is_online == 2){
//在线
continue;
}
//断线
db::name('user')->where('id',$value['user_id'])->update(['is_online'=>2]);
//是否在房间内
$room_id = db::name('vs_room_visitor')->where('user_id',$value['user_id'])->order('id desc')->value('room_id');
if($room_id){
$text['text'] = '掉线!';
$text['user_id'] = $value['user_id'];
$text['type'] = 2;
model('api/Chat')->sendMsg(1058,$room_id,$text);
}
}else{
$is_online = db::name('user')->where('id',$value['user_id'])->value('is_online');
if($is_online == 1){
//在线
continue;
$is_online = db::name('vs_room_visitor')
->where(['user_id' => $value['user_id'],'room_id' => $value['room_id']])
->order('id desc')
->field('id,is_online,room_id')
->find();
if($is_online){//现在 在房间内
if(time() - $value['updatetime'] >= 180){//三分钟没有心跳
if($is_online['is_online'] == 2){//之前就是离开
continue;
}else{//之前就是在线则改为离开
db::name('vs_room_visitor')->where('id',$is_online['id'])->update(['is_online'=>2]);
$text['text'] = '离开';
$text['user_id'] = $value['user_id'];
$text['type'] = 2;
model('api/Chat')->sendMsg(1058,$is_online['room_id'],$text);
}
}else{
//修改在线状态
db::name('user')->where('id',$value['user_id'])->update(['is_online'=>1]);
//是否在房间内
$room_id = db::name('vs_room_visitor')->where('user_id',$value['user_id'])->order('id desc')->value('room_id');
if($room_id){
$text['text'] = '重新上线!';
if($is_online['is_online'] == 1){//之前就是在线
continue;
}else{//之前就是离开则改为在线
db::name('vs_room_visitor')->where('id',$is_online['id'])->update(['is_online'=>1]);
$text['text'] = '回到房间';
$text['user_id'] = $value['user_id'];
$text['type'] = 1;
model('api/Chat')->sendMsg(1058,$room_id,$text);
model('api/Chat')->sendMsg(1058,$is_online['room_id'],$text);
}
}
}else{
//删掉
db::name('vs_room_heartbeat')->where('id',$value['id'])->delete();
}
}
}
}
/*
* 盲盒转盘礼物推送补发
*/