房间用户列表

This commit is contained in:
2025-12-09 16:47:58 +08:00
parent 1ca65ed7ba
commit 2d55d2cbf8
4 changed files with 84 additions and 12 deletions

View File

@@ -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)