diff --git a/application/api/model/Sign.php b/application/api/model/Sign.php index 3a15911..af70568 100644 --- a/application/api/model/Sign.php +++ b/application/api/model/Sign.php @@ -21,27 +21,24 @@ class Sign extends Model return ['code' => 0, 'msg' => '没有权限操作', 'data' => null]; } //修改房间状态 - $sign_time = db::name('vs_room_sign')->where('room_id',$room_id)->order('id desc')->value('sign_time') + 1; - $result = db::name('vs_room')->where('id',$room_id)->update([ - 'sign_type' => 1, -// 'sign_time' => $sign_time, + db::name('vs_room')->where('id',$room_id)->update([ + 'sign_type' => 1,//签约房状态:0-等待开始,1-进行中 'updatetime' => time() ]); $res = db::name('vs_room_sign')->insertGetId([ 'room_id' => $room_id, 'sign_type' => 1, - 'sign_time' => $sign_time, 'end_time' => time() + 60 * 5,//签约时长5分钟 'sign_user_id' => $sign_user_id, 'createtime' => time() ]); - if($result){ + if($res){ //给前端推送数据 $text['text'] = '开始签约'; $text['sign_id'] = $res; model('api/Chat')->sendMsg(1090,$room_id,$text); - return ['code' => 1, 'msg' => '成功','data' => $sign_time]; + return ['code' => 1, 'msg' => '成功','data' => $res]; }else{ return ['code' => 0, 'msg' => '网络错误,请重试','data' => null]; } @@ -351,76 +348,87 @@ class Sign extends Model //获取房间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号位上的用户前一个麦位上是否有用户 + if($on_pit_user && $on_pit_user['user_id'] && $on_pit_user['user_id'] != $user_id){ + //2号位有其他用户,需要处理该用户 + //获取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']]); + //之前位置有人,直接下麦 + 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); + //推送换麦消息 + $this->sendPitChangeMessage($on_pit_user['user_id'], $room_id, 2, $on_pit_user['before_pit_number']); } } - }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']); + //处理当前用户上2号位 + if($user_id){ + //查询当前用户是否已在麦上 + $user_pit_info = db::name('vs_room_pit') + ->where(['room_id' => $room_id, 'user_id' => $user_id]) + ->field('pit_number')->find(); + + if($user_pit_info && $user_pit_info['pit_number']){ + //用户已在麦上,换到2号位 + //记录原麦位信息 + db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => 2]) + ->update(['user_id' => $user_id]); + + db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $user_pit_info['pit_number']]) + ->update(['before_pit_number' => $user_pit_info['pit_number'], 'pit_number' => 0]); + + //推送换麦消息 + $this->sendPitChangeMessage($user_id, $room_id, $user_pit_info['pit_number'], 2); + } else { + //用户不在麦上,直接上2号麦 + model('api/RoomPit')->OnPit($user_id, $room_id, 2); + } + } + } else { + //下麦 - 在麦位上的用户全部下麦 + $on_pit_users = db::name('vs_room_pit') + ->where(['room_id' => $room_id, 'status' => 1, 'user_id' => ['>', 0], 'pit_number' => ['<', 3]]) + ->select(); + + if($on_pit_users){ + foreach ($on_pit_users as $pit_user){ + model('RoomPit')->DownPit($pit_user['user_id'], $room_id, $pit_user['pit_number']); } } } return true; } + /* + * 发送麦位变更消息 + */ + private function sendPitChangeMessage($user_id, $room_id, $from_pit, $to_pit){ + $userInfo = db::name('user')->where('id', $user_id)->field('id as user_id,nickname,avatar,sex')->find(); + $userInfo['icon'][0] = model('UserData')->user_wealth_icon($user_id);//财富图标 + $userInfo['icon'][1] = model('UserData')->user_charm_icon($user_id);//魅力图标 + $userInfo['dress'] = model('Decorate')->user_decorate_detail($user_id, 1); + $userInfo['charm'] = db::name('vs_room_user_charm')->where(['user_id' => $user_id, 'room_id' => $room_id])->value('charm'); + $nobility = model('api/Nobility')->getUserNobilityInfo($user_id); + $userInfo['nobility_info'] = $nobility; + $userInfo['mic_cycle'] = model('api/Decorate')->user_decorate_detail($user_id, 3); + $userInfo['nobility_image'] = $nobility['play_image']; + $userInfo['nickname_color'] = $nobility['nick_name_color']; + + $text['text'] = $userInfo['nickname'].' 换到老板位'; + $text['FromUserInfo'] = $userInfo; + $text['from_pit_number'] = $from_pit; + $text['to_pit_number'] = $to_pit; + model('Chat')->sendMsg(1039, $room_id, $text); + } + /* * 签约延时