From 3fbb4043c768982fd0b44015482066dc259edc49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Thu, 11 Sep 2025 17:08:47 +0800 Subject: [PATCH] =?UTF-8?q?=E8=85=BE=E8=AE=AF=E5=9C=A8=E7=A6=BB=E7=BA=BF?= =?UTF-8?q?=20=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/Room.php | 134 +++++++++++++++--------------- application/api/model/Tencent.php | 14 ++-- 2 files changed, 76 insertions(+), 72 deletions(-) diff --git a/application/api/model/Room.php b/application/api/model/Room.php index 1f52c86..68ee3c9 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -1315,82 +1315,82 @@ class Room extends Model return ['code' => 0, 'msg' => '房间不存在', 'data' => null]; } - //获取在房间的用户 -// $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]); // } - 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]; - } +// } +// }else{ +// $lists = ['on_pit' => [], 'off_pit' => []]; +// return ['code' => 1, 'msg' => '成功', 'data' => $lists]; +// } $list = db::name('vs_room_visitor')->alias('a') ->join('user b', 'a.user_id = b.id') ->field('a.user_id,b.nickname,b.avatar') - ->where(['a.room_id' => $room_id,'on_line' => 1]) + ->where(['a.room_id' => $room_id,'b.is_online' => 1]) ->order('a.id asc') ->page($page, $limit) ->select(); diff --git a/application/api/model/Tencent.php b/application/api/model/Tencent.php index 416c98d..d3deb5e 100644 --- a/application/api/model/Tencent.php +++ b/application/api/model/Tencent.php @@ -919,11 +919,15 @@ class Tencent extends Model if($quit_room) { foreach ($quit_room as &$v){ - $text['text'] = '杀进程!'; - $text['user_id'] = $uid; - $text['type'] = 0; - model('Chat')->sendMsg(1058,$v['room_id'],$text); - model('Room')->quit_room($v['user_id'], $v['room_id'],$v['user_id']); + $room_type = db::name('vs_room')->where(['id' => $v['room_id'],'room_status' => 1])->field('step,type_id')->find(); + if(($room_type['type_id'] == 7 && ($room_type['step'] == 2 ||$room_type['step'] == 3)) || $room_type == 2){ + $text['text'] = '掉线!'; + $text['user_id'] = $uid; + $text['type'] = 2; + model('Chat')->sendMsg(1058,$v['room_id'],$text); + }else{ + model('Room')->quit_room($v['user_id'], $v['room_id'],$v['user_id'],1); + } } }