交友房 非等待邂逅 状态 退出房间不下麦

This commit is contained in:
2025-08-21 15:22:03 +08:00
parent efb352c985
commit 82c81df8c1
2 changed files with 125 additions and 1 deletions

View File

@@ -1088,6 +1088,8 @@ class Room extends Model
$apply_type = 1; $apply_type = 1;
}elseif ($room_label == 2 && ($room_type == 1 || $room_type == 3 || $room_type == 4)){ }elseif ($room_label == 2 && ($room_type == 1 || $room_type == 3 || $room_type == 4)){
$apply_type = 2; $apply_type = 2;
}elseif ($room_type == 7){//交友房 再开始阶段在麦位上不下麦
$apply_type = 3;
} }
if($apply_type == 1){ if($apply_type == 1){
@@ -1113,7 +1115,17 @@ class Room extends Model
$text['pit_number'] = ''; $text['pit_number'] = '';
model('api/Chat')->sendMsg(1004,$room_id,$text); 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(); $room_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $user_id])->find();
if (isset($room_pit)) { if (isset($room_pit)) {

View File

@@ -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']."退出成功";
}
}
}
}
}
} }