From 6d75474d17185d35d497d78f771b756ee053cdb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Thu, 27 Nov 2025 18:00:27 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=BE=E7=BA=A6=20=E7=9B=B8=E5=85=B3=20?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/controller/Sign.php | 32 ++++++----- application/api/model/Room.php | 4 +- application/api/model/RoomPit.php | 2 +- application/api/model/Sign.php | 84 +++++++++++++++++++++++++++++ 4 files changed, 107 insertions(+), 15 deletions(-) diff --git a/application/api/controller/Sign.php b/application/api/controller/Sign.php index 6ced483..3bc83ce 100644 --- a/application/api/controller/Sign.php +++ b/application/api/controller/Sign.php @@ -10,7 +10,8 @@ class Sign extends BaseCom //签约出价价格列表 public function sign_coin_list() { - $user_id = input('user_id', 0);//签约麦 用户id + $sign_id = input('sign_id', 0);//场次id + $user_id = db::name('vs_room_sign')->where('id', $sign_id)->value('sign_user_id'); //获取当前用户的身价 $market_value = db::name('user')->where('id', $user_id)->value('market_value'); $sign_market_value = get_system_config_value('sign_market_value'); @@ -40,14 +41,16 @@ class Sign extends BaseCom //签约出价 public function sign_coin() { - $user_id = input('user_id', 0); + $sign_id = input('sign_id', 0);//场次id $sign_value = input('sign_value', 0); - $room_id = input('room_id', 0); - $sign_time = input('sign_id', 0); - if ($sign_value <= 0 || $user_id <= 0 || $room_id <= 0) { + if ($sign_value <= 0 || $sign_id <= 0) { return ['code' => 0, 'msg' => '参数错误']; } - $reslut = model('Sign')->sign_coin($this->uid, $room_id, $user_id, $sign_value,$sign_time); + $sign = db::name('vs_room_sign')->where('id', $sign_id)->field('room_id,sign_user_id')->find(); + $user_id = $sign['sign_user_id']; + $room_id = $sign['room_id']; + + $reslut = model('Sign')->sign_coin($this->uid, $room_id, $user_id, $sign_value,$sign_id); return V($reslut['code'], $reslut['msg'], $reslut['data']); } @@ -56,13 +59,15 @@ class Sign extends BaseCom //签约结束 public function end_sign() { - $sign_time = input('sign_id', 0); - $room_id = input('room_id', 0); - $user_id = input('user_id', 0); - if ($sign_time <= 0 || $room_id <= 0) { + $sign_id = input('sign_id', 0); + if ($sign_id <= 0) { return ['code' => 0, 'msg' => '参数错误']; } - $reslut = model('Sign')->end_sign($this->uid, $room_id, $sign_time,$user_id); + $sign = db::name('vs_room_sign')->where('id', $sign_id)->field('room_id,sign_user_id')->find(); + $user_id = $sign['sign_user_id']; + $room_id = $sign['room_id']; + + $reslut = model('Sign')->end_sign($this->uid, $room_id, $sign_id,$user_id); return V($reslut['code'], $reslut['msg'], $reslut['data']); } @@ -71,10 +76,11 @@ class Sign extends BaseCom public function sign_delay() { $sign_id = input('sign_id', 0); - $room_id = input('room_id', 0); - if ($sign_id <= 0 || $room_id <= 0) { + if ($sign_id <= 0) { return ['code' => 0, 'msg' => '参数错误']; } + $sign = db::name('vs_room_sign')->where('id', $sign_id)->field('room_id,sign_user_id')->find(); + $room_id = $sign['room_id']; $reslut = model('Sign')->sign_delay($this->uid, $room_id, $sign_id); return V($reslut['code'], $reslut['msg'], $reslut['data']); } diff --git a/application/api/model/Room.php b/application/api/model/Room.php index c3ff53a..0c01d1e 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -631,7 +631,7 @@ class Room extends Model $user_pit = 0; $pit_list = []; $cp_users = null; - if($room['type_id'] == 1 || $room['type_id'] == 3 || $room['type_id'] == 4 || $room['type_id'] == 7 || $room['type_id'] == 8 || $room['type_id'] == 9) {//1点唱,3男神,4女神 + if($room['type_id'] == 1 || $room['type_id'] == 3 || $room['type_id'] == 4 || $room['type_id'] == 7 || $room['type_id'] == 8 || $room['type_id'] == 9 || $room['type_id'] == 10) {//1点唱,3男神,4女神 if($room['label_id'] == 2){//K歌 $song = $this->get_song_info($room_id,$user_id); $song_list = $song['song_user_info']; @@ -929,6 +929,7 @@ class Room extends Model $room_sign = db::name('vs_room_sign')->where('room_id', $room_id)->order('id desc')->find(); if($room_sign){ $sign_info = [ + 'sign_id' => $room_sign['id'], 'sign_status' => $room_sign['sign_type'], 'sign_day' => $room_sign['sign_day'], 'current_body_value' => db::name('user')->where('id', $room_sign['sign_user_id'])->value('market_value'), @@ -936,6 +937,7 @@ class Room extends Model ]; }else{ $sign_info = [ + 'sign_id' => 0, 'sign_status' => 0, 'sign_day' => 0, 'current_body_value' => 0, diff --git a/application/api/model/RoomPit.php b/application/api/model/RoomPit.php index 4919fd2..b393a02 100644 --- a/application/api/model/RoomPit.php +++ b/application/api/model/RoomPit.php @@ -172,7 +172,7 @@ class RoomPit extends Model 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]); + $down = $this->where(['room_id' => $room_id, 'user_id' => $user_id])->update(['user_id' => 0, 'before_pit_number' => 0]); if(!$down){ return ['code' => 0, 'msg' => '下麦失败', 'data' => null]; } diff --git a/application/api/model/Sign.php b/application/api/model/Sign.php index 7af830b..3a15911 100644 --- a/application/api/model/Sign.php +++ b/application/api/model/Sign.php @@ -127,6 +127,8 @@ class Sign extends Model } //提交数据 db::commit(); + //处理麦位 + $this->pit_number($room_id,$sign_user['user_id'],1); //给前端推送数据 $FromUserInfo = db::name('user')->where('id',$sign_user['user_id'])->field('id as user_id,nickname,avatar,sex')->find(); $FromUserInfo['icon'][0] = model('api/UserData')->user_wealth_icon($sign_user['user_id']);//财富图标 @@ -333,11 +335,93 @@ class Sign extends Model $text['ToUserInfo'] = $ToUserInfo; $text['sign_value'] = $max_sign_user['sign_value']; model('api/Chat')->sendMsg(1092,$room_id,$text); + //处理麦位 + $this->pit_number($room_id,0,0); return ['code' => 1, 'msg' => '操作成功', 'data' => null]; } + /* + * 麦位处理 + * + */ + public function pit_number($room_id,$user_id = 0,$type = 0){ + if($type == 1){//上麦或者换麦 + //获取房间2号位上的用户 + $on_pit_user = db::name('vs_room_pit') + ->where(['room_id' => $room_id,'pit_number' => 2])->field('before_pit_number,user_id')->find(); + //处理2号位 + if($on_pit_user['user_id']){ + //获取2号位上的用户前一个麦位上是否有用户 + $before_pit_number = db::name('vs_room_pit') + ->where(['room_id' => $room_id,'pit_number' => $on_pit_user['before_pit_number']])->value('user_id'); + //有用户 就下麦 + if($before_pit_number){ + model('api/RoomPit')->DownPit($on_pit_user['user_id'], $room_id,2); + }else{//无用户 换麦 + db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $on_pit_user['before_pit_number']])->update([ 'user_id' => $on_pit_user['user_id']]); + + $FromUserInfo = db::name('user')->where('id',$on_pit_user['user_id'])->field('id as user_id,nickname,avatar,sex')->find(); + $FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($on_pit_user['user_id']);//财富图标 + $FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($on_pit_user['user_id']);//魅力图标 + $FromUserInfo['dress'] = model('Decorate')->user_decorate_detail($on_pit_user['user_id'],1); + $FromUserInfo['charm'] = db::name('vs_room_user_charm')->where(['user_id' => $on_pit_user['user_id'],'room_id' => $room_id])->value('charm'); + $Nobility = model('api/Nobility')->getUserNobilityInfo($on_pit_user['user_id']); + $FromUserInfo['nobility_info'] = $Nobility; + $FromUserInfo['mic_cycle'] = model('api/Decorate')->user_decorate_detail($on_pit_user['user_id'],3); + $FromUserInfo['nobility_image'] = $Nobility['play_image']; + $FromUserInfo['nickname_color'] = $Nobility['nick_name_color']; + + $text['text'] = $FromUserInfo['nickname'].' 换到老板位'; + $text['FromUserInfo'] = $FromUserInfo; + $text['from_pit_number'] = 2; + $text['to_pit_number'] = $on_pit_user['before_pit_number']; + model('Chat')->sendMsg(1039,$room_id,$text); + } + }else{ + //判断是否在麦位上 + $on_pit = db::name('vs_room_pit')->where(['room_id' => $room_id,'user_id'=>$user_id])->value('pit_number'); + if($on_pit){ + db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $on_pit]) + ->update([ 'before_pit_number' => $on_pit,'pit_number' => 0]); + db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => 2]) + ->update(['user_id'=>$user_id]); + + $FromUserInfo = db::name('user')->where('id',$on_pit_user['user_id'])->field('id as user_id,nickname,avatar,sex')->find(); + $FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($on_pit_user['user_id']);//财富图标 + $FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($on_pit_user['user_id']);//魅力图标 + $FromUserInfo['dress'] = model('Decorate')->user_decorate_detail($on_pit_user['user_id'],1); + $FromUserInfo['charm'] = db::name('vs_room_user_charm')->where(['user_id' => $on_pit_user['user_id'],'room_id' => $room_id])->value('charm'); + $Nobility = model('api/Nobility')->getUserNobilityInfo($on_pit_user['user_id']); + $FromUserInfo['nobility_info'] = $Nobility; + $FromUserInfo['mic_cycle'] = model('api/Decorate')->user_decorate_detail($on_pit_user['user_id'],3); + $FromUserInfo['nobility_image'] = $Nobility['play_image']; + $FromUserInfo['nickname_color'] = $Nobility['nick_name_color']; + + $text['text'] = $FromUserInfo['nickname'].' 换到老板位'; + $text['FromUserInfo'] = $FromUserInfo; + $text['from_pit_number'] = $on_pit; + $text['to_pit_number'] = 2; + model('Chat')->sendMsg(1039,$room_id,$text); + }else{ + model('api/RoomPit')->OnPit($user_id, $room_id, 2); + } + } + + }else{//下麦 + //在麦位上的用户 全部下麦 + $on_pit = db::name('vs_room_pit')->where(['room_id' => $room_id,'status' => 1,'user_id'=>['>',0],'pit_number' => ['<',3]])->select(); + if($on_pit){ + foreach ($on_pit as $v){ + model('RoomPit')->DownPit($v['user_id'], $room_id,$v['pit_number']); + } + } + } + return true; + } + + /* * 签约延时 * @param $user_id 用户id