diff --git a/application/api/model/Friend.php b/application/api/model/Friend.php index d57ea60..b9b3663 100644 --- a/application/api/model/Friend.php +++ b/application/api/model/Friend.php @@ -80,24 +80,25 @@ class Friend extends Model } //交友结束(结束牵手良缘) - public function end_friend($user_id,$room_id,$id){ - // 判断用户是否在主持麦 - $host = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => 9,'user_id' => $user_id])->find(); - if(!$host){ - return ['code' => 0, 'msg' => '没有权限操作', 'data' => null]; - } - + public function end_friend($user_id,$room_id,$id,$is_system = 0){ if (!$id || !$room_id) { return ['code' => 0, 'msg' => '参数有误!', 'data' => null]; } + if($is_system == 0){ + // 判断用户是否在主持麦 + $host = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => 9,'user_id' => $user_id])->find(); + if(!$host){ + return ['code' => 0, 'msg' => '没有权限操作', 'data' => null]; + } + } + // 获取心动值最高的 $originalPairs = db::name('vs_user_friending_heart') ->where(['room_id'=>$room_id,'friend_id'=>$id ,'status' =>1]) ->order('heart_value DESC')->find(); $friend_heart_value = get_system_config_value('friend_heart_value'); if($originalPairs && $originalPairs['heart_value'] >= $friend_heart_value){ - $return['is_cp'] = 1;//卡关系 $step = 3;//结束进入牵手良缘卡关系 //心动值达到伐值 返回用户信息与关系列表 $return['user1_id'] =$originalPairs['user1_id']; @@ -109,8 +110,6 @@ class Friend extends Model $return['heart_value'] = $originalPairs['heart_value']; $return['heart_id'] = $originalPairs['id']; }else{ - $return = []; - $return['is_cp'] = 0;//不卡关系 $step = 1;//结束下一轮 //所有人下麦 $on_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['<',7],'user_id' => ['<>',0]])->select(); @@ -119,6 +118,7 @@ class Friend extends Model model('RoomPit')->DownPit($pit['user_id'], $room_id,$pit['pit_number']); } } + $return = null; } //结束交友游戏 @@ -128,6 +128,7 @@ class Friend extends Model //推送给前端消息 $text['text'] = $step == 1 ? '交友结束' : '牵手良缘'; $text['step'] = $step;//1 等待邂逅 2 心动连线 3 牵手良缘 + $text['friend_user'] = $return; model('api/Chat')->sendMsg(1049,$room_id,$text); // 修改当前交友阶段 db::name('vs_room')->where(['id' => $room_id])->setField('step', $step); @@ -157,6 +158,20 @@ class Friend extends Model if($room_id['code'] != 1){ return ['code' => 0, 'msg' => 'cp电影房创建失败,请联系管理员','data' => null]; } + + //记录小房间 + $datda = [ + 'room_id' => $room_id['data'], + 'relation_id' => $friending_config_id, + 'user_id' => $user1, + 'user_id1' => $user2, + 'time_day' => get_system_config_value('friend_heart_time_day'), + 'createtime' => time(), + 'status' => 1, + 'type' => 1 + ]; + db::name('vs_room_cp_movie')->insert($datda); + if($room_id['data']){ $text['text'] = '交友结束并创建房间'; $text['relation_name'] = $relation; diff --git a/application/api/model/GiveGift.php b/application/api/model/GiveGift.php index b982270..4ba0394 100644 --- a/application/api/model/GiveGift.php +++ b/application/api/model/GiveGift.php @@ -573,6 +573,24 @@ class GiveGift extends Model Db::name('vs_room')->where(['id'=>$from_id,'apply_status'=>2])->setInc('hot_value',$gift_totalaa); Db::name('vs_room')->where(['id'=>$from_id,'apply_status'=>2])->setInc('today_hot_value',$gift_totalaa); + $roomtype = Db::name('vs_room')->where(['id' => $from_id])->value('type_id'); + if($roomtype == 6){ + //推送消息 交友房创建的私密房 倒计时增加 + $value = db::name('vs_room_cp_movie')->where('room_id', $from_id)->where('type',1) + ->value('time_day'); + if($value){ + db::name('vs_room_cp_movie')->where('room_id', $from_id)->where('type',1) + ->setInc('time_day', $gift_total); + $text111 = [ + 'room_id' => $from_id, + 'time_day' => db::name('vs_room_cp_movie')->where('room_id', $from_id)->where('type',1)->value('time_day'), + 'text' => '房间结束时间变化' + ]; + //聊天室推送系统消息 + model('Chat')->sendMsg(1052,$from_id,$text111); + } + } + Db::commit(); return ['code' => 1, 'msg' => '送礼成功', 'data' => ['gift_total' => $gift_total]]; } diff --git a/application/cron/controller/PerformPerSecond.php b/application/cron/controller/PerformPerSecond.php index f45c5f8..e1d43d7 100644 --- a/application/cron/controller/PerformPerSecond.php +++ b/application/cron/controller/PerformPerSecond.php @@ -33,6 +33,9 @@ class PerformPerSecond // echo "提现云账号订单状态查询:\n"; // $this->withdraw_order_status(); // echo "\n"; + echo "清除交友房过期未结束数据:\n"; + $this->clearFriendingEndRoom(); + echo "\n"; } @@ -169,106 +172,25 @@ 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(); + $room_list = db::name('vs_room')->where(['type_id'=>7])->whereIn('step', [2,3]) + ->field(['id','room_name','room_cover','step'])->select(); if(!empty($room_list)){ foreach ($room_list as $room) { //查询交友信息 - $friending_info = UserFriending::where('room_id', $room['id'])->where('status', 1)->orderBy('id', 'desc')->first(); + $friending_info = db::name('vs_user_friending')->where('room_id', $room['id'])->where('status', 1)->order('id', 'desc')->find(); 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']."成功 "; + if($friending_info['end_time'] <= time()){ + model('Friend')->end_friend(0,$room['id'],$friending_info['id'],1); } } } } //清除私密小屋过期数据 - $where = [ - ['state', '=', 1], - ['label_id', '=', 200], - ]; - $room_list = UserRoom::where($where) - ->select(['id','room_name','pid_room_id','private_room_end_time'])->get()->toArray(); + $room_list = db::name('vs_room_cp_movie')->where(['type'=>1,'time_day' =>['<',time()]])->select(); 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']."退出成功"; - } - } + model('Friend')->outRoom(0,$room['room_id']); } } }