Files
yusheng-php/application/api/model/RoomSong.php
2025-08-07 20:21:47 +08:00

649 lines
30 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\api\model;
use think\Db;
use think\Model;
use think\Cache;
class RoomSong extends Model
{
protected $name = 'vs_room_song';
//申请点歌模式
public function apply_song($uid,$room_id){
if(!$room_id){
return ['code'=>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];
}
}