2025-08-07 20:21:47 +08:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
namespace app\api\model;
|
|
|
|
|
|
|
|
|
|
|
|
use app\common\controller\Push;
|
|
|
|
|
|
use think\Cache;
|
|
|
|
|
|
use think\Db;
|
|
|
|
|
|
use think\Model;
|
|
|
|
|
|
|
|
|
|
|
|
class RoomPit extends Model
|
|
|
|
|
|
{
|
|
|
|
|
|
protected $table = 'fa_vs_room_pit';
|
|
|
|
|
|
|
|
|
|
|
|
//创建房间麦位
|
|
|
|
|
|
public function create_room_pit($type,$room_id)
|
|
|
|
|
|
{
|
|
|
|
|
|
if($type == 2){ //K歌
|
|
|
|
|
|
$pitnumber = 22;
|
|
|
|
|
|
$ii = 11;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$pitnumber = 10;
|
|
|
|
|
|
$ii = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
for ($i = $ii; $i <= $pitnumber; $i++){
|
|
|
|
|
|
$data[] = [
|
|
|
|
|
|
'room_id' => $room_id,
|
|
|
|
|
|
'user_id' => 0,
|
|
|
|
|
|
'pit_number' => $i,
|
|
|
|
|
|
];
|
|
|
|
|
|
}
|
|
|
|
|
|
$reslut = $this->saveAll($data);
|
|
|
|
|
|
if(!$reslut){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '创建失败', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
return ['code' => 1, 'msg' => '创建成功', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//获取房间所有的空麦位剔除一部分
|
|
|
|
|
|
public function getRoomNullPitWithout($room_id, $not_in_pits) {
|
|
|
|
|
|
$where['room_id'] = $room_id;
|
|
|
|
|
|
$where['user_id'] = 0;
|
|
|
|
|
|
$where['is_mute'] = 0;
|
|
|
|
|
|
$where['is_lock'] = 0;
|
|
|
|
|
|
|
|
|
|
|
|
if ($not_in_pits) {
|
|
|
|
|
|
$where['pit_number'] = ['not in', $not_in_pits];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return db::name('vs_room_pit')->where($where)->order('pit_number asc')->value('pit_number');
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//用户上麦
|
|
|
|
|
|
public function OnPit($user_id,$room_id,$pit_number)
|
|
|
|
|
|
{
|
|
|
|
|
|
$on = $this->where(['room_id' => $room_id, 'pit_number' => $pit_number])->update(['user_id' => $user_id]);
|
|
|
|
|
|
if(!$on){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '上麦失败', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
// $nickname = model('User')->where(['id' => $user_id])->value('nickname');
|
|
|
|
|
|
$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);
|
|
|
|
|
|
$FromUserInfo['charm'] = db::name('vs_room_user_charm')->where(['user_id' => $user_id,'room_id' => $room_id])->value('charm');
|
2025-11-10 18:44:05 +08:00
|
|
|
|
$Nobility = model('api/Nobility')->getUserNobilityInfo($user_id);
|
2025-11-12 17:45:49 +08:00
|
|
|
|
// $FromUserInfo['nobility_info'] = $Nobility;
|
2025-11-10 18:44:05 +08:00
|
|
|
|
$FromUserInfo['mic_cycle'] = model('api/Decorate')->user_decorate_detail($user_id,3);
|
|
|
|
|
|
$FromUserInfo['nobility_image'] = $Nobility['play_image'];
|
|
|
|
|
|
$FromUserInfo['nickname_color'] = $Nobility['nick_name_color'];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
//推送告诉前端上了几号麦位
|
|
|
|
|
|
if($pit_number == 9){
|
|
|
|
|
|
$pit_text = '主持麦';
|
|
|
|
|
|
//查询房间是否隐藏
|
|
|
|
|
|
$is_hide = db::name('vs_room')->where(['id' => $room_id])->value('is_show_room');
|
|
|
|
|
|
if($is_hide == 2){
|
|
|
|
|
|
db::name('vs_room')->where(['id' => $room_id])->update(['is_show_room' => 1]);
|
|
|
|
|
|
}
|
|
|
|
|
|
}elseif ($pit_number == 10) {
|
|
|
|
|
|
$pit_text = '嘉宾麦';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$pit_text = $pit_number . '号麦';
|
|
|
|
|
|
}
|
|
|
|
|
|
$text['text'] = $FromUserInfo['nickname'].' 上了 ' . $pit_text;
|
|
|
|
|
|
$text['FromUserInfo'] = $FromUserInfo;
|
|
|
|
|
|
$text['pit_number'] = $pit_number;
|
|
|
|
|
|
//聊天室推送系统消息
|
|
|
|
|
|
model('Chat')->sendMsg(1003,$room_id,$text);
|
2025-10-28 10:41:41 +08:00
|
|
|
|
|
|
|
|
|
|
//查看此房间是否处于pk中
|
|
|
|
|
|
$is_pk = db::name('vs_room_pk')->where(['room_id_a' => $room_id])->where(['status' => ['in',[2,3,4]]])->value('room_id_b') ?? 0;
|
|
|
|
|
|
if(!$is_pk){
|
|
|
|
|
|
$is_pk = db::name('vs_room_pk')->where(['room_id_b' => $room_id])->where(['status' => ['in',[2,3,4]]])->value('room_id_a') ?? 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
if($is_pk > 0){
|
|
|
|
|
|
//如果此房间是pk中,则推送给pk中房间的成员
|
|
|
|
|
|
$text['is_pk'] = 1;
|
2025-10-28 10:42:56 +08:00
|
|
|
|
model('Chat')->sendMsg(1003,$is_pk,$text);
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
2025-10-28 10:41:41 +08:00
|
|
|
|
|
|
|
|
|
|
// if($pit_number == 9){
|
|
|
|
|
|
// //推送消息给设置此用户开播提醒的人
|
|
|
|
|
|
// $remind_users = db::name('vs_user_live_remind')->where('remind_user_id' , $user_id)->select('user_id');
|
|
|
|
|
|
// $remind_user = [];
|
|
|
|
|
|
// foreach ($remind_users as $k=>$v){
|
|
|
|
|
|
// $remind_user[$k] = 'u'.$v['user_id'];
|
|
|
|
|
|
// if($k >= 499){ //批量发单聊消息 最大数500个
|
|
|
|
|
|
// //结束整个循环
|
|
|
|
|
|
// break;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// $content = [
|
|
|
|
|
|
// 'type' => 1,
|
|
|
|
|
|
// 'roomID' => $room_id,
|
|
|
|
|
|
// 'content' => '您关注的用户' . $FromUserInfo['nickname'] . '正在直播,快去围观吧!',
|
|
|
|
|
|
// ];
|
|
|
|
|
|
// model('Tencent')->batchsendmsg($remind_user,json_encode($content));
|
|
|
|
|
|
// }
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$reslut = db::name('vs_room_pit_apply')->where(['user_id' => $user_id, 'room_id' => $room_id, 'status' => 0])->delete();
|
|
|
|
|
|
if($reslut){
|
|
|
|
|
|
$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);
|
|
|
|
|
|
}
|
2025-08-07 20:21:47 +08:00
|
|
|
|
return ['code' => 1, 'msg' => '上麦成功', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//用户下麦
|
|
|
|
|
|
public function DownPit($user_id,$room_id,$pit_number)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(!$pit_number){
|
|
|
|
|
|
$pit_number = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $user_id])->value('pit_number');
|
|
|
|
|
|
if(!$pit_number){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '该用户已不在'.$pit_number.'麦', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
$where['room_id'] = $room_id;
|
|
|
|
|
|
$where['pit_number'] = $pit_number;
|
|
|
|
|
|
$where['user_id'] = $user_id;
|
|
|
|
|
|
$accept_pit_info = db::name('vs_room_pit')->where($where)->find();
|
|
|
|
|
|
if(!$accept_pit_info){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '该用户已不在'.$pit_number.'麦', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//判断当前房间是否正在pk
|
|
|
|
|
|
$is_pk = db::name('vs_room_pk')->where(['room_id_a' => $room_id])->where(['status' => ['in',[2,3,4]]])->value('room_id_b') ?? 0;
|
|
|
|
|
|
if(!$is_pk){
|
|
|
|
|
|
$is_pk = db::name('vs_room_pk')->where(['room_id_b' => $room_id])->where(['status' => ['in',[2,3,4]]])->value('room_id_a') ?? 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
if($is_pk > 0 && $pit_number == 9){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '当前房间正在pk中', 'data' => null];
|
|
|
|
|
|
}
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$step = db::name('vs_room')->where(['id' => $room_id, 'type_id' => 7])->value('step');
|
|
|
|
|
|
if($step && $step != 1 && $pit_number < 9){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '交友房 此阶段不可操作', 'data' => null];
|
|
|
|
|
|
}
|
2025-08-07 20:21:47 +08:00
|
|
|
|
$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);//魅力图标
|
2025-11-10 18:44:05 +08:00
|
|
|
|
$Nobility = model('api/Nobility')->getUserNobilityInfo($user_id);
|
|
|
|
|
|
$FromUserInfo['nobility_info'] = $Nobility;
|
|
|
|
|
|
$FromUserInfo['mic_cycle'] = model('api/Decorate')->user_decorate_detail($user_id,3);
|
|
|
|
|
|
$FromUserInfo['nobility_image'] = $Nobility['play_image'];
|
|
|
|
|
|
$FromUserInfo['nickname_color'] = $Nobility['nick_name_color'];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
if($pit_number == 888){
|
|
|
|
|
|
$text['text'] = $FromUserInfo['nickname'].' 下了拍卖位 ';
|
|
|
|
|
|
$text['type'] = 2 ;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
if($pit_number <= 0){
|
|
|
|
|
|
$pit_number = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $user_id])->value('pit_number');
|
|
|
|
|
|
}
|
|
|
|
|
|
$down = $this->where(['room_id' => $room_id, 'user_id' => $user_id])->update(['user_id' => 0]);
|
|
|
|
|
|
if(!$down){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '下麦失败', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
if($pit_number == 9){
|
|
|
|
|
|
$pit_text = '主持麦';
|
|
|
|
|
|
}elseif ($pit_number == 10) {
|
|
|
|
|
|
$pit_text = '嘉宾麦';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$pit_text = $pit_number . '号麦';
|
|
|
|
|
|
}
|
|
|
|
|
|
$text['text'] = $FromUserInfo['nickname'].' 下了 ' . $pit_text;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//推送告诉前端下了几号麦位
|
|
|
|
|
|
$text['FromUserInfo'] = $FromUserInfo;
|
|
|
|
|
|
$text['pit_number'] = $pit_number;
|
|
|
|
|
|
if($pit_number == 888){
|
|
|
|
|
|
model('Chat')->sendMsg(1022,$room_id,$text);
|
|
|
|
|
|
}else{
|
|
|
|
|
|
model('Chat')->sendMsg(1004,$room_id,$text);
|
2025-10-28 10:41:41 +08:00
|
|
|
|
//查看此房间是否处于pk中
|
|
|
|
|
|
$is_pk = db::name('vs_room_pk')->where(['room_id_a' => $room_id])->where(['status' => ['in',[2,3,4]]])->value('room_id_b') ?? 0;
|
|
|
|
|
|
if(!$is_pk){
|
|
|
|
|
|
$is_pk = db::name('vs_room_pk')->where(['room_id_b' => $room_id])->where(['status' => ['in',[2,3,4]]])->value('room_id_a') ?? 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
if($is_pk > 0){
|
|
|
|
|
|
//如果此房间是pk中,则推送给pk中房间的成员
|
|
|
|
|
|
$text['is_pk'] = 1;
|
2025-10-28 10:42:56 +08:00
|
|
|
|
model('Chat')->sendMsg(1004,$is_pk,$text);
|
2025-10-28 10:41:41 +08:00
|
|
|
|
}
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return ['code' => 1, 'msg' => '下麦成功', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//申请上麦
|
|
|
|
|
|
public function apply_pit($user_id,$room_id,$pit_number = 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
if($room_id <= 0){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '请选择房间', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
//查询房间状态
|
2025-11-12 17:10:17 +08:00
|
|
|
|
$room_info = db::name('vs_room')->where(['id' => $room_id, 'apply_status' => 2])->field('id,room_status,room_up_pit_type,type_id,label_id,step')->find();
|
2025-08-07 20:21:47 +08:00
|
|
|
|
if(!$room_info){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '房间不存在', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
if($room_info['room_status'] != 1){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '房间违规或关闭', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-11-12 17:10:17 +08:00
|
|
|
|
$user_singer = db::name('vs_singer')->where(['user_id' => $user_id, 'status' => 1])->find();
|
|
|
|
|
|
if($room_info['type_id'] == 9 && !$user_singer && $pit_number < 9){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '不是歌手不能上麦', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-10-20 09:59:39 +08:00
|
|
|
|
if($pit_number == 9){
|
|
|
|
|
|
//检查用户是否是房主或主持
|
|
|
|
|
|
$is_room_owner =db::name('vs_room')->where(['id' => $room_id, 'user_id' => $user_id])->field('id')->find();
|
|
|
|
|
|
$is_room_host = db::name('vs_room_host')->where(['room_id' => $room_id, 'user_id' => $user_id,'delete_time' => null])->field('id')->find();
|
|
|
|
|
|
if(!$is_room_owner && !$is_room_host){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '没有权限', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-08-07 20:21:47 +08:00
|
|
|
|
if($pit_number == 10){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '请等待主持抱麦', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//检查是否在坑位上
|
|
|
|
|
|
$pit_infos = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $user_id])->field('id,pit_number')->find();
|
2025-10-20 09:59:39 +08:00
|
|
|
|
|
|
|
|
|
|
if($room_info['label_id'] == 5 && $room_info['step'] != 1 && $pit_number < 9){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '互娱房 此阶段不可此操作', 'data' => null];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//自由麦
|
|
|
|
|
|
if($room_info['room_up_pit_type'] == 2){
|
|
|
|
|
|
if($pit_number > 0){
|
2025-10-20 09:59:39 +08:00
|
|
|
|
if($room_info['label_id'] == 5){//交友(互娱)
|
|
|
|
|
|
if($pit_number == 7 || $pit_number == 8){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '该麦位已锁定了', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
if($pit_number == 9){
|
|
|
|
|
|
if($pit_infos){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '您已上麦', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-08-07 20:21:47 +08:00
|
|
|
|
//查询当前麦位是否有人
|
|
|
|
|
|
$pit_info = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $pit_number])->field('id,user_id,is_lock')->find();
|
|
|
|
|
|
if($pit_info['user_id'] > 0){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '该麦位有人', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
//当前麦位是否正常
|
|
|
|
|
|
if($pit_info['is_lock'] == 1){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '该麦位被锁定', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
2025-10-20 09:59:39 +08:00
|
|
|
|
if($room_info['label_id'] == 5){//交友
|
|
|
|
|
|
$pit_number = $this->getRoomNullPitWithout($room_id, [7,8,9,10]);
|
|
|
|
|
|
}else{
|
2025-08-07 20:21:47 +08:00
|
|
|
|
$pit_number = $this->getRoomNullPitWithout($room_id, [9, 10]);
|
2025-10-20 09:59:39 +08:00
|
|
|
|
}
|
2025-08-07 20:21:47 +08:00
|
|
|
|
|
|
|
|
|
|
if(!$pit_number){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '当前房间没有空麦位', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-10-20 09:59:39 +08:00
|
|
|
|
|
2025-08-07 20:21:47 +08:00
|
|
|
|
//换麦使用
|
|
|
|
|
|
if(isset($pit_infos) && $pit_infos['pit_number'] > 0){
|
2025-10-28 15:18:47 +08:00
|
|
|
|
//9号麦位不允许换
|
|
|
|
|
|
if($pit_infos['pit_number'] == 9){
|
|
|
|
|
|
return ['code' => 0, 'msg' => 'PK中 主持不允许换麦', 'data' => null];
|
|
|
|
|
|
}
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$exchange1 = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $pit_infos['pit_number']])->update([ 'user_id' => 0]);
|
|
|
|
|
|
$exchange = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $pit_number])->update([ 'user_id' => $user_id]);
|
|
|
|
|
|
if(!$exchange || !$exchange1){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '换麦失败', 'data' => null];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$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);
|
|
|
|
|
|
$FromUserInfo['charm'] = db::name('vs_room_user_charm')->where(['user_id' => $user_id,'room_id' => $room_id])->value('charm');
|
2025-11-10 18:55:00 +08:00
|
|
|
|
$Nobility = model('api/Nobility')->getUserNobilityInfo($user_id);
|
|
|
|
|
|
$FromUserInfo['nobility_info'] = $Nobility;
|
|
|
|
|
|
$FromUserInfo['mic_cycle'] = model('api/Decorate')->user_decorate_detail($user_id,3);
|
|
|
|
|
|
$FromUserInfo['nobility_image'] = $Nobility['play_image'];
|
|
|
|
|
|
$FromUserInfo['nickname_color'] = $Nobility['nick_name_color'];
|
2025-10-20 09:59:39 +08:00
|
|
|
|
if($pit_number == 9){
|
|
|
|
|
|
$pit_text = '主持麦';
|
|
|
|
|
|
}elseif ($pit_number == 10) {
|
|
|
|
|
|
$pit_text = '嘉宾麦';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$pit_text = $pit_number . '号麦';
|
|
|
|
|
|
}
|
|
|
|
|
|
$text['text'] = $FromUserInfo['nickname'].' 换到 ' . $pit_text;
|
|
|
|
|
|
$text['FromUserInfo'] = $FromUserInfo;
|
|
|
|
|
|
$text['from_pit_number'] = $pit_infos['pit_number'];
|
|
|
|
|
|
$text['to_pit_number'] = $pit_number;
|
|
|
|
|
|
model('Chat')->sendMsg(1039,$room_id,$text);
|
2025-10-28 10:41:41 +08:00
|
|
|
|
//查看此房间是否处于pk中
|
|
|
|
|
|
$is_pk = db::name('vs_room_pk')->where(['room_id_a' => $room_id])->where(['status' => ['in',[2,3,4]]])->value('room_id_b') ?? 0;
|
|
|
|
|
|
if(!$is_pk){
|
|
|
|
|
|
$is_pk = db::name('vs_room_pk')->where(['room_id_b' => $room_id])->where(['status' => ['in',[2,3,4]]])->value('room_id_a') ?? 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
if($is_pk > 0){
|
|
|
|
|
|
//如果此房间是pk中,则推送给pk中房间的成员
|
|
|
|
|
|
$text['is_pk'] = 1;
|
2025-10-28 10:42:56 +08:00
|
|
|
|
model('Chat')->sendMsg(1039,$is_pk,$text);
|
2025-10-28 10:41:41 +08:00
|
|
|
|
}
|
2025-10-20 09:59:39 +08:00
|
|
|
|
return ['code' => 1, 'msg' => '上麦成功', 'data' => null];
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$ompit = $this->OnPit($user_id,$room_id,$pit_number);//用户上了这个房间的几号麦位
|
|
|
|
|
|
if($ompit['code'] != 1){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '上麦失败', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
return ['code' => 1, 'msg' => '上麦成功', 'data' => null];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
2025-10-20 09:59:39 +08:00
|
|
|
|
}else{//排麦
|
2025-08-07 20:21:47 +08:00
|
|
|
|
if($pit_number == 9){
|
|
|
|
|
|
$host_pit = $this->where(['room_id' => $room_id, 'pit_number' => 9])->value('user_id');
|
2025-10-20 09:59:39 +08:00
|
|
|
|
if ($host_pit > 0) {
|
|
|
|
|
|
if ($host_pit == $user_id) {
|
|
|
|
|
|
return ['code' => 0, 'msg' => '您已在主持麦位', 'data' => null];
|
|
|
|
|
|
} else {
|
|
|
|
|
|
return ['code' => 0, 'msg' => '该麦位有人', 'data' => null];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
2025-10-20 09:59:39 +08:00
|
|
|
|
}else{
|
|
|
|
|
|
if(isset($pit_infos) && $pit_infos['pit_number'] > 0){
|
|
|
|
|
|
$exchange1 = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $pit_infos['pit_number']])->update([ 'user_id' => 0]);
|
|
|
|
|
|
$exchange = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $pit_number])->update([ 'user_id' => $user_id]);
|
|
|
|
|
|
if(!$exchange || !$exchange1){
|
|
|
|
|
|
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);
|
|
|
|
|
|
$FromUserInfo['charm'] = db::name('vs_room_user_charm')->where(['user_id' => $user_id,'room_id' => $room_id])->value('charm');
|
|
|
|
|
|
|
|
|
|
|
|
$text['text'] = $FromUserInfo['nickname'].' 换到主持麦 ';
|
|
|
|
|
|
$text['FromUserInfo'] = $FromUserInfo;
|
|
|
|
|
|
$text['from_pit_number'] = $pit_infos['pit_number'];
|
|
|
|
|
|
$text['to_pit_number'] = $pit_number;
|
|
|
|
|
|
model('Chat')->sendMsg(1039,$room_id,$text);
|
|
|
|
|
|
return ['code' => 1, 'msg' => '上麦成功', 'data' => null];
|
|
|
|
|
|
}else{
|
|
|
|
|
|
//直接上主持麦
|
|
|
|
|
|
$ont = $this->OnPit($user_id,$room_id,$pit_number);//用户上了这个房间的几号麦位
|
|
|
|
|
|
if($ont['code'] != 1){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '上麦失败', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
return ['code' => 1, 'msg' => '上麦成功', 'data' => null];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-10-20 09:59:39 +08:00
|
|
|
|
}else{
|
|
|
|
|
|
//检查用户是否已经申请
|
|
|
|
|
|
$apply_pit_info = db::name('vs_room_pit_apply')->where(['room_id' => $room_id, 'user_id' => $user_id,'apply_type' =>1])->field('id')->find();
|
|
|
|
|
|
if($apply_pit_info){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '请勿重复申请', 'data' => null];
|
|
|
|
|
|
}
|
2025-08-07 20:21:47 +08:00
|
|
|
|
|
2025-10-20 09:59:39 +08:00
|
|
|
|
if(isset($pit_infos) && $pit_infos['pit_number'] > 0){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '用户已在麦上,请先下麦后再申请', 'data' => null];
|
|
|
|
|
|
}
|
2025-08-07 20:21:47 +08:00
|
|
|
|
|
2025-10-20 09:59:39 +08:00
|
|
|
|
//放入等待区
|
|
|
|
|
|
$data = [
|
|
|
|
|
|
'room_id' => $room_id,
|
|
|
|
|
|
'user_id' => $user_id,
|
|
|
|
|
|
'status' => 0,
|
|
|
|
|
|
'apply_type' => 1
|
|
|
|
|
|
];
|
|
|
|
|
|
$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];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//申请上麦列表
|
|
|
|
|
|
public function apply_pit_list($userId,$room_id)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(!$room_id){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '请选择房间', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$where = [
|
|
|
|
|
|
'a.room_id' => $room_id,
|
|
|
|
|
|
'a.status' => 0,
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
$list['regular'] = db::name('vs_room_pit_apply')->alias('a')->join('user b','a.user_id = b.id')
|
|
|
|
|
|
->where($where)->where('a.type',0)->field('a.user_id,a.rank_value,b.nickname,b.avatar')
|
|
|
|
|
|
->order('a.rank_value desc')->select();
|
2025-11-11 16:15:53 +08:00
|
|
|
|
foreach ($list['regular'] as $k => $v){
|
|
|
|
|
|
//查询用户的爵位
|
|
|
|
|
|
$jue_wei = model('Nobility')->getUserNobilityInfo($v['user_id']);
|
|
|
|
|
|
if($jue_wei['power_list']){
|
|
|
|
|
|
foreach ($jue_wei['power_list'] as $k1 => $v1){
|
|
|
|
|
|
if($v1['id'] == 11){
|
|
|
|
|
|
$special = $list['regular'][$k];
|
|
|
|
|
|
unset($list['regular'][$k]);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-11-11 16:20:58 +08:00
|
|
|
|
//数组重组
|
|
|
|
|
|
$list['regular'] = array_values($list['regular']);
|
|
|
|
|
|
|
2025-08-07 20:21:47 +08:00
|
|
|
|
$list['special'] = db::name('vs_room_pit_apply')->alias('a')->join('user b','a.user_id = b.id')
|
|
|
|
|
|
->where($where)->where('a.type',1)->field('a.user_id,a.rank_value,b.nickname,b.avatar')
|
|
|
|
|
|
->order('a.rank_value desc')->select();
|
2025-11-11 16:15:53 +08:00
|
|
|
|
if(!empty($special)){
|
|
|
|
|
|
//把特殊用户放在最前面
|
2025-11-11 16:40:19 +08:00
|
|
|
|
array_unshift($list['special'],$special);
|
2025-11-11 16:15:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
foreach ($list['special'] as $k => $v){
|
|
|
|
|
|
//查询用户的爵位
|
|
|
|
|
|
$juewei = model('Nobility')->getUserNobilityInfo($v['user_id']);
|
|
|
|
|
|
if($juewei){
|
|
|
|
|
|
$v['jue_wei'] = $juewei;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$v['jue_wei'] = [
|
|
|
|
|
|
'level' => 0,
|
|
|
|
|
|
];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//先根据$v['jue_wei'] 下面的level 由大到小排序,再根据$v['rank_value'] 由大到小排序level
|
|
|
|
|
|
usort($list['regular'], function($a, $b) {
|
|
|
|
|
|
if ($a['jue_wei']['level'] == $b['jue_wei']['level']) {
|
|
|
|
|
|
return $b['rank_value'] - $a['rank_value'];
|
|
|
|
|
|
}
|
|
|
|
|
|
return $b['jue_wei']['level'] - $a['jue_wei']['level'];
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-08-07 20:21:47 +08:00
|
|
|
|
$list['gift_info'] = db::name('vs_room_pit_apply_help_gift')->where('room_id',$room_id)->find();
|
|
|
|
|
|
if($list['gift_info']){
|
|
|
|
|
|
$list['gift_info']['gift_name'] = db::name('vs_gift')->where('gid',$list['gift_info']['gift_id'])->value('gift_name');
|
|
|
|
|
|
$list['gift_info']['base_image'] = db::name('vs_gift')->where('gid',$list['gift_info']['gift_id'])->value('base_image');
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return ['code' => 1, 'msg' => '获取成功', 'data' => $list];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//上麦助力
|
|
|
|
|
|
public function help_apply_pit($user_id,$room_id,$apply_id)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(!$room_id){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '请选择房间', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
if(!$apply_id){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '请选择助力用户', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//查询当前房间设置的助力;礼物
|
|
|
|
|
|
$gift_info = db::name('vs_room_pit_apply_help_gift')->where(['room_id' => $room_id])->field('id,gift_id,gift_price')->find();
|
|
|
|
|
|
if(!$gift_info){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '当前房间没有设置助力礼物', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// $res = model('Room')->get_room_label($room_id);
|
|
|
|
|
|
// $room_label = $res['data']['label_id'];
|
|
|
|
|
|
// $room_type = $res['data']['type_id'];
|
|
|
|
|
|
// if($room_label == 1 && ($room_type == 1 || $room_type == 3 || $room_type == 4)){
|
|
|
|
|
|
// $apply_type = 1;
|
|
|
|
|
|
// }elseif ($room_label == 2 && ($room_type == 1 || $room_type == 3 || $room_type == 4)){
|
|
|
|
|
|
// $apply_type = 2;
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
//助力
|
|
|
|
|
|
$data = [
|
|
|
|
|
|
'user_id' => $user_id,
|
|
|
|
|
|
'help_user_id' => $apply_id,
|
|
|
|
|
|
'room_id' => $room_id,
|
|
|
|
|
|
'rank_value' => $gift_info['gift_price'],
|
|
|
|
|
|
// 'apply_type' => $apply_type,
|
|
|
|
|
|
'createtime'=> time(),
|
|
|
|
|
|
];
|
|
|
|
|
|
//开启事务
|
|
|
|
|
|
db::startTrans();
|
|
|
|
|
|
$reslut = db::name('vs_room_pit_apply_help')->insert($data);
|
|
|
|
|
|
if(!$reslut){
|
|
|
|
|
|
db::rollback();
|
|
|
|
|
|
return ['code' => 0, 'msg' => '助力失败!', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
$apply_user = db::name('vs_room_pit_apply')->where(['room_id' => $room_id,'user_id'=>$apply_id,'status'=>0])->find();
|
|
|
|
|
|
if(!$apply_user){
|
|
|
|
|
|
db::rollback();
|
|
|
|
|
|
return ['code' => 0, 'msg' => '用户已上麦或退出', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
$apply_data = [
|
|
|
|
|
|
'type' => 1,
|
|
|
|
|
|
'updatetime'=> time(),
|
|
|
|
|
|
'rank_value'=>$apply_user['rank_value']+$gift_info['gift_price'],
|
|
|
|
|
|
];
|
|
|
|
|
|
$reslut = db::name('vs_room_pit_apply')->where(['id' => $apply_user['id']])->update($apply_data);
|
|
|
|
|
|
if(!$reslut){
|
|
|
|
|
|
db::rollback();
|
|
|
|
|
|
return ['code' => 0, 'msg' => '助力失败,', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
//当前房间主持人麦位是谁
|
|
|
|
|
|
$room_host_id = db::name('vs_room_pit')->where(['room_id' => $room_id,'pit_number' => 9])->value('user_id');
|
|
|
|
|
|
if($room_host_id == 0){
|
|
|
|
|
|
$room_host_id = db::name('vs_room')->where(['id' => $room_id])->value('user_id');
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//走送礼流程(用户,在房间中,给谁(插队上麦给当前主持人),送了什么礼物,多少个)
|
|
|
|
|
|
$give_gift = model('GiveGift')->give_gift($user_id,$room_host_id,$gift_info['gift_id'],1,2,1,$room_id,9);
|
|
|
|
|
|
if($give_gift['code'] != 1){
|
|
|
|
|
|
db::rollback();
|
|
|
|
|
|
return ['code' => 0, 'msg' => $give_gift['msg'].'助力失败。', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
db::commit();
|
|
|
|
|
|
$data = $this -> apply_pit_list($user_id,$room_id);
|
|
|
|
|
|
|
|
|
|
|
|
return ['code' => 1, 'msg' => '助力成功', 'data' => $data['data']];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//同意上麦
|
|
|
|
|
|
public function agree_pit($user_id,$room_id,$apply_id)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(!$room_id){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '请选择房间', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
if(!$apply_id){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '请选择申请用户', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$res = model('Room')->get_room_label($room_id);
|
|
|
|
|
|
$room_label = $res['data']['label_id'];
|
|
|
|
|
|
$room_type = $res['data']['type_id'];
|
|
|
|
|
|
if($room_label == 1 && ($room_type == 1 || $room_type == 3 || $room_type == 4)){
|
|
|
|
|
|
$apply_type = 1;//聊天
|
|
|
|
|
|
}elseif ($room_label == 2 && ($room_type == 1 || $room_type == 3 || $room_type == 4)){
|
|
|
|
|
|
$apply_type = 2;//K歌
|
|
|
|
|
|
}elseif($room_type == 2){
|
|
|
|
|
|
$apply_type = 3;//拍卖
|
2025-10-20 09:59:39 +08:00
|
|
|
|
}elseif($room_type == 7){
|
|
|
|
|
|
$apply_type = 7;//交友
|
2025-11-25 17:10:19 +08:00
|
|
|
|
}elseif($room_type == 10){
|
|
|
|
|
|
$apply_type = 10;//签约
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}else{
|
|
|
|
|
|
$apply_type = 1;//聊天
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// if($apply_type == 1){
|
|
|
|
|
|
// //判断当前用户是否是房主或在主持麦位上的主持
|
|
|
|
|
|
// $is_room_owner = model('Room')->where(['id' => $room_id, 'user_id' => $user_id])->field('id')->find();
|
|
|
|
|
|
// $is_room_host = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $user_id,'pit_number' => 9])->field('id')->find();
|
|
|
|
|
|
// if(!$is_room_owner && !$is_room_host){
|
|
|
|
|
|
// return ['code' => 0, 'msg' => '您不是房主 或 不在主持位,没有权限操作', 'data' => null];
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }else{
|
|
|
|
|
|
// $is_room_host = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $user_id,'pit_number' => 9])->field('id')->find();
|
|
|
|
|
|
// if(!$is_room_host){
|
|
|
|
|
|
// return ['code' => 0, 'msg' => '您不在主持位,没有权限操作', 'data' => null];
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$to_user = explode(',',$apply_id);
|
|
|
|
|
|
|
|
|
|
|
|
if(count($to_user) >= 1){
|
|
|
|
|
|
if($apply_type == 1) {
|
|
|
|
|
|
$i = 0;
|
|
|
|
|
|
foreach ($to_user as &$value) {
|
|
|
|
|
|
//查询当前空麦位
|
|
|
|
|
|
$empty_pit = $this->getRoomNullPitWithout($room_id, [9, 10]);
|
|
|
|
|
|
if (!$empty_pit) {
|
|
|
|
|
|
//退出循环 并终止循环
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
//查询是否已经上麦
|
|
|
|
|
|
$is_on_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $value])->field('id')->find();
|
|
|
|
|
|
if ($is_on_pit) {
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
//删除他的申请上麦
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$reslut = db::name('vs_room_pit_apply')->where(['user_id' => $value, 'room_id' => $room_id, 'status' => 0])->delete();
|
2025-08-07 20:21:47 +08:00
|
|
|
|
if (!$reslut) {
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
$on = $this->OnPit($value, $room_id, $empty_pit);//用户上了这个房间的几号麦位
|
|
|
|
|
|
if ($on['code'] != 1) {
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
$i++;
|
|
|
|
|
|
//1-禁麦位,2-清空消息,3-清空魅力值,4-加入黑名单,5-踢出房间,6-关闭麦克风,7-申请上麦,8-同意上麦,9-拒绝上麦,10-点歌,11-开启PK',
|
|
|
|
|
|
model('Room')->room_operation_record($user_id,$room_id,8,$value,$empty_pit);
|
|
|
|
|
|
}
|
|
|
|
|
|
$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' => $i . '位用户上麦成功', 'data' => null];
|
|
|
|
|
|
}elseif($apply_type == 2){
|
|
|
|
|
|
if(db::name('vs_room_pit_simulate')->where(['room_id' => $room_id])->count() >= 20){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '暂无空麦位', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
foreach ($to_user as &$value) {
|
|
|
|
|
|
if(db::name('vs_room_pit_simulate')->where(['room_id' => $room_id])->count() >= 20){
|
|
|
|
|
|
//结束循环
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
//删除他的申请上麦
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$reslut = db::name('vs_room_pit_apply')->where(['user_id' => $value, 'room_id' => $room_id, 'status' => 0])->delete();
|
2025-08-07 20:21:47 +08:00
|
|
|
|
if (!$reslut) {
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
$ompit = db::name('vs_room_pit_simulate')->insert(
|
|
|
|
|
|
[
|
|
|
|
|
|
'room_id' => $room_id,
|
|
|
|
|
|
'user_id' => $value,
|
|
|
|
|
|
'status' => 1,//1-K歌模式虚假上麦
|
|
|
|
|
|
]
|
|
|
|
|
|
);//用户上了这个房间的麦位
|
|
|
|
|
|
if (!$ompit) {
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
//聊天室推送系统消息
|
|
|
|
|
|
$FromUserInfo = db::name('user')->where('id',$value)->field('id as user_id,nickname,avatar,sex')->find();
|
|
|
|
|
|
$FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($value);//财富图标
|
|
|
|
|
|
$FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($value);//魅力图标
|
|
|
|
|
|
$FromUserInfo['dress'] = model('Decorate')->user_decorate_detail($value,1);
|
|
|
|
|
|
$text['text'] = $FromUserInfo['nickname'].' 上麦了 ';
|
|
|
|
|
|
$text['FromUserInfo'] = $FromUserInfo;
|
|
|
|
|
|
$text['pit_number'] = 9999;
|
|
|
|
|
|
model('Chat')->sendMsg(1003,$room_id,$text);
|
|
|
|
|
|
//1-禁麦位,2-清空消息,3-清空魅力值,4-加入黑名单,5-踢出房间,6-关闭麦克风,7-申请上麦,8-同意上麦,9-拒绝上麦,10-点歌,11-开启PK',
|
|
|
|
|
|
model('Room')->room_operation_record($user_id,$room_id,8,$value);
|
|
|
|
|
|
}
|
|
|
|
|
|
$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];
|
|
|
|
|
|
}elseif($apply_type == 3){
|
2025-08-13 10:13:01 +08:00
|
|
|
|
if(count($to_user) >= 2){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '拍卖模式下只能一个人上麦', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
//拍卖房当前到哪一步了
|
|
|
|
|
|
$step = db::name('vs_room_auction')->where(['room_id' => $room_id])->order('auction_id desc')->value('status');
|
|
|
|
|
|
if($step == 2){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '拍卖已经开始', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
//拍卖位上有人吗
|
|
|
|
|
|
$paimai_user = Cache::get('auction_user_'.$room_id);
|
|
|
|
|
|
if($paimai_user){
|
|
|
|
|
|
//有人就让他下麦
|
|
|
|
|
|
return ['code' => 0, 'msg' => '拍卖位上已有人,请先抱对方下麦', 'data' => null];
|
|
|
|
|
|
}
|
2025-10-20 09:59:39 +08:00
|
|
|
|
// $i = 0;
|
|
|
|
|
|
// foreach ($to_user as &$value) {
|
|
|
|
|
|
// $i++;
|
|
|
|
|
|
$value = $to_user[0];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
//删除他的申请上麦
|
|
|
|
|
|
$reslut = db::name('vs_room_pit_apply')->where(['user_id' => $value, 'room_id' => $room_id, 'status' => 0])->delete();
|
2025-10-20 09:59:39 +08:00
|
|
|
|
// if (!$reslut) {
|
|
|
|
|
|
// continue;
|
|
|
|
|
|
// }
|
|
|
|
|
|
Cache::set('auction_user_'.$room_id,$value);
|
2025-08-07 20:21:47 +08:00
|
|
|
|
//聊天室推送系统消息
|
|
|
|
|
|
$FromUserInfo = db::name('user')->where('id',$value)->field('id as user_id,nickname,avatar,sex')->find();
|
|
|
|
|
|
$FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($value);//财富图标
|
|
|
|
|
|
$FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($value);//魅力图标
|
|
|
|
|
|
$FromUserInfo['dress'] = model('Decorate')->user_decorate_detail($value,1);
|
|
|
|
|
|
$text['text'] = $FromUserInfo['nickname'].' 上了拍卖位 ';
|
|
|
|
|
|
$text['FromUserInfo'] = $FromUserInfo;
|
|
|
|
|
|
$text['pit_number'] = 888;
|
|
|
|
|
|
$text['type'] = 1 ;
|
|
|
|
|
|
model('Chat')->sendMsg(1022,$room_id,$text);
|
2025-10-20 09:59:39 +08:00
|
|
|
|
|
2025-08-07 20:21:47 +08:00
|
|
|
|
//1-禁麦位,2-清空消息,3-清空魅力值,4-加入黑名单,5-踢出房间,6-关闭麦克风,7-申请上麦,8-同意上麦,9-拒绝上麦,10-点歌,11-开启PK',
|
|
|
|
|
|
model('Room')->room_operation_record($user_id,$room_id,8,$value);
|
2025-10-20 09:59:39 +08:00
|
|
|
|
// if($i >= 1){
|
|
|
|
|
|
// break;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
$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];
|
|
|
|
|
|
}elseif($apply_type == 7) {
|
|
|
|
|
|
$i = 0;
|
|
|
|
|
|
foreach ($to_user as &$value) {
|
|
|
|
|
|
//查询当前空麦位
|
|
|
|
|
|
$empty_pit = $this->getRoomNullPitWithout($room_id, [7,8,9,10]);
|
|
|
|
|
|
if (!$empty_pit) {
|
|
|
|
|
|
//退出循环 并终止循环
|
2025-08-07 20:21:47 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
2025-10-20 09:59:39 +08:00
|
|
|
|
//查询是否已经上麦
|
|
|
|
|
|
$is_on_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $value])->field('id')->find();
|
|
|
|
|
|
if ($is_on_pit) {
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
//删除他的申请上麦
|
|
|
|
|
|
$reslut = db::name('vs_room_pit_apply')->where(['user_id' => $value, 'room_id' => $room_id, 'status' => 0])->delete();
|
|
|
|
|
|
if (!$reslut) {
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
$on = $this->OnPit($value, $room_id, $empty_pit);//用户上了这个房间的几号麦位
|
|
|
|
|
|
if ($on['code'] != 1) {
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
$i++;
|
|
|
|
|
|
//1-禁麦位,2-清空消息,3-清空魅力值,4-加入黑名单,5-踢出房间,6-关闭麦克风,7-申请上麦,8-同意上麦,9-拒绝上麦,10-点歌,11-开启PK',
|
|
|
|
|
|
model('Room')->room_operation_record($user_id,$room_id,8,$value,$empty_pit);
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
$count = db::name('vs_room_pit_apply')->where(['room_id' => $room_id,'status' => 0])->count();
|
2025-10-20 09:59:39 +08:00
|
|
|
|
//申请上麦推送消息(数据重置)
|
2025-08-07 20:21:47 +08:00
|
|
|
|
$text = [
|
|
|
|
|
|
'text' => '申请上麦',
|
|
|
|
|
|
'count' => $count
|
|
|
|
|
|
];
|
|
|
|
|
|
model('Chat')->sendMsg(1034,$room_id,$text);
|
2025-10-20 09:59:39 +08:00
|
|
|
|
return ['code' => 1, 'msg' => $i . '位用户上麦成功', 'data' => null];
|
2025-11-25 17:10:19 +08:00
|
|
|
|
}elseif($apply_type == 10){
|
|
|
|
|
|
//(签约房:1号麦位是 被签约者【徒弟麦】,2号麦位是【师傅麦位】3、4、5是老板麦位,9号是主持位)
|
|
|
|
|
|
$uid = $to_user[0];
|
|
|
|
|
|
//查询是否已经上麦
|
|
|
|
|
|
$on_pit_number = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $uid])->value('pit_number');
|
|
|
|
|
|
if ($on_pit_number == 1) {
|
|
|
|
|
|
return ['code' => 0, 'msg' => '用户已在麦上', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
//查询1号麦位是否有人
|
|
|
|
|
|
$is_one_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => 1])->value('user_id');
|
|
|
|
|
|
if ($is_one_pit) {
|
|
|
|
|
|
return ['code' => 0, 'msg' => '麦位上有人', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
//制造上麦信息
|
|
|
|
|
|
$FromUserInfo = db::name('user')->where('id',$uid)->field('id as user_id,nickname,avatar,sex')->find();
|
|
|
|
|
|
$FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($uid);//财富图标
|
|
|
|
|
|
$FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($uid);//魅力图标
|
|
|
|
|
|
$FromUserInfo['dress'] = model('Decorate')->user_decorate_detail($uid,1);
|
|
|
|
|
|
$FromUserInfo['charm'] = db::name('vs_room_user_charm')->where(['user_id' => $uid,'room_id' => $room_id])->value('charm');
|
|
|
|
|
|
$Nobility = model('api/Nobility')->getUserNobilityInfo($uid);
|
|
|
|
|
|
$FromUserInfo['mic_cycle'] = model('api/Decorate')->user_decorate_detail($uid,3);
|
|
|
|
|
|
$FromUserInfo['nobility_image'] = $Nobility['play_image'];
|
|
|
|
|
|
$FromUserInfo['nickname_color'] = $Nobility['nick_name_color'];
|
|
|
|
|
|
//推送告诉前端上了几号麦位
|
|
|
|
|
|
$text['text'] = $FromUserInfo['nickname'].' 上了签约麦位';
|
|
|
|
|
|
$text['FromUserInfo'] = $FromUserInfo;
|
|
|
|
|
|
$text['pit_number'] = 1;
|
|
|
|
|
|
//聊天室推送系统消息
|
|
|
|
|
|
model('Chat')->sendMsg(1003,$room_id,$text);
|
|
|
|
|
|
|
|
|
|
|
|
//删除他的申请上麦
|
|
|
|
|
|
db::name('vs_room_pit_apply')->where(['user_id' => $uid, 'room_id' => $room_id, 'status' => 0])->delete();
|
|
|
|
|
|
$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);
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return ['code' => 0, 'msg' => '请选择申请上麦的用户', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//清空上麦申请
|
|
|
|
|
|
public function clear_apply_pit_list($userId,$room_id,$apply_id = 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(!$room_id){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '请选择房间', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
//判断当前用户是否是房主或主持
|
|
|
|
|
|
$is_room_owner = model('Room')->where(['id' => $room_id, 'user_id' => $userId])->field('id')->find();
|
|
|
|
|
|
$is_room_host = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $userId,'pit_number' => 9])->field('id')->find();
|
|
|
|
|
|
if(!$is_room_owner && !$is_room_host){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '您不是房主 或 不在主持麦,没有权限操作', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
// $res = model('Room')->get_room_label($room_id);
|
|
|
|
|
|
// $room_label = $res['data']['label_id'];
|
|
|
|
|
|
// $room_type = $res['data']['type_id'];
|
|
|
|
|
|
// if($room_label == 1 && ($room_type == 1 || $room_type == 3 || $room_type == 4)){
|
|
|
|
|
|
// $apply_type = 1;
|
|
|
|
|
|
// }elseif ($room_label == 2 && ($room_type == 1 || $room_type == 3 || $room_type == 4)){
|
|
|
|
|
|
// $apply_type = 2;
|
|
|
|
|
|
// }else{
|
|
|
|
|
|
// $apply_type = 1;
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
if($apply_id){
|
|
|
|
|
|
$to_user = explode(',',$apply_id);
|
|
|
|
|
|
if(count($to_user) >= 1){
|
|
|
|
|
|
foreach ($to_user as &$value){
|
|
|
|
|
|
$where['user_id'] = $value;
|
|
|
|
|
|
$where['room_id'] = $room_id;
|
|
|
|
|
|
$where['status'] = 0;
|
|
|
|
|
|
// $where['apply_type'] = $apply_type;
|
|
|
|
|
|
db::name('vs_room_pit_apply')->where($where)->delete();
|
|
|
|
|
|
//1-禁麦位,2-清空消息,3-清空魅力值,4-加入黑名单,5-踢出房间,6-关闭麦克风,7-申请上麦,8-同意上麦,9-拒绝上麦,10-点歌,11-开启PK',
|
|
|
|
|
|
model('Room')->room_operation_record($userId,$room_id,9,$value);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$where['room_id'] = $room_id;
|
|
|
|
|
|
$where['status'] = 0;
|
|
|
|
|
|
// $where['apply_type'] = $apply_type;
|
|
|
|
|
|
db::name('vs_room_pit_apply')->where($where)->delete();
|
|
|
|
|
|
}
|
|
|
|
|
|
$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 set_room_pit_apply_help_gift($user_id,$room_id,$gift_id,$gift_price)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(!$room_id){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '请选择房间', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
if(!$gift_id){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '请选择礼物', 'data' => null];
|
|
|
|
|
|
}
|
2025-11-18 18:04:37 +08:00
|
|
|
|
//礼物不能是CP礼物
|
|
|
|
|
|
$cp_gift_ids = explode(',', get_system_config_value('cp_gift_id'));
|
|
|
|
|
|
if (in_array($gift_id, $cp_gift_ids)) {
|
|
|
|
|
|
return ['code' => 0, 'msg' => '礼物不能是CP礼物,请重新选择', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-08-07 20:21:47 +08:00
|
|
|
|
if(!$gift_price){
|
|
|
|
|
|
$gift_price = db::name('vs_gift')->where(['gid' => $gift_id])->value('gift_price');
|
|
|
|
|
|
}
|
|
|
|
|
|
//判断当前用户是否是房主或在主持麦位上的主持
|
|
|
|
|
|
$is_room_owner = model('Room')->where(['id' => $room_id, 'user_id' => $user_id])->field('id')->find();
|
|
|
|
|
|
$is_room_host = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $user_id,'pit_number' => 9])->field('id')->find();
|
|
|
|
|
|
if(!$is_room_owner && !$is_room_host){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '您不是房主 或 不在主持位,没有权限操作', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
$room_pit_apply_help_gift = db::name('vs_room_pit_apply_help_gift')->where(['room_id' => $room_id])->find();
|
|
|
|
|
|
if($room_pit_apply_help_gift) {
|
|
|
|
|
|
$data = [
|
|
|
|
|
|
'user_id' => $user_id,
|
|
|
|
|
|
'gift_id' => $gift_id,
|
|
|
|
|
|
'gift_price' => $gift_price,
|
|
|
|
|
|
'updatetime' => time(),
|
|
|
|
|
|
];
|
|
|
|
|
|
$reslut = db::name('vs_room_pit_apply_help_gift')->where(['room_id' => $room_id])->update($data);
|
|
|
|
|
|
if(!$reslut){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '操作失败', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$data = [
|
|
|
|
|
|
'user_id' => $user_id,
|
|
|
|
|
|
'room_id' => $room_id,
|
|
|
|
|
|
'gift_id' => $gift_id,
|
|
|
|
|
|
'gift_price' => $gift_price,
|
|
|
|
|
|
'createtime' => time(),
|
|
|
|
|
|
];
|
|
|
|
|
|
$reslut = db::name('vs_room_pit_apply_help_gift')->insert($data);
|
|
|
|
|
|
if(!$reslut){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '操作失败', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return ['code' => 1, 'msg' => '操作成功', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//修改房间上麦模式
|
|
|
|
|
|
public function change_room_up_pit_type($user_id,$room_id)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(!$room_id){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '请选择房间', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//判断当前用户是否有权限
|
|
|
|
|
|
$owner = db::name('vs_room')->where(['id' => $room_id, 'user_id' => $user_id])->field('id')->find();
|
|
|
|
|
|
$host = db::name('vs_room_host')->where(['room_id' => $room_id, 'user_id' => $user_id,'delete_time' => null])->find();
|
|
|
|
|
|
if(!$owner && !$host){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '没有权限操作', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$pit_type = db::name('vs_room')->where(['id' => $room_id])->value('room_up_pit_type');
|
|
|
|
|
|
if($pit_type == 1){
|
|
|
|
|
|
//房间模式
|
|
|
|
|
|
$room_type = db::name('vs_room')->where(['id' => $room_id])->value('type_id');
|
2025-11-25 17:10:19 +08:00
|
|
|
|
if($room_type == 2 || $room_type == 10){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '该房间模式下,不允许切换上麦模式', 'data' => null];
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
$type = 2;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$type = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
$reslut = db::name('vs_room')->where(['id' => $room_id])->update(['room_up_pit_type' => $type]);
|
|
|
|
|
|
if(!$reslut){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '操作失败', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
if($pit_type == 1){
|
|
|
|
|
|
//申请上麦的全部下麦
|
|
|
|
|
|
model('RoomPit')->clear_apply_pit_list($user_id, $room_id);
|
|
|
|
|
|
}
|
|
|
|
|
|
//推送消息给前端
|
|
|
|
|
|
$text['room_up_pit_type'] = $type;
|
|
|
|
|
|
model('Chat')->sendMsg(1014,$room_id,$text);
|
|
|
|
|
|
return ['code' => 1, 'msg' => '操作成功', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//抱麦
|
|
|
|
|
|
//1-抱麦 2-踢下去
|
|
|
|
|
|
public function host_user_pit($user_id,$room_id,$pit_number,$accept_user_id,$type)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(!$room_id){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '请选择房间', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(!$accept_user_id){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '请选择用户', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if($type == 1){//抱麦
|
2025-11-25 17:10:19 +08:00
|
|
|
|
$room_type = db::name('vs_room')->where(['id' => $room_id])->value('type_id');
|
2025-11-27 14:57:19 +08:00
|
|
|
|
if($room_type == 7 && ($pit_number == 7 || $pit_number == 8)){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '互娱房 不能上7、8号麦位', 'data' => null];
|
|
|
|
|
|
}
|
2025-11-25 17:10:19 +08:00
|
|
|
|
if($room_type == 10){
|
|
|
|
|
|
//$pit_number 只能是1、3、4、5
|
|
|
|
|
|
if(!in_array($pit_number, [1,3,4,5])){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '签约房抱麦位只能是1、3、4、5', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
//麦位上否有人
|
|
|
|
|
|
$on_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $pit_number])->value('user_id');
|
|
|
|
|
|
if($on_pit){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '麦位有人', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
//制造上麦信息
|
|
|
|
|
|
$FromUserInfo = db::name('user')->where('id',$accept_user_id)->field('id as user_id,nickname,avatar,sex,market_value')->find();
|
|
|
|
|
|
$FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($accept_user_id);//财富图标
|
|
|
|
|
|
$FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($accept_user_id);//魅力图标
|
|
|
|
|
|
$FromUserInfo['dress'] = model('Decorate')->user_decorate_detail($accept_user_id,1);
|
|
|
|
|
|
$FromUserInfo['charm'] = db::name('vs_room_user_charm')->where(['user_id' => $accept_user_id,'room_id' => $room_id])->value('charm');
|
|
|
|
|
|
$Nobility = model('api/Nobility')->getUserNobilityInfo($accept_user_id);
|
|
|
|
|
|
$FromUserInfo['mic_cycle'] = model('api/Decorate')->user_decorate_detail($accept_user_id,3);
|
|
|
|
|
|
$FromUserInfo['nobility_image'] = $Nobility['play_image'];
|
|
|
|
|
|
$FromUserInfo['nickname_color'] = $Nobility['nick_name_color'];
|
|
|
|
|
|
//推送告诉前端上了几号麦位
|
|
|
|
|
|
if($pit_number == 1){
|
|
|
|
|
|
$pit_text = '签约麦';
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$pit_text = '老板麦';
|
|
|
|
|
|
}
|
|
|
|
|
|
$text['text'] = $FromUserInfo['nickname'].' 上了 ' . $pit_text;
|
|
|
|
|
|
$text['FromUserInfo'] = $FromUserInfo;
|
|
|
|
|
|
$text['pit_number'] = $pit_number;
|
|
|
|
|
|
//聊天室推送系统消息
|
|
|
|
|
|
model('Chat')->sendMsg(1003,$room_id,$text);
|
|
|
|
|
|
return ['code' => 1, 'msg' => '操作成功', 'data' => null];
|
|
|
|
|
|
}
|
2025-10-20 09:59:39 +08:00
|
|
|
|
if($pit_number == 10){
|
|
|
|
|
|
$on_9_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => 9])->value('user_id');
|
|
|
|
|
|
if($on_9_pit != $user_id){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '请等待麦上主持抱麦', 'data' => null];
|
|
|
|
|
|
}
|
2025-08-07 20:21:47 +08:00
|
|
|
|
}
|
2025-10-20 09:59:39 +08:00
|
|
|
|
//房主
|
|
|
|
|
|
$owner = db::name('vs_room')->where(['id' => $room_id, 'user_id' => $user_id])->field('id')->find();
|
|
|
|
|
|
$host = db::name('vs_room_host')->where(['room_id' => $room_id, 'user_id' => $user_id,'delete_time' => null])->find();
|
|
|
|
|
|
if(!$owner && !$host){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '没有权限操作', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-08-07 20:21:47 +08:00
|
|
|
|
if(!$pit_number){
|
|
|
|
|
|
$room_type = db::name('vs_room')->where(['id' => $room_id])->value('type_id');
|
|
|
|
|
|
if($room_type == 2){
|
|
|
|
|
|
if(Cache::get('auction_user_'.$room_id)){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '拍卖位上已有人,请先抱对方下麦', 'data' => null];
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$FromUserInfo = db::name('user')->where('id',$accept_user_id)->field('id as user_id,nickname,avatar,sex')->find();
|
|
|
|
|
|
$FromUserInfo['icon'][0] = model('api/UserData')->user_wealth_icon($accept_user_id);//财富图标
|
|
|
|
|
|
$FromUserInfo['icon'][1] = model('api/UserData')->user_charm_icon($accept_user_id);//魅力图标
|
|
|
|
|
|
$FromUserInfo['dress'] = model('api/Decorate')->user_decorate_detail($accept_user_id,1);
|
|
|
|
|
|
$FromUserInfo['charm'] = db::name('vs_room_user_charm')->where(['room_id' => $room_id, 'user_id' => $accept_user_id])->value('charm');
|
|
|
|
|
|
//推送告诉前端上了几号麦位
|
|
|
|
|
|
$text['text'] = $FromUserInfo['nickname'].' 上了拍卖位 ';
|
|
|
|
|
|
$text['FromUserInfo'] = $FromUserInfo;
|
|
|
|
|
|
$text['pit_number'] = $pit_number;
|
|
|
|
|
|
$text['type'] = 1 ;
|
|
|
|
|
|
//聊天室推送系统消息
|
|
|
|
|
|
model('api/Chat')->sendMsg(1022,$room_id,$text);
|
|
|
|
|
|
Cache::set('auction_user_'.$room_id,$accept_user_id);
|
|
|
|
|
|
return ['code' => 1, 'msg' => '操作成功', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//查询当前空麦位
|
|
|
|
|
|
$empty_pit = $this->getRoomNullPitWithout($room_id, [9, 10]);
|
|
|
|
|
|
if(!$empty_pit){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '没有空麦位', 'data' => null];
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$pit_number = $empty_pit;
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
if($pit_number == 888){
|
|
|
|
|
|
$FromUserInfo = db::name('user')->where('id',$accept_user_id)->field('id as user_id,nickname,avatar,sex')->find();
|
|
|
|
|
|
$FromUserInfo['icon'][0] = model('api/UserData')->user_wealth_icon($accept_user_id);//财富图标
|
|
|
|
|
|
$FromUserInfo['icon'][1] = model('api/UserData')->user_charm_icon($accept_user_id);//魅力图标
|
|
|
|
|
|
$FromUserInfo['dress'] = model('api/Decorate')->user_decorate_detail($accept_user_id,1);
|
|
|
|
|
|
$FromUserInfo['charm'] = db::name('vs_room_user_charm')->where(['room_id' => $room_id, 'user_id' => $accept_user_id])->value('charm');
|
|
|
|
|
|
//推送告诉前端上了几号麦位
|
|
|
|
|
|
$text['text'] = $FromUserInfo['nickname'].' 上了拍卖位 ';
|
|
|
|
|
|
$text['FromUserInfo'] = $FromUserInfo;
|
|
|
|
|
|
$text['pit_number'] = $pit_number;
|
|
|
|
|
|
$text['type'] = 1 ;
|
|
|
|
|
|
//聊天室推送系统消息
|
|
|
|
|
|
model('api/Chat')->sendMsg(1022,$room_id,$text);
|
|
|
|
|
|
Cache::set('auction_user_'.$room_id,$accept_user_id);
|
|
|
|
|
|
return ['code' => 1, 'msg' => '操作成功', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
//判断当前麦位是否为空
|
|
|
|
|
|
$where['room_id'] = $room_id;
|
|
|
|
|
|
$where['pit_number'] = $pit_number;
|
|
|
|
|
|
$pit_user_id = db::name('vs_room_pit')->where($where)->value('user_id');
|
|
|
|
|
|
if($pit_user_id > 0){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '麦位上有人', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
$where['room_id'] = $room_id;
|
|
|
|
|
|
$where['pit_number'] = $pit_number;
|
|
|
|
|
|
$where['is_lock'] = 0;
|
|
|
|
|
|
$pit_info = db::name('vs_room_pit')->where($where)->find();
|
|
|
|
|
|
if(!$pit_info){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '麦位不存在或已锁麦', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
$where['user_id'] = $accept_user_id;
|
|
|
|
|
|
unset($where['pit_number']);
|
|
|
|
|
|
$accept_pit_info = db::name('vs_room_pit')->where($where)->find();
|
|
|
|
|
|
if($accept_pit_info){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '该用户已上麦', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$onpit = $this ->OnPit($accept_user_id,$room_id,$pit_number);
|
|
|
|
|
|
if($onpit['code'] != 1){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '操作失败', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
//删除申请上麦
|
|
|
|
|
|
model('RoomPit')->clear_apply_pit_list($user_id, $room_id, $accept_user_id);
|
|
|
|
|
|
}else{//2-踢下去
|
|
|
|
|
|
//判断权限
|
|
|
|
|
|
if($pit_number != 888){
|
|
|
|
|
|
if(!model('QuanXian')->quan_xian($user_id, $accept_user_id, $room_id)){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '您没有权限操作', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-11-10 14:40:50 +08:00
|
|
|
|
//获取被踢用户的爵位信息
|
2025-11-11 11:18:18 +08:00
|
|
|
|
// $user_jue_info = model('api/Nobility')->getUserNobilityInfo($accept_user_id);
|
|
|
|
|
|
// foreach ($user_jue_info['power_list'] as $key => $value){
|
|
|
|
|
|
// if($value['id'] == 7){
|
|
|
|
|
|
// return ['code' => 0, 'msg' => '该用户已是'.$user_jue_info['nobility_name'].'爵位,不能踢', 'data' => null];
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
2025-08-07 20:21:47 +08:00
|
|
|
|
|
|
|
|
|
|
if(!$pit_number || $pit_number == 888){
|
|
|
|
|
|
$roomInfo = db::name('vs_room')->where('id',$room_id)->field('label_id,type_id')->find();
|
2025-10-20 09:59:39 +08:00
|
|
|
|
if($roomInfo['type_id'] == 2 || Cache::get('auction_user_'.$room_id)){//拍卖
|
2025-08-07 20:21:47 +08:00
|
|
|
|
//查询当前是否处于拍卖中
|
|
|
|
|
|
$auctioning = db::name('vs_room_auction')
|
|
|
|
|
|
->where(['room_id' => $room_id, 'status' => 2, 'user_id' => $accept_user_id])->find();
|
|
|
|
|
|
if($auctioning){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '该用户正在拍卖中', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
//查询当前用户是否正在拍卖中
|
|
|
|
|
|
if($pit_number == 888 && Cache::get('auction_user_'.$room_id) != $accept_user_id){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '拍卖用户不是当前操作用户', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
//清除缓存
|
|
|
|
|
|
Cache::rm('auction_user_'.$room_id);
|
|
|
|
|
|
$FromUserInfo = db::name('user')->where('id',$accept_user_id)->field('id as user_id,nickname,avatar,sex')->find();
|
|
|
|
|
|
$FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($accept_user_id);//财富图标
|
|
|
|
|
|
$FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($accept_user_id);//魅力图标
|
|
|
|
|
|
//推送告诉前端下了几号麦位
|
|
|
|
|
|
$text['text'] = $FromUserInfo['nickname'].' 下了拍卖位 ';
|
|
|
|
|
|
$text['FromUserInfo'] = $FromUserInfo;
|
|
|
|
|
|
$text['pit_number'] = $pit_number;
|
|
|
|
|
|
$text['type'] = 2 ;
|
|
|
|
|
|
model('api/Chat')->sendMsg(1022,$room_id,$text);
|
|
|
|
|
|
}
|
|
|
|
|
|
if($roomInfo['label_id'] == 2 && ($roomInfo['type_id'] == 1 || $roomInfo['type_id'] == 4 || $roomInfo['type_id'] == 3)){
|
|
|
|
|
|
$res = model('RoomSong')->down_kpit($accept_user_id, $room_id);
|
|
|
|
|
|
if($res['code'] != 1){
|
|
|
|
|
|
return ['code' => 0, 'msg' => $res['msg'], 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
2025-10-20 09:59:39 +08:00
|
|
|
|
$step = db::name('vs_room')->where(['id' => $room_id, 'type_id' => 7])->value('step');
|
|
|
|
|
|
if($step && $step != 1 && $pit_number < 9){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '交友房 此阶段不可操作', 'data' => null];
|
|
|
|
|
|
}
|
2025-08-07 20:21:47 +08:00
|
|
|
|
$where['room_id'] = $room_id;
|
|
|
|
|
|
$where['pit_number'] = $pit_number;
|
|
|
|
|
|
$where['user_id'] = $accept_user_id;
|
|
|
|
|
|
$accept_pit_info = db::name('vs_room_pit')->where($where)->find();
|
|
|
|
|
|
if(!$accept_pit_info){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '该用户已不在'.$pit_number.'麦', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
$dow = $this ->DownPit($accept_user_id,$room_id,$pit_number);
|
|
|
|
|
|
if($dow['code'] != 1){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '操作失败', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return ['code' => 1, 'msg' => '操作成功', 'data' => null];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|