0,'msg'=>'请选择房间','data'=>null]; } //查找当房间的主持麦有无主持 $host_id = db::name('vs_room_pit')->where(['room_id' => $room_id,'pit_number' => 9])->value('user_id'); if($host_id <= 0){ return ['code'=>0,'msg'=>'当前暂无主持人!,不能申请点歌!','data'=>null]; } //查询当前房间是否在PK中 $is_pk = db::name('vs_room_pk')->where(['room_id_a' => $room_id])->where(['status' => ['in',[2,3,4,7]]]) ->field('pk_id')->find(); if(!$is_pk){ $is_pk = db::name('vs_room_pk')->where(['room_id_b' => $room_id])->where(['status' => ['in',[2,3,4,7]]]) ->field('pk_id')->find(); } if($is_pk){ return ['code'=>0,'msg'=>'当前房间PK中!不能申请点歌!','data'=>null]; } //查询当前房间的状态 点歌状态:1-等待点歌申请,2-申请中,3-点歌中 4-拒绝' $room_status = db::name('vs_room')->where('id',$room_id)->value('is_song'); if($room_status == 1 || $room_status == 4){ $res = db::name('vs_room')->where('id',$room_id)->update(['is_song' => 2]); //缓存申请时间 Cache::set('apply_song_time_'.$room_id,time()); //缓存申请用户 Cache::set('apply_song_user_'.$room_id,$uid); if(!$res){ return ['code'=>0,'msg'=>'申请失败!','data'=>null]; } //推送消息 $FromUserInfo = db::name('user')->where('id',$uid)->field('id as user_id,nickname,avatar,sex')->find(); $text = [ 'FromUserInfo' => $FromUserInfo, 'action' => 1 //申请点歌 ]; model('Chat')->sendMsg(1013,$room_id,$text); return ['code'=>1,'msg'=>'申请成功!等待主持同意!','data'=>null]; }elseif($room_status == 2){ //获取申请时间 $apply_song_time = Cache::get('apply_song_time_'.$room_id); if(time() - $apply_song_time > 20){ //修改房间状态 $res = db::name('vs_room')->where('id',$room_id)->update(['is_song' => 1]); if(!$res){ return ['code'=>0,'msg'=>'操作失败!','data'=>null]; } //拒绝上一次的申请 //获取上次申请用户 $apply_song_user = Cache::get('apply_song_user_'.$room_id); if($apply_song_user != $uid){ $FromUserInfo = db::name('user')->where('id',$apply_song_user)->field('id as user_id,nickname,avatar,sex')->find(); $text = [ 'FromUserInfo' => $FromUserInfo, 'action' => 4 //拒绝申请点歌 ]; model('Chat')->sendMsg(1013,$room_id,$text); } $this->apply_song($uid,$room_id); }else{ return ['code'=>1,'msg'=>'已经申请,等待主持同意!','data'=>null]; } }else{ return ['code'=>0,'msg'=>'点歌中!请稍后再试!','data'=>null]; } } //同意点歌 public function agree_song($user_id,$room_id,$type){ //判断用户是否在主持麦 $host_id = db::name('vs_room_pit')->where(['room_id' => $room_id,'user_id' => $user_id])->value('pit_number'); if($host_id != 9){ return ['code'=>0,'msg'=>'您不在主持麦,不能操作!','data'=>null]; } $res1 = db::name('vs_room')->where('id',$room_id)->where(['label_id'=>2,'is_song'=>3])->find(); if($res1){ return ['code'=>0,'msg'=>'点歌中!请稍后再试!','data'=>null]; } if($type == 1){//1同意 2拒绝 //开启事务 db::startTrans(); $res2 = db::name('vs_room')->where('id',$room_id)->field('room_up_pit_type')->find(); if($res2['room_up_pit_type'] == 2){ $data['room_up_pit_type'] = 1; } //修改房间label $data['label_id'] = 2; $data['is_song'] = 3; $res = db::name('vs_room')->where('id',$room_id)->update($data); if(!$res){ db::rollback(); return ['code'=>0,'msg'=>'操作失败,','data'=>null]; } $roomPit = db::name('vs_room_pit')->where(['room_id' => $room_id]) ->where('pit_number','<',9) ->where('user_id','>',0)->select(); if(!empty($roomPit)){ foreach ($roomPit as $k=>$v){ model('RoomPit')->DownPit($v['user_id'],$room_id,$v['pit_number']); } } //获取房间麦位 // $roomPit = db::name('vs_room_pit')->where(['room_id' => $room_id])->count(); // if($roomPit == 10){ // //麦位增加到22个 // $add_pit = model('RoomPit')->create_room_pit(2,$room_id); // if($add_pit['code'] == 0){ // Db::rollback(); // return ['code' => 0, 'msg' => '操作失败了', 'data' => null]; // } // }elseif($roomPit == 22){ // //开启11-22麦位 // $pit_up = db::name('vs_room_pit')->where(['room_id' => $room_id]) // ->where('pit_number','>',10) // ->update(['status'=>1]); // if(!$pit_up){ // Db::rollback(); // return ['code' => 0, 'msg' => '操作失败了.', 'data' => null]; // } // } db::commit(); //推送消息 $text = [ 'text' => '房间类型变成k歌--2' ]; model('Chat')->sendMsg(1012,$room_id,$text); }else{ $res = db::name('vs_room')->where('id',$room_id)->update(['is_song'=>4]); if(!$res){ return ['code'=>0,'msg'=>'操作失败','data'=>null]; } //推送消息 $uid = Cache::get('apply_song_user_'.$room_id); if($uid){ $FromUserInfo = db::name('user')->where('id',$uid)->field('id as user_id,nickname,avatar,sex')->find(); $text = [ 'FromUserInfo' => $FromUserInfo, 'action' => 4 //拒绝申请点歌 ]; model('Chat')->sendMsg(1013,$room_id,$text); } } //删除申请缓存 Cache::rm('apply_song_time_'.$room_id); Cache::rm('apply_song_user_'.$room_id); return ['code'=>1,'msg'=>'操作成功','data'=>null]; } //点歌 public function song($room_id,$user_id,$song_code,$song_name,$singer,$poster,$duration){ $action = 0;//初始值,1-申请点歌,2-切歌,3-下一首歌曲变化,4-拒绝申请点歌 //查询当前房间中的场次状态 $times_status = db::name('vs_room_song')->where('room_id',$room_id)->field('times,times_status')->order('did desc')->find(); if(!empty($times_status)){//已经有歌曲 if($times_status['times_status'] == 2){//这一场次结束了 $data['sort'] = 10000;//排序,新场次第一首歌 $data['times'] = $times_status['times'] + 1;//新场次 //本场次无歌曲 $action = 2;//走切歌,当前要唱的歌 }else{//正在进行中 $data['times'] = $times_status['times']; //获取当前进行中的 最后一位歌曲 $qq = db::name('vs_room_song') ->where('room_id',$room_id) ->where('times',$times_status['times']) ->field('sort,status')->order('sort asc')->find(); $data['sort'] = $qq['sort'] - 100; //查询本场次本次点歌是否等待位第一首(也是就是本场次的第二首歌) $song_status = db::name('vs_room_song') ->where('room_id',$room_id) ->where('times',$times_status['times']) ->where('status',1)//待唱 ->order('sort desc')->select(); $nowSong = db::name('vs_room_song') ->where('room_id',$room_id) ->where('times',$times_status['times']) ->where('status',2) ->find(); if(empty($song_status) && $nowSong){//本场次无待唱歌曲,本此点歌是下一首播放歌曲 $action = 3;//下一首歌曲有变化,推送给前端 }elseif(empty($song_status) && empty($nowSong)){ $action = 2; } } }else{//没有歌曲,新场次 $data['sort'] = 10000; $data['times'] = 1;//本房间第一场 $action = 2;//走切歌,当前要唱的歌 } $data['room_id'] = $room_id; $data['user_id'] = $user_id; $data['song_code'] = $song_code; $data['song_name'] = $song_name; $data['singer'] = $singer; $data['poster'] = $poster; $data['duration'] = $duration; if($action == 2){//切歌 当前歌曲为正要唱的歌 $data['status'] = 2;//把当前歌曲设为演唱中 }else{ $data['status'] = 1;//放入等待区 } $data['times_status'] = 1; $data['createtime'] = time(); $res = db::name('vs_room_song')->insertGetId($data,false,'did'); $did = $res; if(!$res){ return ['code'=>0,'msg'=>'申请失败','data'=>null]; } //房间中待唱歌曲总数 $total = db::name('vs_room_song') ->where(['room_id' => $room_id,'status' => 1,'times_status' => 1]) ->count(); $info = [ 'did' => $did, 'song_code' => $song_code, 'song_name' => $song_name, 'singer' => $singer, 'poster' => $poster, 'duration' => $duration, 'user_id' => $user_id, 'dress' => model('Decorate')->user_decorate_detail($user_id, 1), 'nickname' => db::name('user')->where('id',$user_id)->value('nickname'), 'avatar' => db::name('user')->where('id',$user_id)->value('avatar'), 'charm' => db::name('vs_room_user_charm')->where(['user_id' =>$user_id,'room_id' => $room_id])->value('charm'), ]; $nowInfo = null; $nextInfo = null; if($action == 2){//切歌 应该播放的歌曲推给前端 $nowInfo = $info; }elseif ($action == 3){//下一首变化后 推给前端做预加载歌词 $nextInfo = $info; //把这个信息存储到redis Cache::set("api:room:song:nextInfo:" . $room_id, $did); } $text = [ 'action' => $action, 'total' => $total, 'songInfo' => $nowInfo, 'nextInfo' => $nextInfo ]; model('Chat')->sendMsg(1013,$room_id,$text); //1-禁麦位,2-清空消息,3-清空魅力值,4-加入黑名单,5-踢出房间,6-关闭麦克风,7-申请上麦,8-同意上麦,9-拒绝上麦,10-点歌,11-开启PK', model('Room')->room_operation_record($user_id,$room_id,10,0,0,$did); return ['code'=>1,'msg'=>'申请成功','data'=>null]; } //已点歌曲列表 public function song_list($room_id){ $list = db::name('vs_room_song') ->field('did,room_id,song_code,song_name,singer,poster,duration,sort,user_id') ->where(['room_id' => $room_id,'status' => 1,'times_status' => 1]) ->order('sort desc')->select(); if($list){ foreach ($list as &$v){ $v['nickname'] = db::name('user')->where('id',$v['user_id'])->value('nickname'); $v['avatar'] = db::name('user')->where('id',$v['user_id'])->value('avatar'); $v['dress'] = model('Decorate')->user_decorate_detail($v['user_id'], 1); } } return ['code'=>1,'msg'=>'操作成功','data'=>$list]; } //上移歌 $type 1上移 2置顶 public function up_song($room_song_id,$type=1){ //查询当前数据的信息 $sort = db::name('vs_room_song')->where('did',$room_song_id)->field('room_id,sort,times')->find(); //根据房间ID查询当前房间中正在排序的歌曲 并获取当前排序的前一位的ID $sort_up = db::name('vs_room_song')->where(['room_id' => $sort['room_id'],'status' => 1,'times' =>$sort['times'],'times_status' => 1])->field('did')->order('sort desc')->select(); if($sort_up[0]['did'] == $room_song_id){ return ['code'=>0,'msg'=>'已经是第一首歌了','data'=>null]; } if($type == 1){ //上移 foreach ($sort_up as $k=>$v){ if($v['did'] == $room_song_id){ $sort_ups = $sort_up[$k-1]['did']; } } $fa_zhi = 0; }else{ //置顶 foreach ($sort_up as $k=>$v){ $sort_ups = $sort_up[0]['did']; } $fa_zhi = 9;//阈值 为了防止置顶后被上移歌曲覆盖 } $sortt = db::name('vs_room_song')->where('did',$sort_ups)->value('sort'); $sort_upp = $sortt + 1 + $fa_zhi; $res = db::name('vs_room_song')->where('did',$room_song_id)->update(['sort'=>$sort_upp]); if(!$res){ return ['code'=>0,'msg'=>'操作失败','data'=>null]; } $data = db::name('vs_room_song')->where(['room_id' => $sort['room_id'],'status' => 1,'times' =>$sort['times'],'times_status' => 1]) ->order('sort desc')->select(); $did = Cache::get("api:room:song:nextInfo:" . $sort['room_id']); //歌曲移动后,下一首播放歌曲信息 发生改变 推送给前端 if($data[0]['did'] != $did){ $total = db::name('vs_room_song') ->where(['room_id' => $sort['room_id'],'status' => 1,'times_status' => 1]) ->count(); $info = [ 'did' => $data[0]['did'], 'song_code' => $data[0]['song_code'], 'song_name' => $data[0]['song_name'], 'singer' => $data[0]['singer'], 'poster' => $data[0]['poster'], 'duration' => $data[0]['duration'], 'user_id' => $data[0]['user_id'], 'dress' => model('Decorate')->user_decorate_detail($data[0]['user_id'], 1), 'nickname' => db::name('user')->where('id',$data[0]['user_id'])->value('nickname'), 'avatar' => db::name('user')->where('id',$data[0]['user_id'])->value('avatar'), 'charm' => db::name('vs_room_user_charm')->where(['user_id' => $data[0]['user_id'],'room_id' => $sort['room_id']])->value('charm'), ]; $text = [ 'action' => 3,//下一首播放歌曲信息推送给前端 'total' => $total, 'songInfo' => null, 'nextInfo' => $info ]; model('Chat')->sendMsg(1013,$sort['room_id'],$text); Cache::set("api:room:song:nextInfo:" . $sort['room_id'],$data[0]['did']); } return ['code'=>1,'msg'=>'操作成功','data'=>$data]; } //切歌 public function change_song($room_id,$now_room_song_id){ //根据传过来的参数查询当前场次 $times = db::name('vs_room_song')->where('did',$now_room_song_id)->value('times'); //查询下一首歌曲 $data = db::name('vs_room_song')->where(['room_id' => $room_id,'status' => 1,'times' =>$times,'times_status' => 1]) ->order('sort desc')->select(); //结束本首歌 $now_song = db::name('vs_room_song')->where('did',$now_room_song_id)->update(['status'=>3]); if(empty($data)){ Cache::rm("api:room:song:nextInfo:" . $room_id); $text = [ 'action' => 2, 'total' => 0, 'songInfo' => null, 'nextInfo' => null ]; model('Chat')->sendMsg(1013,$room_id,$text); return ['code'=>0,'msg'=>'已经是最后一首歌了','data'=>null]; } $total = db::name('vs_room_song') ->where(['room_id' => $room_id,'status' => 1,'times' =>$times,'times_status' => 1]) ->count(); //修改 准备唱的歌曲状态 $next_song = db::name('vs_room_song')->where('did',$data[0]['did'])->update(['status' => 2]); if(!$now_song || !$next_song){ return ['code'=>0,'msg'=>'切歌失败','data'=>null]; } if(array_count_dim($data) > 1){ //有两首以上的歌曲 第二首放入 推送的下一首中 $next_song_info = [ 'did' => $data[1]['did'], 'song_code' => $data[1]['song_code'], 'song_name' => $data[1]['song_name'], 'singer' => $data[1]['singer'], 'poster' => $data[1]['poster'], 'duration' => $data[1]['duration'], 'user_id' => $data[1]['user_id'], 'dress' => model('Decorate')->user_decorate_detail($data[1]['user_id'], 1), 'nickname' => db::name('user')->where('id',$data[1]['user_id'])->value('nickname'), 'avatar' => db::name('user')->where('id',$data[1]['user_id'])->value('avatar'), 'charm' => db::name('vs_room_user_charm')->where(['user_id' =>$data[1]['user_id'],'room_id' => $room_id])->value('charm'), ]; //缓存 Cache::set("api:room:song:nextInfo:" . $room_id,$data[1]['did']); }else{ //一首歌曲 推送下一首没有 $next_song_info = null; } $text = [ 'action' => 2, 'total' => $total, 'songInfo' => [ 'did' => $data[0]['did'], 'song_code' => $data[0]['song_code'], 'song_name' => $data[0]['song_name'], 'singer' => $data[0]['singer'], 'poster' => $data[0]['poster'], 'duration' => $data[0]['duration'], 'user_id' => $data[0]['user_id'], 'dress' => model('Decorate')->user_decorate_detail($data[0]['user_id'], 1), 'nickname' => db::name('user')->where('id',$data[0]['user_id'])->value('nickname'), 'avatar' => db::name('user')->where('id',$data[0]['user_id'])->value('avatar'), 'charm' => db::name('vs_room_user_charm')->where(['user_id' =>$data[0]['user_id'],'room_id' => $room_id])->value('charm'), ], 'nextInfo' => $next_song_info ]; model('Chat')->sendMsg(1013,$room_id,$text); return ['code'=>1,'msg'=>'切歌成功','data'=>null]; } //结束本场唱歌 public function end_song($room_id){ //开启事务 db::startTrans(); //本场次结束 db::name('vs_room_song')->where(['room_id' => $room_id,'times_status' => 1,'status' => 1])->update(['status'=>4]); if(db::name('vs_room_song')->where(['room_id' => $room_id,'times_status' => 1,'status' => 2])->find()){ db::name('vs_room_song')->where(['room_id' => $room_id,'times_status' => 1,'status' => 2])->update(['status'=>3]); } if(db::name('vs_room_song')->where('room_id',$room_id)->where(['times_status'=>1])->find()){ $times_status = db::name('vs_room_song')->where('room_id',$room_id)->update(['times_status'=>2]); if(!$times_status){ db::rollback(); return ['code'=>0,'msg'=>'操作失败!','data'=>null]; } } //修改房间类型 //修改房间label $res = db::name('vs_room')->where('id',$room_id)->update(['label_id'=>1,'is_song'=>1]); if(!$res){ db::rollback(); return ['code'=>0,'msg'=>'操作失败','data'=>null]; } //关闭11-22麦位 // $pit_up = db::name('vs_room_pit')->where(['room_id' => $room_id]) // ->where('pit_number','>',10) // ->update(['status'=>2]); // if(!$pit_up){ // Db::rollback(); // return ['code' => 0, 'msg' => '操作失败了.', 'data' => null]; // } $roomPit = db::name('vs_room_pit')->where(['room_id' => $room_id]) ->where('pit_number','<',9) ->where('pit_number','>',10) ->where('user_id','>',0)->select(); if(!empty($roomPit)){ foreach ($roomPit as $k=>$v){ model('RoomPit')->DownPit($v['user_id'],$room_id,$v['pit_number']); } } db::name('vs_room_pit_simulate')->where(['room_id' => $room_id])->delete(); //推送消息 $text = [ 'text' => '房间类型变成聊天--1' ]; model('Chat')->sendMsg(1012,$room_id,$text); Cache::rm("api:room:song:nextInfo:" . $room_id); db::commit(); return ['code'=>1,'msg'=>'操作成功','data'=>null]; } //申请上麦 public function apply_kpit($user_id,$room_id,$pit_number = 0){ //查询房间状态 $room_info = db::name('vs_room')->where(['id' => $room_id, 'apply_status' => 2])->field('id,room_status,room_up_pit_type')->find(); if(!$room_info){ return ['code' => 0, 'msg' => '房间不存在', 'data' => null]; } if($room_info['room_status'] != 1){ return ['code' => 0, 'msg' => '房间违规或关闭', 'data' => null]; } if($pit_number == 10){ return ['code' => 0, 'msg' => '请等待主持抱麦', 'data' => null]; } if($pit_number > 0){ if(!in_array($pit_number,[9,10])){ return ['code' => 0, 'msg' => '请选择正确的麦位', 'data' => null]; } //查询是否在下面麦位 $ompit = db::name('vs_room_pit_simulate')->where(['room_id' => $room_id, 'user_id' => $user_id])->field('id,status')->find(); if($ompit && $ompit['status'] == 1){ return ['code' => 0, 'msg' => '您已上麦', 'data' => null]; } //检查坑位是否被占用 $pit_number9 = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $pit_number])->value('user_id'); if($pit_number9){ return ['code' => 0, 'msg' => '该麦位已被占用', 'data' => null]; } //检查是否是主持管理或房主 if($pit_number == 9){ //判断用户是否是房主 管理主持 $owner = db::name('vs_room')->where(['id' => $room_id])->value('user_id'); $host = db::name('vs_room_host')->where(['room_id' => $room_id,'user_id' =>$user_id,'delete_time' =>null])->find(); if(!$host && $owner != $user_id){ return ['code' => 0, 'msg' => '您没有权限上麦', 'data' => null]; } } $ompit = model('RoomPit')->OnPit($user_id,$room_id,$pit_number);//用户上了这个房间的几号麦位 if($ompit['code'] != 1){ return ['code' => 0, 'msg' => '上麦失败', 'data' => null]; } //查找是否在申请列表里 $apply_pit = db::name('vs_room_pit_apply')->where(['room_id' => $room_id, 'user_id' => $user_id])->find(); if($apply_pit){ model('RoomPit')->clear_apply_pit_list($user_id, $room_id, $user_id); } return ['code' => 1, 'msg' => '上麦成功', 'data' => null]; }else{ if(db::name('vs_room_pit_simulate')->where(['room_id' => $room_id])->count() >= 20){ return ['code' => 0, 'msg' => '暂无空麦位', 'data' => null]; } //检查是否在坑位上 $pit_infos = db::name('vs_room_pit_simulate')->where(['room_id' => $room_id, 'user_id' => $user_id])->field('id,status')->find(); if(isset($pit_infos)){ return ['code' => 0, 'msg' => '用户已在麦上,请先下麦后再申请', 'data' => null]; } $FromUserInfo = db::name('user')->where('id',$user_id)->field('id as user_id,nickname,avatar,sex')->find(); $FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($user_id);//财富图标 $FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($user_id);//魅力图标 $FromUserInfo['dress'] = model('Decorate')->user_decorate_detail($user_id,1); $text['text'] = $FromUserInfo['nickname'].' 上麦了 '; $text['FromUserInfo'] = $FromUserInfo; $text['pit_number'] = 9999; //自由麦 if($room_info['room_up_pit_type'] == 2){ $ompit = db::name('vs_room_pit_simulate')->insert( [ 'room_id' => $room_id, 'user_id' => $user_id, 'status' => 1,//1-K歌模式虚假上麦 ] );//用户上了这个房间的麦位 if(!$ompit){ return ['code' => 0, 'msg' => '上麦失败', 'data' => null]; } //聊天室推送系统消息 model('Chat')->sendMsg(1003,$room_id,$text); return ['code' => 1, 'msg' => '上麦成功', 'data' => null]; }else{ //检查用户是否已经申请 $apply_pit_info = db::name('vs_room_pit_apply')->where(['room_id' => $room_id, 'user_id' => $user_id])->field('id')->find(); if($apply_pit_info){ return ['code' => 0, 'msg' => '请勿重复申请', 'data' => null]; } //放入等待区 $data = [ 'room_id' => $room_id, 'user_id' => $user_id, 'status' => 0, 'apply_type' => 2 ]; $reslut = db::name('vs_room_pit_apply')->insert($data); if(!$reslut){ return ['code' => 0, 'msg' => '申请失败', 'data' => null]; } $count = db::name('vs_room_pit_apply')->where(['room_id' => $room_id,'status' => 0])->count(); //申请上麦推送消息 $text = [ 'text' => '申请上麦', 'count' => $count ]; model('Chat')->sendMsg(1034,$room_id,$text); return ['code' => 1, 'msg' => '申请成功,请等待主持审核', 'data' => null]; } } } //下麦 public function down_kpit($user_id,$room_id){ //唱歌的时候不让下麦 $now_song = db::name('vs_room_song')->where(['room_id' => $room_id,'status' => 2])->order('did desc')->value('user_id'); if($now_song == $user_id){ return ['code' => 0, 'msg' => '正在唱歌,请勿下麦', 'data' => null]; } $host_user_id = db::name('vs_room_pit')->where(['room_id' => $room_id,'pit_number' => 9])->value('user_id'); $host_user_id2 = db::name('vs_room_pit')->where(['room_id' => $room_id,'pit_number' => 10])->value('user_id'); if($user_id == $host_user_id){ return model('RoomPit')->DownPit($user_id,$room_id,9); }elseif ($user_id == $host_user_id2){ return model('RoomPit')->DownPit($user_id,$room_id,10); }else{ $down = db::name('vs_room_pit_simulate')->where(['room_id' => $room_id, 'user_id' => $user_id,'status' => 1])->delete(); if(!$down){ return ['code' => 0, 'msg' => '下麦失败', 'data' => null]; } $FromUserInfo = db::name('user')->where('id',$user_id)->field('id as user_id,nickname,avatar,sex')->find(); $FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($user_id);//财富图标 $FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($user_id);//魅力图标 //推送告诉前端下了几号麦位 $text['text'] = $FromUserInfo['nickname'].' 下麦了 '; $text['FromUserInfo'] = $FromUserInfo; $text['pit_number'] = ''; model('Chat')->sendMsg(1004,$room_id,$text); return ['code' => 1, 'msg' => '下麦成功', 'data' => null]; } } //房间用户列表 public function get_charm_rank($room_id){ $room_pit = db::name('vs_room_pit')->where(['room_id' => $room_id]) ->where(['pit_number' =>['>=',9]])->column('user_id'); if(!empty($room_pit)){ $where['user_id'] = ['not in', $room_pit]; } $where['room_id'] = $room_id; // $room_visitor = db::name('vs_room_visitor') $room_visitor = db::name('vs_room_pit_simulate') ->where($where)->field('user_id')->order('id asc')->select(); if($room_visitor){ foreach ($room_visitor as &$v){ $v['charm'] = db::name('vs_room_user_charm')->where(['user_id' => $v['user_id'],'room_id' => $room_id])->value('charm'); $v['nickname'] = db::name('user')->where('id',$v['user_id'])->value('nickname'); $v['avatar'] = db::name('user')->where('id',$v['user_id'])->value('avatar'); $v['dress'] = model('Decorate')->user_decorate_detail($v['user_id'], 1); $v['sex'] = db::name('user')->where('id',$v['user_id'])->value('sex'); $v['user_code'] = model('Decorate')->user_decorate_detail($v['user_id'], 6); $v['is_lock'] = 0; $v['is_mute'] = 0; $v['count_down'] = 0; $v['pit_number'] = 9999; } } return ['code' => 1, 'msg' => '获取成功', 'data' => $room_visitor]; } }