room_info信息

This commit is contained in:
2025-12-30 17:53:29 +08:00
parent b47dc76429
commit fd2809c1a8

View File

@@ -3160,6 +3160,216 @@ class Room extends Model
}
//房间信息
public function room_infos($user_id, $room_id)
{
//房间基础信息先从缓存获取
$room = json_decode(Cache::get('room_info_' . $room_id), true);
if(!$room){
$room = db::name('vs_room')->where(['id' => $room_id])->find();
$room['is_use_code'] = 0;
$liang = model('api/Decorate')->user_decorate_detail($room_id,7);
if($liang != $room['room_number']){
$room['is_use_code'] = 1;
$room['room_number'] = $liang;
}
Cache::set('room_info_' . $room_id, json_encode($room), 7200);
}
//房主信息
//先从缓存中获取
$room_owner = json_decode(Cache::get('room_owner_' . $room_id),true);
if(!$room_owner){
$room_owner = db::name('user')->where('id', $room['user_id'])->field('id as user_id,user_code,sex,nickname,avatar')->find();
$room_owner['user_code'] = model('api/Decorate')->user_decorate_detail($room['user_id'],6);
Cache::set('room_owner_' . $room_id, json_encode($room_owner), 7200);
}
$room_type = $this->get_room_type($room_id);
if($room_type == 0){
return ['code' => 0, 'msg' => '当前房间类型错误,请联系管理员', 'data' => ''];
}
//给前端定义返回的数据
$room_owner = null;//房间拥有者信息
$cp_users = null;//CP用户信息
$friend = null;//交友信息
$singer_info = null;//点唱房内的演唱信息
$sign_info = null;//签约信息
//K歌模式下获取歌曲信息
$song_pit_list = null;
$song_list = null;
$next_song_info = null;
//拍卖模式下获取当前竞拍信息
$roomauction = null;
$xlh_info['xlh_info'] = model('api/BlindBoxTurntableGift')->get_user_xlh_info($room_id);
$pk_info = $this->room_pk($room_id,$room_type);
$user_pit = 0;
$pit_list = [];
switch ($room_type) {
case 1:
$pit_list = $this->room_pit($room_id);
$user_pit = db::name('vs_room_pit')->where(['room_id' => $room_id,'user_id' => $user_id])->find();
break;
case 2://练歌房(声网点歌)
$song = $this->get_song_info($room_id,$user_id);
$song_pit_list = $song['song_pit_list'];
$song_list = $song['song_user_info'];
$next_song_info = $song['nextInfo'];
$user_pit = $song['user_pit'];
$pit_list = $song['pit_list'];
break;
case 4:
case 3://亲密拍,真爱拍
$roomauction = $this->auction_room($room_id,$user_id);
$pit_list = $roomauction['pit_list'];
$user_pit = $roomauction['user_pit'];
break;
case 6://私密房
$cp_users = $this->cp_room($room_id,$user_id);
$room_name = '';
if($cp_users['user_id'] == $user_id){
$room_name = db::name('user')->where('id', $cp_users['user_id1'])->value('nickname');
}
if($cp_users['user_id1'] == $user_id){
$room_name = db::name('user')->where('id', $cp_users['user_id'])->value('nickname');
}
$room['room_name'] = '我 ❤️ '.$room_name;
break;
case 7://互娱房
$friend = $this->getRoomFriendData($room_id);
//交友状态 交友进行到第几步 1等待邂逅 2心动连线 3牵手良缘
$friend['step'] = db::name('vs_room')->where('id', $room_id)->value('step');
$pit_list = $this->room_pit($room_id);
$user_pit = db::name('vs_room_pit')->where(['room_id' => $room_id,'user_id' => $user_id])->find();
break;
case 9://点唱房内的演唱信息
$singer_info = $this->getSingInfo($room_id);
$pit_list = $this->room_pit($room_id);
$user_pit = db::name('vs_room_pit')->where(['room_id' => $room_id,'user_id' => $user_id])->find();
break;
case 10://签约房间信息
$room_sign = db::name('vs_room_sign')->where('room_id', $room_id)->order('id desc')->find();
if($room_sign){
$sign_info = [
'sign_id' => $room_sign['id'],
'sign_status' => $room_sign['sign_type'],
'sign_day' => $room_sign['sign_day'],
'current_body_value' => db::name('user')->where('id', $room_sign['sign_user_id'])->value('market_value'),
'end_time' => $room_sign['end_time']
];
}else{
$sign_info = [
'sign_id' => 0,
'sign_status' => 0,
'sign_day' => 0,
'current_body_value' => 0,
'end_time' => 0
];
}
$pit_list = $this->room_pit($room_id);
$user_pit = db::name('vs_room_pit')->where(['room_id' => $room_id,'user_id' => $user_id])->find();
break;
}
//头条
$headline = db::name('vs_headline')->where('end_time' , '>', time())->where('is_now', 1)->find();
$headline_data = null;
if($headline){
$headline_data = $headline;
$headline_data['nickname'] = db::name('user')->where('id', $headline['user_id'])->value('nickname');
$headline_data['avatar'] = db::name('user')->where('id', $headline['user_id'])->value('avatar');
}
if($room['label_id'] == 3){
$label_id = 2;
}elseif ($room['label_id'] == 4){
$label_id = 1;
}else{
$label_id = $room['label_id'];
}
//上次的PK参数
if($room['last_pk_room_id'] > 0){
$last_pk_room_id = $room['last_pk_room_id'];
}else{
$last_pk_info = db::name('vs_room_pk')->where(['room_id_a' => $room_id])->order('pk_id', 'desc')->find();
if($last_pk_info){
$last_pk_room_id = $last_pk_info['room_id_b'];
}else{
$last_pk_info1 = db::name('vs_room_pk')->where(['room_id_b' => $room_id])->order('pk_id', 'desc')->find();
if($last_pk_info1){
$last_pk_room_id = $last_pk_info1['room_id_a'];
}else{
$last_pk_room_id = 0;
}
}
}
//房间信息
$room_info = [
'room_id' => $room['id'],
'is_use_code' => $room['is_use_code'],
'room_number' => $room['room_number'],
'room_name' => $room['room_name'],
'room_cover' => $room['room_cover'],
'room_intro' => $room['room_intro'],
'type_id' => $room['type_id'],
'type_name' => db::name('vs_room_type')->where('id', $room['type_id'])->value('type_name'),
'user_id' => $room['user_id'],
'label_id' => $label_id,
'label_icon' => db::name('vs_room_label')->where('id', $room['label_id'])->value('label_icon_room'),
'room_background' => $room['room_background'],
'hot_value' => $room['today_hot_value'],
'chatrooms' => 'room'.$room['id'],
'pit_list' => $pit_list,
'room_up_pit_type'=>$room['room_up_pit_type'],
//正在演唱的歌曲用户信息
'song_user_info' => $song_list,
'online_number' => db::name('vs_room_visitor')->where(['room_id' => $room['id'],'is_online'=>1])->count(),
'head_line'=>$headline_data,
'is_pk' => $room['is_pk'],//1-默认接受PK2不接受',
'last_pk_room_id' => $last_pk_room_id,
'queue_number' => db::name('vs_room_pit_apply')->where(['room_id' => $room_id,'status' => 0])->count()
];
//当前用户信息
$user_info = $this ->get_user_info($room_id,$user_id,$user_pit);
$user_info['is_room_owner'] = ($user_id == $room['user_id']) ? 1 : 0;
$open_time = db::name('vs_hour_ranking_config')->order('id', 'desc')->value('open_time');
if($open_time > 0){
if($open_time <= time()){
$hour_open = 1;//开启
}else{
$hour_open = 0;//关闭
}
}else{
$hour_open = 0;//关闭
}
return ['code' => 1,
'msg' => '成功',
'data' => ['room_info' => $room_info,
'room_owner' => $room_owner,
'user_info' => $user_info,
'song_user_info' => $song_list,
'nextInfo' => $next_song_info,
'room_auction'=>$roomauction,
'cp_user'=>$cp_users,
'pk_info'=>$pk_info,
'song_pit_list'=>$song_pit_list,
'friend_info' => $friend,
'gift_cycle' => $xlh_info,
'hour_ranking_open' => $hour_open,
'singer_info' => $singer_info,
'sign_info' => $sign_info
]
];
}
public function getSingInfo($room_id)
{
$song_info = db::name('vs_song_log')->where(['room_id' => $room_id,'status' => 1])->find();