From 2d55d2cbf88bf0b4503ebc21f72faf290e25f809 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Tue, 9 Dec 2025 16:47:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=BF=E9=97=B4=E7=94=A8=E6=88=B7=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/controller/Room.php | 12 +---- application/api/model/Room.php | 77 ++++++++++++++++++++++++++++- application/api/model/RoomPit.php | 5 ++ application/api/model/RoomSong.php | 2 + 4 files changed, 84 insertions(+), 12 deletions(-) diff --git a/application/api/controller/Room.php b/application/api/controller/Room.php index 9dc15df4..9fc6be00 100644 --- a/application/api/controller/Room.php +++ b/application/api/controller/Room.php @@ -215,7 +215,7 @@ class Room extends BaseCom { $room_id = input('room_id', 0); $page = input('page', 1); - $limit = input('limit', 50); + $limit = input('limit', 15); $reslut = model('Room')->room_online_list($room_id, $page, $limit); return V($reslut['code'], $reslut['msg'], $reslut['data']); } @@ -425,16 +425,6 @@ class Room extends BaseCom } - //房间在线列表 - public function room_online_list_ceshi() - { - $room_id = input('room_id', 0); - $page = input('page', 1); - $limit = input('limit', 50); - $reslut = model('Room')->room_online_list($room_id, $page, $limit); - return V($reslut['code'], $reslut['msg'], $reslut['data']); - } - //房间用户当前魅力值列表 public function room_user_charm_list() { diff --git a/application/api/model/Room.php b/application/api/model/Room.php index 29b93177..3dd056bc 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -1290,6 +1290,7 @@ class Room extends Model $text['FromUserInfo'] = $FromUserInfo; $text['pit_number'] = ''; model('api/Chat')->sendMsg(1004,$room_id,$text); + db::name('vs_room_visitor')->where(['user_id' => $user_id,'room_id' => $room_id])->update(['is_onpit' => 1]); } }elseif ($apply_type == 3){ $roomInfoStep = db::name('vs_room')->where(['id' => $room_id])->value('step'); @@ -1624,7 +1625,7 @@ class Room extends Model //房间在线列表 - public function room_online_list($room_id, $page, $limit) + public function room_online_list1($room_id, $page, $limit) { if (!$room_id) { return ['code' => 0, 'msg' => '参数错误']; @@ -1798,6 +1799,80 @@ class Room extends Model } + //房间在线列表 + public function room_online_list($room_id, $page = 1, $limit = 15) + { + if (!$room_id) { + return ['code' => 0, 'msg' => '参数错误']; + } + + $roomType = db::name('vs_room')->where(['id' => $room_id])->field('type_id,label_id')->find(); + if (!$roomType) { + return ['code' => 0, 'msg' => '房间不存在']; + } + + $lists['on_pit'] = []; + $lists['off_pit'] = []; + $lists['count'] = db::name('vs_room_visitor')->where(['room_id' => $room_id])->count(); + $where = ['a.room_id' => $room_id]; + if ($page != 1) { + $where['a.is_onpit'] = 1;//不在麦位上的用户 + $where['b.hide_status'] = 0;//非隐身用户 + } + + $list = db::name('vs_room_visitor')->alias('a') + ->join('user b', 'a.user_id = b.id') + ->field('a.user_id,b.nickname,b.avatar,b.hide_status') + ->where($where) + ->page($page, $limit) + ->select(); + if ($list) { + foreach ($list as $v) { + $v['icon'][0] = model('UserData')->user_wealth_icon($v['user_id']);//财富图标 + $v['icon'][1] = model('UserData')->user_charm_icon($v['user_id']);//魅力图标 + //判断是否是歌手 如果是 返回等级图标 + $isSinnger = db::name('vs_singer')->where(['user_id' => $v['user_id'], 'status' => 1])->value('level'); + if ($isSinnger) { + $v['icon'][2] = db::name('vs_singer_level')->where(['level' => $isSinnger, 'deletetime' => 0])->value('image');//等级图标 + } + //用户的角色 + $role = $this->get_user_role($v['user_id'], $room_id); + $v['role'] = $role['role']; + $v['pit_number'] = $role['pit_number']; + + if ($page != 1) { + $lists['off_pit'][] = $v; + } else { + if ($v['is_onpit'] == 0) {//在麦位上的用户 + $lists['on_pit'][] = $v; + } else { + if($v['hide_status'] == 0){//非隐身用户 + $lists['off_pit'][] = $v; + } + } + } + } + } + if (!empty($lists['off_pit']) && is_array($lists['off_pit'])) { + usort($lists['off_pit'], function ($a, $b) { + if ($a['role'] == $b['role']) { + return 0; + } + return ($a['role'] < $b['role']) ? -1 : 1; + }); + } + if (!empty($lists['on_pit']) && is_array($lists['on_pit'])) { + usort($lists['on_pit'], function ($a, $b) { + if ($a['role'] == $b['role']) { + return 0; + } + return ($a['role'] < $b['role']) ? -1 : 1; + }); + } + return ['code' => 1, 'msg' => '成功', 'data' => $lists]; + } + + //用户在房间内的角色 public function get_user_role($user_id, $room_id) diff --git a/application/api/model/RoomPit.php b/application/api/model/RoomPit.php index 20578379..9df0d088 100644 --- a/application/api/model/RoomPit.php +++ b/application/api/model/RoomPit.php @@ -105,6 +105,7 @@ class RoomPit extends Model $text['pit_number'] = $pit_number; //聊天室推送系统消息 model('Chat')->sendMsg(1003,$room_id,$text); + db::name('vs_room_visitor')->where(['user_id' => $user_id,'room_id' => $room_id])->update(['is_onpit' => 0]); //查看此房间是否处于pk中 $is_pk = db::name('vs_room_pk')->where(['room_id_a' => $room_id])->where(['status' => ['in',[2,3,4]]])->value('room_id_b') ?? 0; @@ -260,6 +261,7 @@ class RoomPit extends Model model('Chat')->sendMsg(1022,$room_id,$text); }else{ model('Chat')->sendMsg(1004,$room_id,$text); + db::name('vs_room_visitor')->where(['user_id' => $user_id,'room_id' => $room_id])->update(['is_onpit' => 1]); //查看此房间是否处于pk中 $is_pk = db::name('vs_room_pk')->where(['room_id_a' => $room_id])->where(['status' => ['in',[2,3,4]]])->value('room_id_b') ?? 0; if(!$is_pk){ @@ -752,6 +754,7 @@ class RoomPit extends Model $text['FromUserInfo'] = $FromUserInfo; $text['pit_number'] = 9999; model('Chat')->sendMsg(1003,$room_id,$text); + db::name('vs_room_visitor')->where(['user_id' => $value,'room_id' => $room_id])->update(['is_onpit' => 0]); //1-禁麦位,2-清空消息,3-清空魅力值,4-加入黑名单,5-踢出房间,6-关闭麦克风,7-申请上麦,8-同意上麦,9-拒绝上麦,10-点歌,11-开启PK', model('Room')->room_operation_record($user_id,$room_id,8,$value); } @@ -883,6 +886,7 @@ class RoomPit extends Model $text['pit_number'] = 1; //聊天室推送系统消息 model('Chat')->sendMsg(1003,$room_id,$text); + db::name('vs_room_visitor')->where(['user_id' => $uid,'room_id' => $room_id])->update(['is_onpit' => 0]); //删除他的申请上麦 db::name('vs_room_pit_apply')->where(['user_id' => $uid, 'room_id' => $room_id, 'status' => 0])->delete(); @@ -1136,6 +1140,7 @@ class RoomPit extends Model $text['pit_number'] = $pit_number; //聊天室推送系统消息 model('Chat')->sendMsg(1003,$room_id,$text); + db::name('vs_room_visitor')->where(['user_id' => $accept_user_id,'room_id' => $room_id])->update(['is_onpit' => 0]); //查找当前用户是否有申请上麦 有就删掉 $is_apply_pit = db::name('vs_room_pit_apply')->where(['room_id' => $room_id, 'user_id' => $accept_user_id])->find(); diff --git a/application/api/model/RoomSong.php b/application/api/model/RoomSong.php index cb83c8e4..82b686b0 100644 --- a/application/api/model/RoomSong.php +++ b/application/api/model/RoomSong.php @@ -559,6 +559,7 @@ class RoomSong extends Model } //聊天室推送系统消息 model('Chat')->sendMsg(1003,$room_id,$text); + db::name('vs_room_visitor')->where(['user_id' => $user_id,'room_id' => $room_id])->update(['is_onpit' => 0]); return ['code' => 1, 'msg' => '上麦成功', 'data' => null]; }else{ //检查用户是否已经申请 @@ -618,6 +619,7 @@ class RoomSong extends Model $text['FromUserInfo'] = $FromUserInfo; $text['pit_number'] = ''; model('Chat')->sendMsg(1004,$room_id,$text); + db::name('vs_room_visitor')->where(['user_id' => $user_id,'room_id' => $room_id])->update(['is_onpit' => 1]); return ['code' => 1, 'msg' => '下麦成功', 'data' => null]; } }