where(['room_id' => $room_id, 'pit_number' => 9,'user_id' => $user_id])->find(); if(!$host){ return ['code' => 0, 'msg' => '没有权限操作', 'data' => null]; } $room_info = db::name('vs_room')->field('id,step,room_status')->where(['id' => $room_id,'room_status' =>1])->find(); if (!$room_info) { return ['code' => 0, 'msg' => '房间不存在!', 'data' => null]; } if($room_info['step'] == 2 || $room_info['step'] == 3){ return ['code' => 0, 'msg' => '交友正在进行中!', 'data' => null]; } //在麦位上的用户 $pit_user = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['<',7],'user_id' => ['<>',0]])->count(); if($pit_user >= 2) { $data['room_id'] = $room_id; $data['end_time'] = time() + get_system_config_value('friend_time') * 60; $data['status'] = 1; $id = db::name('vs_user_friending')->insertGetId($data); if (!$id) { return ['code' => 0, 'msg' => '操作失败!', 'data' => null]; } //修改房间状态 db::name('vs_room')->where(['id' => $room_id])->update(['step' => 2]); //推送给前端消息 $text['text'] = '交友开始'; $text['step'] = 2; model('api/Chat')->sendMsg(1039,$room_id,$text); return ['code' => 1, 'msg' => '操作成功!', 'data' => ['friend_id' => $id]]; }else{ return ['code' => 0, 'msg' => '不具备开始条件!', 'data' => null]; } } //延时 public function delay($user_id,$room_id,$id,$delay_times){ // 判断用户是否在主持麦 $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]; } if (!$id || !$room_id || $delay_times <= 0) { return ['code' => 0, 'msg' => '参数有误!', 'data' => null]; } //修改结束 时间 $res = db::name('vs_user_friending')->where('id', $id)->update(['end_time' => ['exp', 'end_time+' . $delay_times * 60]]); if(!$res){ return ['code' => 0, 'msg' => '操作失败!', 'data' => null]; } //推送延时 $text['text'] = '延时'; $text['end_time'] = db::name('vs_user_friending')->where('id', $id)->value('end_time'); model('api/Chat')->sendMsg(1040,$room_id,$text); return ['code' => 1, 'msg' => '操作成功!', 'data' => null]; } //交友结束(结束牵手良缘) 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]; } if (!$id || !$room_id) { return ['code' => 0, 'msg' => '参数有误!', 'data' => null]; } // 获取心动值最高的 $originalPairs = db::name('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']; $return['user1_avatar'] = db::name('user')->where(['id'=>$originalPairs['user1_id']])->value('avatar'); $return['user1_nickname'] = db::name('user')->where(['id'=>$originalPairs['user1_id']])->value('nickname'); $return['user2_id'] =$originalPairs['user2_id']; $return['user2_avatar'] = db::name('user')->where(['id'=>$originalPairs['user2_id']])->value('avatar'); $return['user2_nickname'] = db::name('user')->where(['id'=>$originalPairs['user2_id']])->value('nickname'); $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(); if($on_pit){ foreach ($on_pit as $pit){ model('RoomPit')->DownPit($pit['user_id'], $room_id,$pit['pit_number']); } } } //结束交友游戏 if($step == 1){ db::name('vs_user_friending')->where(['id' => $id])->update(['status' => 2]); } //推送给前端消息 $text['text'] = $step == 1 ? '交友结束' : '牵手良缘'; $text['step'] = $step;//1 等待邂逅 2 心动连线 3 牵手良缘 model('api/Chat')->sendMsg(1039,$room_id,$text); // 修改当前交友阶段 db::name('vs_room')->where(['id' => $room_id])->setField('step', $step); return ['code' => 1, 'msg' => '操作成功!', 'data' => $return]; } //心动值超过配置值 创建关系 public function createRelation($user_id,$room_id,$friend_id,$user1_id,$user2_id,$friending_config_id){ if (!$user1_id || !$user2_id || !$friend_id || !$friending_config_id || !$room_id || !$user_id) { return ['code' => 0, 'msg' => '参数有误!', 'data' => null]; } $user1 = min($user1_id, $user2_id); $user2 = max($user1_id, $user2_id); $friending_heart = db::name('user_friending_heart') ->where(['room_id'=>$room_id,'friend_id'=>$friend_id ,'user1_id' =>$user1,'user2_id' => $user2])->find(); $originalPairs = db::name('user_friending_heart') ->where(['id'=>$friending_heart['id']]) ->save(['status' => 3,'friend_config_id' =>$friending_config_id]); if ($originalPairs) { $relation = db::name('vs_relation')->where('id',$friending_config_id)->value('name'); if($friending_heart['heart_value'] >= get_system_config_value('friend_heart_create_room')){ //创建小房间 $room_id = model('api/Room')->user_create_room($user1,'的电影房',get_system_config_value('web_site').'/data/avatar/head_pic.png','交友房产生的一次性房间',7); if($room_id['code'] != 1){ return ['code' => 0, 'msg' => 'cp电影房创建失败,请联系管理员','data' => null]; } if($room_id['data']){ $text['text'] = '交友结束并创建房间'; $text['relation_name'] = $relation; $text['room_id'] = $room_id['data'];//前端用来让用户跳转的房间id $text['user1_id'] = $user1;//进小房间的用户id $text['user2_id'] = $user2;//进小房间的用户id model('api/Chat')->sendMsg(1041,$room_id,$text); } }else{ $text['text'] = '交友结束未创建房间'; $text['relation_name'] = $relation; model('api/Chat')->sendMsg(1041,$room_id,$text); } // 修改当前交友阶段 db::name('vs_room')->where(['id' => $room_id])->setField('step', 1); //所有人下麦 $on_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['<',7],'user_id' => ['<>',0]])->select(); if($on_pit){ foreach ($on_pit as $pit){ model('RoomPit')->DownPit($pit['user_id'], $room_id,$pit['pit_number']); } } $shijian = floor($friending_heart['heart_value']/get_system_config_value('friend_heart_value')) * get_system_config_value('friend_heart_times'); $friendendtime = time() + $shijian * 3600; //更新关系结束时间 db::name('user_friending_heart')->where(['id'=>$friending_heart['id']])->update(['contact_end_time' => $friendendtime]); //关系增加时间 $room_auction = model('RoomAuction')->room_auction_create_or_add($user1_id,$user2_id,$friending_config_id,$shijian*3600,0); //推送给前端消息 $text['text'] = '交友结束'; $text['step'] = 1;//1 等待邂逅 2 心动连线 3 牵手良缘 model('api/Chat')->sendMsg(1039,$room_id,$text); return ['code' => 1, 'msg' => '创建关系成功', 'data' => ['id' => $id,'end_time' =>get_system_config_value('friend_room_timea')]]; } else { return ['code' => 0, 'msg' => '创建关系失败!', 'data' => null]; } } //退出私密房间 public function outRoom($user_id,$room_id){ //查询在房间的用户 $users = db::name('vs_room_visitor')->where(['room_id'=>$room_id])->select(); //退出房间 foreach ($users as $v){ //退出房间 model('Room')->quit_room($v['user_id'], $room_id,$v['user_id']); } //注销房间 db::name('vs_room')->where(['id'=>$room_id])->update(['room_status'=>3]); return ['code' => 1, 'msg' => '退出成功!', 'data' => null]; } //房间内送礼 /* * @param $uid 用户id * @param $to_uid 接收用户id组 * @param $gift_id 礼物id * @param $gift_num 礼物数量 * @param $from_type 来源 1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏 5系统任务 6-cp房间送礼 * @param $type 1金币购买 2送背包礼物 * @param $room_id 房间id * @param $pit_number 坑位 */ public function room_give_gift($uid, $to_uid, $gift_id, $gift_num, $from_type, $type, $room_id, $pit_number,$heart_id) { $res = model('GiveGift')->give_gift($uid, $to_uid, $gift_id, $gift_num,$from_type,$type, $room_id,$pit_number); if($res['code'] != 1){ return $res; } //送礼成功后续操作 // } }