From 71f24f26c898e43031fa802a5d3c562df0da3b9a 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, 6 Jan 2026 19:13:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E5=85=A5=E6=88=BF=E9=97=B4=20?= =?UTF-8?q?=E5=92=8Croom=5Finfo=20lit=5Flist=E9=87=8C=E9=9D=A2=E5=8A=A0end?= =?UTF-8?q?=5Ftime?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/Room.php | 718 ++++++++++----------------------- 1 file changed, 219 insertions(+), 499 deletions(-) diff --git a/application/api/model/Room.php b/application/api/model/Room.php index 20f40303..13a16112 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -1193,6 +1193,10 @@ class Room extends Model $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 11://酒吧房 + $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 ; } //进入房间保持心跳 @@ -1362,6 +1366,220 @@ class Room extends Model } + //房间信息 + public function room_info($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' => '']; + } + + $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,'sign_type' => 1])->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; + } + } + } + + //酒吧房撩他礼物金币 + $liao_ta_gif = model('api/BarRoom')->get_liao_ta_gift(); + $liao_ta_coin = $liao_ta_gif['gift_price']??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-默认接受PK,2不接受', + 'last_pk_room_id' => $last_pk_room_id, + 'queue_number' => db::name('vs_room_pit_apply')->where(['room_id' => $room_id,'status' => 0])->count(), + 'sexy_coin' => $liao_ta_coin + ]; + + //当前用户信息 + $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 get_user_info($room_id,$user_id,$user_pit,$is_join = 0) { @@ -1676,7 +1894,7 @@ class Room extends Model //麦位信息 $pit_list = db::name('vs_room_pit')->alias('a')->join('user b', 'a.user_id = b.id', 'left') ->where(['a.room_id' => $room_id,'a.status' => 1]) - ->field('a.id,a.user_id,a.pit_number,a.is_lock,a.is_mute,a.count_down,b.nickname,b.avatar,b.sex,b.user_code') + ->field('a.id,a.user_id,a.pit_number,a.is_lock,a.is_mute,a.count_down,a.end_time,b.nickname,b.avatar,b.sex,b.user_code') ->order('a.pit_number asc')->select(); foreach ($pit_list as &$value) { $value['charm'] = 0; @@ -2919,504 +3137,6 @@ class Room extends Model } - //房间信息【1.6废弃】 - public function room_infos($user_id, $room_id) - { - if(!$room_id){ - return ['code' => 0, 'msg' => '参数错误', 'data' => null]; - } - $user_in_room = db::name('vs_room_visitor')->where(['room_id' => $room_id,'user_id' => $user_id])->find(); -// if(!$user_in_room){ -//// return ['code' => 0, 'msg' => '您已不在此房间', 'data' => null]; -// return ['code' => 0, 'msg' => '', 'data' => null]; -// } - $room = db::name('vs_room')->where(['id' => $room_id])->find(); - $song_list = null; - $next_song_info = null; - $song_pit_list = null; - $user_pit = 0; - $pit_list = null; - $roomauction = null; - $cp_users = null; - if($room['type_id'] == 1 || $room['type_id'] == 3 || $room['type_id'] == 4 || $room['type_id'] == 7 || $room['type_id'] == 8 || $room['type_id'] == 9 || $room['type_id'] == 10) { - if($room['label_id'] == 1 || $room['label_id'] == 5 || $room['label_id'] == 6 || $room['label_id'] == 7){ - //麦位信息 - $pit_list = db::name('vs_room_pit')->alias('a')->join('user b', 'a.user_id = b.id', 'left') - ->where(['a.room_id' => $room['id'],'a.status' => 1]) - ->field('a.id,a.user_id,a.pit_number,a.is_lock,a.is_mute,a.count_down,b.nickname,b.avatar,b.sex,b.user_code')->order('a.pit_number asc')->select(); - foreach ($pit_list as &$value) { - $value['charm'] = 0; - $value['dress'] = ''; - $value['is_online'] = 2; - if (isset($value['user_id']) && $value['user_id'] > 0) { - $value['charm'] = db::name('vs_room_user_charm')->where(['room_id' => $room['id'], 'user_id' => $value['user_id']])->value('charm'); - $value['dress'] = model('Decorate')->user_decorate_detail($value['user_id'], 1); - $value['user_code'] = model('Decorate')->user_decorate_detail($value['user_id'], 6); - $Nobility = model('api/Nobility')->getUserNobilityInfo($value['user_id']); -// $value['nobility_info'] = $Nobility; - $value['mic_cycle'] = model('api/Decorate')->user_decorate_detail($value['user_id'],3); - $value['nobility_image'] = $Nobility['play_image']; - $value['nickname_color'] = $Nobility['nick_name_color']; - $value['is_online'] = db::name('vs_room_visitor')->where(['user_id' => $value['user_id'],'room_id' => $room_id])->value('is_online'); - } - } - $user_pit = db::name('vs_room_pit')->where(['room_id' => $room['id'],'user_id' => $user_id])->find(); - }elseif($room['label_id'] == 2){ - $song = $this->get_song_info($room_id,$user_id); - $song_list = $song['song_user_info']; - $next_song_info = $song['nextInfo']; - $pit_list = $song['pit_list']; - $user_pit = $song['user_pit']; - $song_pit_list = $song['song_pit_list']; - } - }elseif($room['type_id'] == 2){ - $roomauction = $this->auction_room($room_id,$user_id); - $pit_list = $roomauction['pit_list']; - $user_pit = $roomauction['user_pit']; - }elseif($room['type_id'] == 6){ - //查看房间时间是否已到期 - $room_time = db::name('vs_room_cp_movie')->where(['room_id' => $room['id']])->value('time_day'); - if($room_time <= time()){ - return ['code' => 0, 'msg' => 'cp房间已到期', 'data' => '']; - } - $cp_users = db::name('vs_room_cp_movie')->alias('a') - ->join('user b', 'a.user_id = b.id', 'left') - ->join('user c', 'a.user_id1 = c.id', 'left') - ->where(['room_id' => $room['id'],'a.status' => 1]) - ->field('a.time_day,a.cp_id,a.user_id,a.user_id1,b.nickname,c.nickname as nickname1,b.avatar,c.avatar as avatar1,b.user_code,c.user_code as user_code1') - ->find(); - $cp_users['dress'] = model('Decorate')->user_decorate_detail($cp_users['user_id'],1); - $cp_users['dress1'] = model('Decorate')->user_decorate_detail($cp_users['user_id1'],1); - - 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; - } - - $room['is_use_code'] = 0; - $liang = model('Decorate')->user_decorate_detail($room['id'],7); - if($liang != $room['room_number']){ - $room['is_use_code'] = 1; - $room['room_number'] = $liang; - } - - //头条 - $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 - //pk信息 - $pk_info = null; - $is_pk = db::name('vs_room_pk')->where(['room_id_a' => $room_id])->where(['status' => ['in',[2,3,4]]]) - ->field('pk_id,create_user_id,receive_user_id,room_id_b,create_value_a,receive_value_b,pk_times,start_time,status,updatetime')->find(); - if($is_pk){ - $pk_info['pk_room_id'] = $is_pk['room_id_b'];//对方房间id - $pk_info['invite_pk_user_id'] = $is_pk['create_user_id'];//发起pk用户id - $pk_info['receive_pk_user_id'] = $is_pk['receive_user_id'];//接受者用户id - $pk_info['pk_id'] = $is_pk['pk_id'];//pkid - $pk_info['pk_end_times'] = $is_pk['start_time'] + $is_pk['pk_times'] * 60;//pk结束时间 - $pk_info['my_room_value'] = $is_pk['create_value_a'];//自己房间的值 - $pk_info['pk_room_value'] = $is_pk['receive_value_b'];//对方房间的值 - $pk_info['pk_part'] = $is_pk['status']; - if($is_pk['status'] == 2){ - $pk_info['pk_end_times'] = $is_pk['updatetime'] + 300; - }elseif($is_pk['status'] == 3){ - $pk_info['pk_end_times'] = $is_pk['start_time'] + $is_pk['pk_times'] * 60; - }elseif($is_pk['status'] == 4){ - $pk_info['pk_end_times'] = $is_pk['updatetime'] + 300; - if($is_pk['create_value_a'] > $is_pk['receive_value_b']){ - $pk_info['create_type'] = 1;//赢 - $pk_info['receive_type'] = 0;//输 - }elseif ($is_pk['create_value_a'] = $is_pk['receive_value_b']){ - $pk_info['create_type'] = 2;//平局 - $pk_info['receive_type'] = 2;//平局 - }else{ - $pk_info['create_type'] = 0;//输 - $pk_info['receive_type'] = 1;//赢 - } - } - }else{ - $is_pk = db::name('vs_room_pk')->where(['room_id_b' => $room_id])->where(['status' => ['in',[2,3,4]]]) - ->field('pk_id,create_user_id,receive_user_id,room_id_a,create_value_a,receive_value_b,pk_times,start_time,status,updatetime')->find(); - if($is_pk){ - $pk_info['pk_room_id'] = $is_pk['room_id_a']; - $pk_info['invite_pk_user_id'] = $is_pk['create_user_id']; - $pk_info['receive_pk_user_id'] = $is_pk['receive_user_id'];//接受者用户id - $pk_info['pk_id'] = $is_pk['pk_id']; - $pk_info['my_room_value'] = $is_pk['receive_value_b']; - $pk_info['pk_room_value'] = $is_pk['create_value_a']; - $pk_info['pk_part'] = $is_pk['status']; - if($is_pk['status'] == 2){ - $pk_info['pk_end_times'] = $is_pk['updatetime'] + 300; - }elseif($is_pk['status'] == 3){ - $pk_info['pk_end_times'] = $is_pk['start_time'] + $is_pk['pk_times'] * 60; - }elseif($is_pk['status'] == 4){ - $pk_info['pk_end_times'] = $is_pk['updatetime'] + 300; - if($is_pk['create_value_a'] > $is_pk['receive_value_b']){ - $pk_info['create_type'] = 1;//赢 - $pk_info['receive_type'] = 0;//输 - }elseif ($is_pk['create_value_a'] = $is_pk['receive_value_b']){ - $pk_info['create_type'] = 2;//平局 - $pk_info['receive_type'] = 2;//平局 - }else{ - $pk_info['create_type'] = 0;//输 - $pk_info['receive_type'] = 1;//赢 - } - } - } - } - - //上次的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; - } - } - } - - //点唱房内的演唱信息 - $singer_info = $this->getSingInfo($room_id); - - //酒吧房撩他礼物金币 - $liao_ta_gif = model('api/BarRoom')->get_liao_ta_gift(); - $liao_ta_coin = $liao_ta_gif['gift_price']??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-默认接受PK,2不接受', - 'last_pk_room_id' => $last_pk_room_id, - 'queue_number' => db::name('vs_room_pit_apply')->where(['room_id' => $room_id,'status' => 0])->count() - ]; - //房主信息 - $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('Decorate')->user_decorate_detail($room['user_id'],6); - - //当前用户信息 - $user_info = $this ->get_user_info($room_id,$user_id,$user_pit); - $user_info['is_room_owner'] = ($user_id == $room['user_id']) ? 1 : 0; - - //交友相关回值 - if($room['type_id'] == 7){ - $friend = $this->getRoomFriendData($room_id); - //交友状态 交友进行到第几步 1等待邂逅 2心动连线 3牵手良缘 - $friend['step'] =$room['step']; - }else{ - $friend = null; - } - - $xlh_info['xlh_info'] = model('api/BlindBoxTurntableGift')->get_user_xlh_info($room_id); - $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;//关闭 - } - - //签约房间信息 - if($room_info['type_id'] != 10){ - $sign_info = null; - }else{ - $room_sign = db::name('vs_room_sign')->where('room_id', $room_id)->order('id desc')->find(); - if($room_sign){ - $sign_info = [ - '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_status' => 0, - 'sign_day' => 0, - 'current_body_value' => 0, - 'end_time' => 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 room_info($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' => '']; - } - - $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,'sign_type' => 1])->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; - } - } - } - - //酒吧房撩他礼物金币 - $liao_ta_gif = model('api/BarRoom')->get_liao_ta_gift(); - $liao_ta_coin = $liao_ta_gif['gift_price']??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-默认接受PK,2不接受', - 'last_pk_room_id' => $last_pk_room_id, - 'queue_number' => db::name('vs_room_pit_apply')->where(['room_id' => $room_id,'status' => 0])->count(), - 'sexy_coin' => $liao_ta_coin - ]; - - //当前用户信息 - $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();