Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
2025-08-29 18:00:17 +08:00

View File

@@ -1303,75 +1303,75 @@ class Room extends Model
}
//获取在房间的用户
$in_room_users = db::name('vs_room_visitor')->where(['room_id' => $room_id])->field('user_id')->select();
if($in_room_users){
foreach ($in_room_users as $v){
$userss = db::name('user')->where(['id' => $v['user_id']])->field('is_online,is_robot')->find();
if($userss['is_online'] == 1 && $userss['is_robot'] == 1){//在线或者机器人都设置为在线
db::name('vs_room_visitor')->where(['id' => $v['id']])->update(['on_line' => 1]);
}else{
db::name('vs_room_visitor')->where(['id' => $v['id']])->update(['on_line' => 0]);
// $in_room_users = db::name('vs_room_visitor')->where(['room_id' => $room_id])->field('user_id')->select();
// if($in_room_users){
// foreach ($in_room_users as $v){
// $userss = db::name('user')->where(['id' => $v['user_id']])->field('is_online,is_robot')->find();
// if($userss['is_online'] == 1 && $userss['is_robot'] == 1){//在线或者机器人都设置为在线
// db::name('vs_room_visitor')->where(['id' => $v['id']])->update(['on_line' => 1]);
// }else{
// db::name('vs_room_visitor')->where(['id' => $v['id']])->update(['on_line' => 0]);
// }
// }
// }
//查找数据库用户
$dblist = db::name('vs_room_visitor')->where(['room_id' => $room_id])->field('user_id')->select();
//循环获取在线用户ID 拼接数据
$user_id_array = [];
//机器人user_id
$robot_user_id = [];
foreach ($dblist as $v) {
//机器人
if(db::name('user')->where(['id' => $v['user_id']])->value('is_robot')){
$robot_user_id[] = $v['user_id'];
continue;
}
$user_id_array[] = 'u'.$v['user_id'];
}
//获取腾讯的在线用户
$online_users = model('Tencent')->query_user_online_status($user_id_array);
$online_user = [];
if(isset($online_users['ActionStatus']) && $online_users['ActionStatus'] == 'OK'){
if($online_users['QueryResult']){
foreach ($online_users['QueryResult'] as $v){
if($v['Status'] == "Online"){
//截取用户ID前面的 u 并获取用户ID
$user_id = substr($v['To_Account'],1);
$online_user[] = $user_id;
}
}
}
}
// //查找数据库用户
// $dblist = db::name('vs_room_visitor')->where(['room_id' => $room_id])->field('user_id')->select();
// //循环获取在线用户ID 拼接数据
// $user_id_array = [];
// //机器人user_id
// $robot_user_id = [];
// foreach ($dblist as $v) {
// //机器人
// if(db::name('user')->where(['id' => $v['user_id']])->value('is_robot')){
// $robot_user_id[] = $v['user_id'];
// continue;
// }
// $user_id_array[] = 'u'.$v['user_id'];
// }
// //获取腾讯的在线用户
// $online_users = model('Tencent')->query_user_online_status($user_id_array);
// $online_user = [];
// if(isset($online_users['ActionStatus']) && $online_users['ActionStatus'] == 'OK'){
// if($online_users['QueryResult']){
// foreach ($online_users['QueryResult'] as $v){
// if($v['Status'] == "Online"){
// //截取用户ID前面的 u 并获取用户ID
// $user_id = substr($v['To_Account'],1);
// $online_user[] = $user_id;
// }
if($dblist){
$onpit = db::name('vs_room_pit')->field('user_id')->where(['room_id' => $room_id])->select();
//合并数组
$array = array_merge($online_user,$robot_user_id);
// $array = $online_user;
$arraypit = array_values((array)$onpit);
foreach ($dblist as &$v){
// if(in_array($v['user_id'],$arraypit)){
// //跳过本次循环
// continue;
// }
// }
// }
//
// if($dblist){
// $onpit = db::name('vs_room_pit')->field('user_id')->where(['room_id' => $room_id])->select();
// //合并数组
// $array = array_merge($online_user,$robot_user_id);
//// $array = $online_user;
// $arraypit = array_values((array)$onpit);
// foreach ($dblist as &$v){
//// if(in_array($v['user_id'],$arraypit)){
//// //跳过本次循环
//// continue;
//// }
// if(!in_array($v['user_id'],$array)){
// //修改他的状态
// db::name('vs_room_visitor')->where(['user_id' => $v['user_id'],'room_id'=>$room_id])->update(['on_line' => 0]);
// //查询他是否在其他房间
// $room_id_list = db::name('vs_room_visitor')->where(['user_id' => $v['user_id'],'room_id'=>['neq',$room_id]])->find();
// if($room_id_list){
// db::name('vs_room_visitor')->where(['user_id' => $v['user_id']])->delete();
// }
// }else{
// //修改他的状态
// db::name('vs_room_visitor')->where(['user_id' => $v['user_id'],'room_id'=>$room_id])->update(['on_line' => 1]);
// }
// }
// }else{
// $lists = ['on_pit' => [], 'off_pit' => []];
// return ['code' => 1, 'msg' => '成功', 'data' => $lists];
// }
if(!in_array($v['user_id'],$array)){
//修改他的状态
db::name('vs_room_visitor')->where(['user_id' => $v['user_id'],'room_id'=>$room_id])->update(['on_line' => 0]);
//查询他是否在其他房间
$room_id_list = db::name('vs_room_visitor')->where(['user_id' => $v['user_id'],'room_id'=>['neq',$room_id]])->find();
if($room_id_list){
db::name('vs_room_visitor')->where(['user_id' => $v['user_id']])->delete();
}
}else{
//修改他的状态
db::name('vs_room_visitor')->where(['user_id' => $v['user_id'],'room_id'=>$room_id])->update(['on_line' => 1]);
}
}
}else{
$lists = ['on_pit' => [], 'off_pit' => []];
return ['code' => 1, 'msg' => '成功', 'data' => $lists];
}
$list = db::name('vs_room_visitor')->alias('a')