diff --git a/application/api/model/Room.php b/application/api/model/Room.php index 290eb59..ccf1d27 100644 --- a/application/api/model/Room.php +++ b/application/api/model/Room.php @@ -1088,6 +1088,8 @@ class Room extends Model $apply_type = 1; }elseif ($room_label == 2 && ($room_type == 1 || $room_type == 3 || $room_type == 4)){ $apply_type = 2; + }elseif ($room_type == 7){//交友房 再开始阶段在麦位上不下麦 + $apply_type = 3; } if($apply_type == 1){ @@ -1113,7 +1115,17 @@ class Room extends Model $text['pit_number'] = ''; model('api/Chat')->sendMsg(1004,$room_id,$text); } - }else{ + }elseif ($apply_type == 3){ + $roomInfoStep = db::name('vs_room')->where(['id' => $room_id])->value('step'); + if($roomInfoStep == 1){ + //在麦位上 移除用户 + $room_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $user_id])->find(); + if (isset($room_pit)) { + model('api/RoomPit')->DownPit($user_id, $room_id, $room_pit['pit_number']); + } + } + } + else{ //在麦位上 移除用户 $room_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $user_id])->find(); if (isset($room_pit)) { diff --git a/application/cron/controller/PerformPerSecond.php b/application/cron/controller/PerformPerSecond.php index 75416bb..f45c5f8 100644 --- a/application/cron/controller/PerformPerSecond.php +++ b/application/cron/controller/PerformPerSecond.php @@ -162,4 +162,116 @@ class PerformPerSecond } } } + + + + //清除交友房过期未结束数据 + public function clearFriendingEndRoom() + { + //清除交友房过期数据 + $room_list = UserRoom::where(['label_id'=>108])->whereIn('step', [2,3]) + ->select(['id','room_name','cover_picture','step','status'])->get()->toArray(); + if(!empty($room_list)){ + foreach ($room_list as $room) { + //查询交友信息 + $friending_info = UserFriending::where('room_id', $room['id'])->where('status', 1)->orderBy('id', 'desc')->first(); + if($friending_info){ + //判断结束时间是否到期 + if($friending_info['end_time'] < time()){ + //获取心动值 + $originalPairs = app('model_user_friending_heart') + ->where(['room_id' => $room['id'], 'status' => 1,'contact_end_time'=>0,'friend_id'=>$friending_info['id']]) + ->orderBy('heart_value', 'desc') + ->first(); + $is_end = 1; + if($originalPairs && $originalPairs['heart_value'] >= 9999){ + //结束时间超过五分钟 + if($room['step'] ==3 && (time() - $friending_info['end_time']) > 300 ){ + //卡无关系 + //剩余天数 10000心动值等于3天 + $friendendtime = time() + $originalPairs['heart_value'] / 10000 * 3 * 86400; + //更新关系结束时间 + app('model_user_friending_heart')->where(['id'=>$originalPairs['id']])->update(['contact_end_time'=>$friendendtime,'friend_config_id'=>1,'status' => 3]); + }else{ + if($room['status']==1){ + //给客户端推送-让客户端调用拉起卡关系接口 + $push = new PushService(0, $room['id']); + $push->friendGameOver(['room_id'=>$room['id'],'friend_id'=>$friending_info['id'],'heart_value'=>$originalPairs['heart_value'],'user1_id'=>$originalPairs['user1_id'],'user2_id'=>$originalPairs['user2_id']]); + $push->stage($room['id'],3);//1 等待邂逅 2 心动连线 3 牵手良缘 + // 修改当前交友阶段 (用原相亲房已进行到第几步字段-step) + UserRoom::where(['id' => $room['id']])->update(['step' => 3,'status'=>2]); + $is_end = 0; + } + continue; + } + } + for($i=1;$i<=6;$i++){ + $pit_info = app('model_room_pit')->getRoomPitUser($room['id'], $i); + if($pit_info){ + if($pit_info->user_id){ + RedisService::setPit($room['id'], $pit_info->pit_number, 0); + app('model_room_pit')->getDownPit($room['id'],$pit_info->user_id, $pit_info->pit_number); + } + } + } + //结束交友游戏 + if($is_end){ + UserFriending::where(['id' => $friending_info['id']])->update(['status' => 2]); + // 修改当前交友阶段 (用原相亲房已进行到第几步字段-step) + UserRoom::where(['id' => $room['id']])->update(['step' => 1,'status'=>1]); + } + $push = new PushService(0, $room['id']); + $push->stage($room['id'],1);//1 等待邂逅 2 心动连线 3 牵手良缘 + echo "结束交友游戏房 ".$room['room_name'].$room['id']."成功 "; + } + } + } + } + //清除私密小屋过期数据 + $where = [ + ['state', '=', 1], + ['label_id', '=', 200], + ]; + $room_list = UserRoom::where($where) + ->select(['id','room_name','pid_room_id','private_room_end_time'])->get()->toArray(); + if(!empty($room_list)){ + foreach ($room_list as $room) { + if($room['private_room_end_time']< time()){ + $heart = app('model_user_friending_heart')->where(['room_id' => $room['pid_room_id'], 'status' => 3,'contact_end_time'=>0])->get(); + foreach ($heart as $value) { + //剩余天数 10000心动值等于3天 + $friendendtime = time() + $value['heart_value'] / 10000 * 3 * 86400; + //更新关系结束时间 + app('model_user_friending_heart')->where(['id'=>$value['id']])->update(['contact_end_time'=>$friendendtime]); + //退出房间 + $push = new PushService(0, $room['id']); + $user_room_join = app('model_room_join')->where(['room_id' => $room['id']])->select(); + foreach ($user_room_join as $k=>$v){ + //退出房间 + app('repo_room')->quitRoomAction($room['id'],$v['user_id'],3); + } + $num = UserRoom::where(['label_id'=>200,'state'=>1,'pid_room_id'=>$room['pid_room_id']])->count(); + $push->blackRoom($room['pid_room_id'],$user_room_join,2,$num-1,$value['id'],$value['heart_value']); + //注销房间 +// $emchat = new Emchat(); +// $emchat->deleteChatRoom($room['chatrooms']); + UserRoom::where(["id"=>$room['id']])->update(['state'=>0]); + //查找这一对是否有cp(送大金表) + $user1 = min($value['user1_id'], $value['user2_id']); + $user2 = max($value['user1_id'], $value['user2_id']); + $cp = D('user_cp')->where(['user1_id'=>$user1,'user2_id'=>$user2])->find(); + if($cp){ + //给cp表加心动值 + $cp['heart_value'] += $value['heart_value']; + D('user_cp')->where(['id'=>$cp['id']])->save(['heart_value'=>$cp['heart_value']]); + } + + echo "私密小屋".$room['room_name']." ID:".$room['id']."退出成功"; + } + } + } + } + } + + } \ No newline at end of file