'热门',2=>'趣味', 3=>'情侣', 4=>'挂件']; protected $table = 'fa_vs_gift'; //获取礼物类型 public function get_gift_label($type,$no_label = []) { $giftType = []; //礼物 $giftTypeData = db::name('vs_gift_label') ->where('delete_time',0) ->where('tid',1) ->whereNotIn('id',$no_label) ->order("sort asc,id desc") ->select(); foreach ($giftTypeData as $key => $value) { $giftType[$key]['id'] = $value['id']; $giftType[$key]['name'] = $value['name']; $giftType[$key]['sort'] = $value['sort']; } if($type == 2) {//打赏 不需要热度卡 //增加房间热度卡 if (!in_array(1013, $no_label)) { $giftType[] = ['id' => 1013, 'name' => '房间热度卡', 'sort' => 0]; } } //排序 1013排到最前面去 usort($giftType, function($a, $b) { return $a['sort'] <=> $b['sort']; }); return ['code' => 1, 'msg' => '获取成功', 'data' => $giftType]; } //拉取礼物列表 public function get_gift_list($label = 0,$room_id = 0,$user_id = 0) { $is_lock = 0; if ($label == 13) { // 专属礼物 $Nobility = model('api/Nobility')->getUserNobilityInfo($user_id); $power_list_ids = array_column($Nobility['power_list'],'id'); if(!in_array(5,$power_list_ids)){ $is_lock = 1; } } if($label == 1013){//房间热度卡 $list = db::name('vs_user_decorate') ->field('a.udid,a.num,b.title,b.base_image,b.price,b.ext_value') ->alias('a') ->join('vs_decorate b','a.did=b.did') ->where([ 'a.user_id'=>$user_id, 'a.type'=>13, 'a.num' => ['>',0] ]) ->order('a.num desc') ->select(); $return_data = []; if($list){ foreach ($list as $k=>$v) { $return_data[$k]['gift_id'] = $v['udid']; $return_data[$k]['gift_name'] = $v['title']; $return_data[$k]['base_image'] = $v['base_image']; $return_data[$k]['gift_price'] = $v['price']; $return_data[$k]['num'] = $v['num']; $return_data[$k]['label'] = 1013; } } return ['code' => 1, 'msg' => '获取成功', 'data' => $return_data]; } //先从缓存获取 if($is_lock){ $cache_key = 'gift_list_'.$label.'_'.$is_lock; }else{ $cache_key = 'gift_list_'.$label; } $list = json_decode(Cache::get($cache_key), true); if($list){ return ['code' => 1, 'msg' => '获取成功', 'data' => $list]; } $map['delete_time'] = 0; $where['is_show'] = 1; if ($label && $label != 99) { $map['label'] = $label; } if ($label == 99) { $gift_price = get_system_config_value('room_love_auction_cion'); $where['gift_price'] = ['>',$gift_price]; // $where['label'] = ['<>',2]; $where['label'] = ['in',[1,5]]; } $is_open_blind_box_turntable = 1; // if($room_id){ // $is_open_blind_box_turntable = Db::name('vs_room')->where(['id'=>$room_id])->value('is_open_blind_box_turntable'); // } $list = $this->field('gid as gift_id,gift_name,base_image,gift_price,icon')->where($map)->where($where)->order('sort desc, gift_price asc')->select(); if($label==2){ $list_data = []; foreach ($list as &$v) { //获取盲盒列表 $box_list = Db::name('vs_gift_bag')->where(['status'=>1])->where(['activities_id'=>["in",[4,5]]])->select(); foreach ($box_list as $key =>$box) { $ext = json_decode($box['ext'],true); if ($ext['gift_id'] == $v['gift_id']) { $v['gift_bag_name'] = $box['name']; $v['rule'] = $ext['description']; $v['rule_url'] = get_system_config_value('web_site')."/api/Page/get_gift_box_rule?box_id=".$box["id"]; $v['activities_id'] = $box['activities_id']; $v['gift_bag'] = $box['id']; break; } } //爆币 $pool_gift_id = db::name('bb_lottery_config')->where(['key' => 'pool_gift_id'])->value('value'); if($pool_gift_id == $v['gift_id']){ $v['gift_bag_name'] = "幸运币活动"; $v['rule'] = "幸运羽币"; $v['rule_url'] = get_system_config_value('web_site')."/api/Page/page_show?id=35"; $v['activities_id'] = 88; $v['gift_bag'] = 0; } } foreach ($list as $gift) { if($is_open_blind_box_turntable == 1){ $list_data[] = $gift; }else{ if(isset($gift['activities_id']) && $gift['activities_id'] == 4){ $list_data[] = $gift; } } } // usort($list_data, function($a, $b) { // return $a['gift_id'] <=> $b['gift_id']; // }); $list = $list_data; } //获取配置里面的CP礼物 $cp_gift_ids = explode(',', get_system_config_value('cp_gift_id')); $teacher_gift_ids = explode(',', get_system_config_value('master_special_gift')); $cp_gift = []; $teacher_gift = []; foreach ($list as $key =>&$v) { $v['is_lock'] = $is_lock; if (in_array($v['gift_id'], $cp_gift_ids)) { $v['is_cp'] = 1; $cp_gift[] = $v; unset($list[$key]); }else{ $v['is_cp'] = 0; } if (in_array($v['gift_id'], $teacher_gift_ids)) { $v['is_teacher'] = 1; $teacher_gift[] = $v; unset($list[$key]); }else{ $v['is_teacher'] = 0; } } //如果有CP礼物 则放在最前面 if ($cp_gift) { array_unshift($list, ...$cp_gift); } if ($teacher_gift) { array_unshift($list, ...$teacher_gift); } //设置缓存 Cache::set($cache_key, json_encode($list), 3600); return ['code' => 1, 'msg' => '获取成功', 'data' => $list]; } }