5, '2' => 10, '3' => 15, '4' => 20, '5' => 25, '6' => 30, ]; //麦位时长列表 public function get_pit_duration_list(){ foreach ($this->pitDuration as $key => $value) { $list[] = [ 'time' => $value, 'time_str' => $value.'分钟', ]; } return ['code' => 1, 'msg' => '获取成功', 'data' => $list]; } //设置房间麦位时长 public function set_pit_duration($room_id,$time){ $room = db::name('vs_room')->where(['id' => $room_id, 'delete_time' => 0, 'room_status' => 1])->find(); if(!$room){ return ['code' => 0, 'msg' => '房间不存在', 'data' => null]; } $room_data = db::name('vs_room_bar')->where('id',$room['id'])->find(); if($room_data){ if($room_data['pit_time'] != $time){ db::name('vs_room_bar')->where('id',$room_id)->update(['pit_time' => $time]); } }else{ db::name('vs_room_bar')->insert([ 'id' => $room_id, 'pit_time' => $time, ]); } //推送麦位时长 return ['code' => 1, 'msg' => '成功', 'data' => null]; } //上麦选择礼物 public function join_pit_choose_gift($user_id,$room_id,$gift_id){ $pit_gift = db::name('vs_room_bar_pit_gift')->where(['room_id' => $room_id,'user_id' => $user_id])->find(); $pit_time = db::name('vs_room_bar')->where('id',$room_id)->value('pit_time')??5; $end_time = time() + ($pit_time * 60); if($pit_gift){ // 使用WHERE条件和影响行数验证确保并发安全 $result = db::name('vs_room_bar_pit_gift') ->where(['id' => $pit_gift['id']]) ->update([ 'gift_id' => $gift_id, 'end_time' => $end_time, 'updatetime' => time(), 'delete_time' => 0, ]); } else{ // 执行插入操作 $result = db::name('vs_room_bar_pit_gift')->insert([ 'room_id' => $room_id, 'user_id' => $user_id, 'gift_id' => $gift_id, 'end_time' => $end_time, 'createtime' => time(), ]); } if(!$result){ return ['code' => 0, 'msg' => '失败', 'data' => null]; } return ['code' => 1, 'msg' => '成功', 'data' => null]; } //约Ta礼物详情 public function get_gift_info_ta($room_id,$user_id){ $return_data = []; $pit_gift = db::name('vs_room_bar_pit_gift')->where(['room_id' => $room_id,'user_id' => $user_id, 'delete_time' => 0])->find(); if($pit_gift){ $gift = db::name('vs_gift')->where(['gid' => $pit_gift['gift_id'], 'delete_time' => 0])->find(); if(empty($gift)){ return ['code' => 0, 'msg' => '礼物不存在', 'data' => null]; } $return_data = [ 'gift_id' => $pit_gift['gift_id'], 'gift_name' => $gift['gift_name'], 'base_image' => $gift['base_image'], 'gift_price' => $gift['gift_price'], ]; } return ['code' => 1, 'msg' => '成功', 'data' => $return_data]; } //撩TA public function liao_ta($room_id,$user_id,$to_user_id){ //查询撩TA礼物 $liao_ta_gif = $this->get_liao_ta_gift(); $liao_ta_gif_id = $liao_ta_gif['gid']??0; //调用送礼接口 $re = model("api/SendGift")->send_gift($user_id,$to_user_id,$liao_ta_gif_id,1,1,$room_id); if($re['code'] != 1){ return ['code' => 0, 'msg' => $re['msg'], 'data' => null]; } return ['code' => 1, 'msg' => '成功', 'data' => null]; } //一键全撩 public function one_key_liao_ta($room_id,$user_id){ //查询撩TA礼物 $liao_ta_gif = $this->get_liao_ta_gift(); $liao_ta_gif_id = $liao_ta_gif['gid']??0; //查询麦上用户 $room_pit_Users = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['<',7],'user_id'=>['>',0],'status' => 1])->value('user_id'); if(empty($room_pit_Users)){ return ['code' => 0, 'msg' => '没有麦上用户', 'data' => null]; } $to_user_ids = []; foreach ($room_pit_Users as $key => $value) { if($user_id == $value){//自己 continue; } //调用送礼接口 $to_user_ids[] = $value; } $to_user_ids = implode(',',$to_user_ids); $re = model("api/SendGift")->send_gift($user_id,$to_user_ids,$liao_ta_gif_id,1,1,$room_id); if($re['code'] != 1){ return ['code' => 0, 'msg' => $re['msg'], 'data' => null]; } return ['code' => 1, 'msg' => '成功', 'data' => null]; } //获取撩TA礼物 public function get_liao_ta_gift(){ $cache_key = 'gift_list_17'; //2,缓存获取 $gift_data = json_decode(Cache::get($cache_key), true); //获取到就返回 if($gift_data){ return $gift_data; } //查询撩TA礼物 $where = []; $where['type'] = 4; $where['label'] = 17; $where['is_show'] = 1; $where['is_can_buy'] = 1; $where['delete_time'] = 0; $gift_data = db::name('vs_gift')->where($where)->order('gid desc')->find(); //设置缓存 Cache::set($cache_key, json_encode($gift_data), 3600*24); return $gift_data; } //约TA public function meeting_ta($user_id,$room_id,$meet_user_id,$gift_id){ //走送礼流程 $res = model("api/SendGift")->send_gift($user_id,$meet_user_id,$gift_id,1,1,$room_id); if($res['code'] != 1){ return ['code' => 0, 'msg' => $res['msg'], 'data' => null]; } //创建私密房间 并告知前端拉谁进入 $room_ids = model('api/Room')->user_create_room($user_id,'酒吧私密房',get_system_config_value('web_site').'/data/avatar/head_pic.png','酒吧房产生的一次性房间',11); if($room_ids['code'] != 1){ return ['code' => 0, 'msg' => $room_ids['msg'], 'data' => null]; }else{ //记录小房间 $datda = [ 'room_id' => $room_ids['data'], 'p_room_id' => $room_id, 'user_id' => $user_id, 'meet_user_id' => $meet_user_id, 'end_time' => time() + get_system_config_value('bar_room_timea') * 60, 'createtime' => time(), 'status' => 1 //1-正常,2-结束 ]; db::name('vs_room_bar_movie')->insert($datda); $text['text'] = '约TA并创建房间'; $text['room_id'] = $room_ids['data'];//前端用来让用户跳转的房间id $text['user_id'] = $user_id; $text['meet_user_id'] = $meet_user_id; model('api/Chat')->sendMsg(1201,$room_id,$text); } return ['code' => 1, 'msg' => '成功', 'data' => null]; } //小黑屋列表 public function black_room_list($room_id){ $list = db::name('vs_room_bar_movie')->where(['p_room_id' => $room_id,'status' => 1,'end_time' => ['>',time()]])->select(); return ['code' => 1, 'msg' => '成功', 'data' => $list]; } }