From e967900ce05a22cbcb26db9fdff28884d168e6f2 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 18:26:22 +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/model/Room.php | 85 ++++++++++++++++++++-------------- 1 file changed, 51 insertions(+), 34 deletions(-) diff --git a/application/api/model/Room.php b/application/api/model/Room.php index cc784b5b..32b62207 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -1808,47 +1808,63 @@ class Room extends Model $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]; + $count = 0; - $list = db::name('vs_room_visitor')->alias('a') + $lists['count'] = db::name('vs_room_visitor')->alias('a') ->join('user b', 'a.user_id = b.id','left') - ->field('a.id,a.user_id,b.nickname,b.avatar,b.hide_status,a.is_onpit') - ->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']; + ->where(['a.room_id' => $room_id,'b.hide_status'=>0]) + ->count(); - if ($page != 1) { -// $lists['off_pit'][] = $v; - if ($v['is_onpit'] == 1) {//bu在麦位上的用户 - if($v['hide_status'] == 0){//非隐身用户 - $lists['off_pit'][] = $v; - } - } - } else { - if ($v['is_onpit'] == 1) {//bu在麦位上的用户 - if($v['hide_status'] == 0){//非隐身用户 - $lists['off_pit'][] = $v; - } - } else { - $lists['on_pit'][] = $v; + if ($page == 1) { + $onPitUser = 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,a.is_onpit') + ->where(['a.room_id' => $room_id,'a.is_onpit' => 0]) + ->select(); + if(!empty($onPitUser)){ + foreach ($onPitUser 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']; } + $lists['on_pit'] = $onPitUser; } } + + $pg = $limit - count($lists['on_pit']); + if($pg > 0){ + $offPitUser = 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,a.is_onpit') + ->where(['a.room_id' => $room_id,'b.hide_status' => 0]) + ->page($page, $pg) + ->select(); + if(!empty($offPitUser)){ + foreach ($offPitUser 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']; + } + $lists['off_pit'] = $offPitUser; + } + } + if (!empty($lists['off_pit']) && is_array($lists['off_pit'])) { usort($lists['off_pit'], function ($a, $b) { if ($a['role'] == $b['role']) { @@ -1865,6 +1881,7 @@ class Room extends Model return ($a['role'] < $b['role']) ? -1 : 1; }); } + $lists['count'] = $lists['count'] - $count; return ['code' => 1, 'msg' => '成功', 'data' => $lists]; }