diff --git a/application/api/model/Room.php b/application/api/model/Room.php index b19216c0..c0950bc9 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -1844,56 +1844,44 @@ class Room extends Model } unset($v); // 释放引用 $lists['on_pit'] = $onPitUser; - $onPitUserIds = array_column($lists['on_pit'], 'user_id'); } } - // 计算麦上用户数量 - $onPitCount = count($lists['on_pit']); - // 获取麦下用户(非隐身用户) if ($page == 1) { - // 第一页:需要的麦下用户数量 = limit - 麦上用户数量 - $needOffPitCount = $limit - $onPitCount; - if ($needOffPitCount > 0) { - $offPitUser = db::name('vs_room_visitor')->alias('a') - ->join('user b', 'a.user_id = b.id','left') - ->field('a.user_id,b.nickname,b.avatar,b.hide_status,a.is_onpit') - ->where(['a.room_id' => $room_id,'b.hide_status' => 0,'a.is_onpit' => 1,'a.user_id' => ['not in', empty($onPitUserIds) ? [0] : $onPitUserIds]]) // 非隐身且未上麦 - ->limit(0, $needOffPitCount) - ->order('a.id', 'desc') - ->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']; - } - unset($v); // 释放引用 - $lists['off_pit'] = $offPitUser; - } - } - } else { - // 第二页及以后:只显示麦下用户 - $offset = ($page - 1) * $limit; - // 确保偏移量不会为负数 - $offset = max(0, $offset); - $offPitUser = db::name('vs_room_visitor')->alias('a') ->join('user b', 'a.user_id = b.id','left') ->field('a.user_id,b.nickname,b.avatar,b.hide_status,a.is_onpit') - ->where(['a.room_id' => $room_id,'b.hide_status' => 0,'a.is_onpit' => 1,'a.user_id' => ['not in', empty($onPitUserIds) ? [0] : $onPitUserIds]]) // 非隐身且未上麦 - ->limit($offset, $limit) + ->where(['a.room_id' => $room_id,'b.hide_status' => 0,'a.is_onpit' => 1]) // 非隐身且未上麦 + ->page($page, $limit) + ->order('a.id', 'desc') + ->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']; + } + unset($v); // 释放引用 + $lists['off_pit'] = $offPitUser; + } + + } else { + $offPitUser = db::name('vs_room_visitor')->alias('a') + ->join('user b', 'a.user_id = b.id','left') + ->field('a.user_id,b.nickname,b.avatar,b.hide_status,a.is_onpit') + ->where(['a.room_id' => $room_id,'b.hide_status' => 0,'a.is_onpit' => 1]) // 非隐身且未上麦 + ->page($page, $limit) ->order('a.id', 'desc') ->select();