重连后房间处理

This commit is contained in:
2025-09-28 15:48:36 +08:00
parent 3d66a47226
commit 770c9a0fb8
4 changed files with 64 additions and 12 deletions

View File

@@ -451,4 +451,13 @@ class Room extends BaseCom
$reslut = model('Room')->user_reconnect($this->uid, $room_id); $reslut = model('Room')->user_reconnect($this->uid, $room_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']); return V($reslut['code'], $reslut['msg'], $reslut['data']);
} }
//用户在房间内切后台保留机制
public function user_in_room_background()
{
$room_id = input('room_id', 0);
$type = input('type', 1);//1-切后台2-切前台
$reslut = model('Room')->user_in_room_background($this->uid, $room_id,$type);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
} }

View File

@@ -2548,4 +2548,36 @@ class Room extends Model
} }
return ['code' => 1, 'msg' => '操作成功', 'data' => null]; return ['code' => 1, 'msg' => '操作成功', 'data' => null];
} }
public function user_in_room_background($user_id,$room_id,$type)
{
if(!$room_id){
return ['code' => 0, 'msg' => '参数错误', 'data' => null];
}
if($type == 1){//1-切后台2-切前台
$is_bg = db::name('vs_user_in_room_bg')->where(['user_id' => $user_id,'room_id' => $room_id])->find();
if($is_bg){
$up_bg = [
'updatetime' => time(),
];
db::name('vs_user_in_room_bg')->where('id',$is_bg['id'])->update($up_bg);
}else{
$data = [
'user_id' => $user_id,
'room_id' => $room_id,
'createtime' => time(),
'updatetime' => time(),
];
$room_background = db::name('vs_user_in_room_bg')->insert($data);
if(!$room_background){
return ['code' => 0, 'msg' => '操作失败', 'data' => null];
}
}
}else{
db::name('vs_user_in_room_bg')->where(['user_id' => $user_id,'room_id' => $room_id])->delete();
}
return ['code' => 1, 'msg' => '操作成功', 'data' => null];
}
} }

View File

@@ -932,10 +932,14 @@ class Tencent extends Model
$text['type'] = 2; $text['type'] = 2;
model('Chat')->sendMsg(1058,$v['room_id'],$text); model('Chat')->sendMsg(1058,$v['room_id'],$text);
}else{ }else{
//查询是否有切后台的操作
$bg_room = db::name('vs_user_in_room_bg')->where(['room_id' => $v['room_id'],'user_id' => $v['user_id']])->find();
if(!$bg_room){
model('Room')->quit_room($v['user_id'], $v['room_id'],$v['user_id'],2); model('Room')->quit_room($v['user_id'], $v['room_id'],$v['user_id'],2);
} }
} }
} }
}
} elseif ($action == 'Login') { } elseif ($action == 'Login') {
Db::name('user')->where('id', $uid)->update(['is_online' => 1, 'updatetime' => time()]); Db::name('user')->where('id', $uid)->update(['is_online' => 1, 'updatetime' => time()]);

View File

@@ -18,9 +18,14 @@ class TenSeconds
echo "房间在线人数:\n"; echo "房间在线人数:\n";
$this->auction_end_notice();//拍卖房结束提醒 $this->auction_end_notice();//拍卖房结束提醒
echo "\n"; echo "\n";
//清理切后台超过5分钟的用户
echo "清理切后台超过5分钟的用户\n";
$this->clear_offline_user();
echo "\n";
} }
//在线人数
protected function auction_end_notice() protected function auction_end_notice()
{ {
$auction_list = db::name('vs_room')->field('id')->where(['room_status'=>1,'apply_status' => 2,'type_id' =>['<>',6]])->select(); $auction_list = db::name('vs_room')->field('id')->where(['room_status'=>1,'apply_status' => 2,'type_id' =>['<>',6]])->select();
@@ -40,17 +45,6 @@ class TenSeconds
$data_number++; $data_number++;
} }
} }
// else{
// if($on_pit_num > 0){
// $text = [
// 'online_number' => $on_pit_num,
// 'room_id' => $value['id'],//接受房间id
// ];
// model('api/Chat')->sendMsg(1036,$value['id'],$text);
// $data_number++;
// }
// }
$data_count++; $data_count++;
} }
} }
@@ -58,4 +52,17 @@ class TenSeconds
echo "房间在线人数>0 的总共" . $data_number . "条数据\n"; echo "房间在线人数>0 的总共" . $data_number . "条数据\n";
} }
//清理切后台超过5分钟的用户
protected function clear_offline_user()
{
$time = time() - 300;
$user_list = db::name('vs_user_in_room_bg')->field('id')->where('updatetime', '<=', $time)->select();
if($user_list){
foreach ($user_list as &$value){
//删除
db::name('vs_user_in_room_bg')->delete($value['id']);
}
}
}
} }