Files
midi-php/application/api/model/RoomSong.php

649 lines
30 KiB
PHP
Raw Normal View History

2025-08-13 10:43:56 +08:00
<?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];
}
}