2026-01-02 17:14:40 +08:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
namespace app\api\model;
|
|
|
|
|
|
|
|
|
|
|
|
use think\Cache;
|
|
|
|
|
|
use think\Model;
|
|
|
|
|
|
use think\Db;
|
|
|
|
|
|
|
|
|
|
|
|
class GiftNew extends Model
|
|
|
|
|
|
{
|
|
|
|
|
|
/*
|
|
|
|
|
|
* 获取礼物列表
|
|
|
|
|
|
* @param int $label 礼物标签
|
2026-01-04 19:00:02 +08:00
|
|
|
|
* @param int $type 类型:1-房间送礼礼物,2-排麦设置插麦礼物,3-拍卖位选择拍卖礼物,4-歌手添加歌单礼物,5-动态打赏礼物, 6-酒吧房
|
2026-01-02 17:14:40 +08:00
|
|
|
|
*/
|
|
|
|
|
|
public function get_gift_list($user_id, $type, $label)
|
|
|
|
|
|
{
|
|
|
|
|
|
$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;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//1,先从缓存获取
|
|
|
|
|
|
if($is_lock){//根据这个判断是不是爵位礼物 创建不同的key
|
|
|
|
|
|
$cache_key = 'gift_list_'.$label.'_'.$is_lock;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$cache_key = 'gift_list_'.$label;
|
|
|
|
|
|
}
|
|
|
|
|
|
//2,缓存获取
|
|
|
|
|
|
$list = json_decode(Cache::get($cache_key), true);
|
|
|
|
|
|
//获取到就返回
|
|
|
|
|
|
if($list){
|
|
|
|
|
|
return ['code' => 1, 'msg' => '获取成功', 'data' => $list];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//================================从这里开始写逻辑==================================
|
|
|
|
|
|
//根据type的值分析拉起礼物的场合 加$label的条件 给出对应的列表
|
|
|
|
|
|
|
|
|
|
|
|
//根据类型组装查询条件
|
|
|
|
|
|
$where['is_show'] = 1;
|
|
|
|
|
|
$where['delete_time'] = 0;
|
2026-01-02 17:57:04 +08:00
|
|
|
|
if ($label == 99) {
|
|
|
|
|
|
$gift_price = get_system_config_value('room_love_auction_cion');
|
|
|
|
|
|
$where['gift_price'] = ['>',$gift_price];
|
|
|
|
|
|
$where['label'] = ['<>',2];
|
|
|
|
|
|
}
|
2026-01-02 17:14:40 +08:00
|
|
|
|
switch ($type) {
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
$where['label'] = $label;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
$where['label'] = 5;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 3:
|
|
|
|
|
|
$where['type'] = 1;
|
|
|
|
|
|
//爆币id
|
|
|
|
|
|
$bb_gift_id = db::name('bb_lottery_config')->where(['key' => 'pool_gift_id'])->value('value');
|
|
|
|
|
|
$where['gid'] = ['<>',$bb_gift_id];//拍卖位选礼物 不能是爆币这个礼物
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 4:
|
|
|
|
|
|
$where['type'] = 1;
|
|
|
|
|
|
$where['gift_price'] = ['>',128];//歌单礼物价格要大于128 老板26年1月2号提的要求
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 5:
|
|
|
|
|
|
$where['type'] = 1;
|
|
|
|
|
|
break;
|
2026-01-04 19:00:02 +08:00
|
|
|
|
case 6:
|
2026-01-09 14:48:21 +08:00
|
|
|
|
$where['type'] = 6;
|
2026-01-04 19:00:02 +08:00
|
|
|
|
$where['label'] = $label;
|
|
|
|
|
|
break;
|
2026-01-02 17:14:40 +08:00
|
|
|
|
}
|
|
|
|
|
|
$list = db::name('vs_gift')
|
|
|
|
|
|
->field('gid as gift_id,gift_name,base_image,gift_price,icon')
|
|
|
|
|
|
->where($where)->order('sort desc, gift_price asc')->select();
|
|
|
|
|
|
|
2026-01-02 17:57:04 +08:00
|
|
|
|
if($label==2){
|
|
|
|
|
|
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;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
foreach ($list as $key =>&$v) {
|
|
|
|
|
|
$v['is_lock'] = $is_lock;
|
2026-01-05 18:19:28 +08:00
|
|
|
|
if($label==14){ //酒吧房自定义礼物 自定义
|
2026-01-06 14:41:42 +08:00
|
|
|
|
$gift_remark_name =db::name('vs_user_custom_gift')->where(['user_id' => $user_id,'gift_id'=>$v['gift_id'],'delete_time'=>0])->value('gift_remark_name');
|
|
|
|
|
|
$v['gift_remark_name'] = $gift_remark_name ?? '';
|
2026-01-05 18:19:28 +08:00
|
|
|
|
}
|
2026-01-02 17:57:04 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-01-02 17:14:40 +08:00
|
|
|
|
|
|
|
|
|
|
//================================到这里结束逻辑==================================
|
2026-01-06 15:20:23 +08:00
|
|
|
|
if($label!=14) {//非自定义礼物走缓存
|
|
|
|
|
|
//设置缓存
|
|
|
|
|
|
Cache::set($cache_key, json_encode($list), 3600);
|
|
|
|
|
|
}
|
2026-01-02 17:14:40 +08:00
|
|
|
|
return ['code' => 1, 'msg' => '获取成功', 'data' => $list];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-08 15:08:20 +08:00
|
|
|
|
|
2026-01-04 19:00:02 +08:00
|
|
|
|
//自定义礼物设置
|
2026-01-08 15:08:20 +08:00
|
|
|
|
public function set_custom_gift($user_id, $gift_id, $room_id, $gift_remark_name){
|
2026-01-04 19:00:02 +08:00
|
|
|
|
$gift_info = db::name('vs_gift')->where(['gid' => $gift_id, 'delete_time' => 0, 'is_show' => 1])->find();
|
|
|
|
|
|
if(!$gift_info){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '礼物不存在','data' =>null];
|
|
|
|
|
|
}
|
2026-01-08 15:08:20 +08:00
|
|
|
|
if(empty($gift_remark_name)){
|
|
|
|
|
|
$type = 0;//删除
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$type = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-08 15:18:05 +08:00
|
|
|
|
$user_custom_gift = db::name('vs_user_custom_gift')->where(['user_id' => $user_id,'gift_id'=>$gift_id])->find();
|
2026-01-04 19:00:02 +08:00
|
|
|
|
if($user_custom_gift){
|
2026-01-08 15:08:20 +08:00
|
|
|
|
db::name('vs_user_custom_gift')->where(['id' => $user_custom_gift['id']])->update(['gift_remark_name'=>$gift_remark_name,'updatetime'=>time()]);
|
2026-01-04 19:00:02 +08:00
|
|
|
|
}else{
|
2026-01-08 15:08:20 +08:00
|
|
|
|
$res = db::name('vs_user_custom_gift')->insert([
|
2026-01-04 19:00:02 +08:00
|
|
|
|
'user_id' => $user_id,
|
|
|
|
|
|
'gift_id'=>$gift_id,
|
2026-01-06 14:41:42 +08:00
|
|
|
|
'gift_remark_name'=>$gift_remark_name,
|
2026-01-04 19:00:02 +08:00
|
|
|
|
'createtime'=>time()
|
|
|
|
|
|
]);
|
2026-01-08 15:08:20 +08:00
|
|
|
|
if(!$res){
|
|
|
|
|
|
return ['code' => 0, 'msg' => '设置失败','data' =>null];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
$user_on_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $user_id])->value('pit_number');
|
|
|
|
|
|
if($user_on_pit){
|
|
|
|
|
|
$text['text'] = '设置自定义礼物';
|
|
|
|
|
|
$text['type'] = $type;
|
|
|
|
|
|
$text['user_id'] = $user_id;
|
|
|
|
|
|
$text['pit_number'] = $user_on_pit;
|
|
|
|
|
|
//聊天室推送系统消息
|
2026-01-08 15:30:27 +08:00
|
|
|
|
model('api/Chat')->sendMsg(1203,$room_id,$text);
|
2026-01-04 19:00:02 +08:00
|
|
|
|
}
|
|
|
|
|
|
return ['code' => 1, 'msg' => '设置成功','data' =>null];
|
|
|
|
|
|
}
|
2026-01-08 15:08:20 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-01-04 19:00:02 +08:00
|
|
|
|
//自定义礼物列表
|
|
|
|
|
|
public function get_custom_gift_list($user_id){
|
|
|
|
|
|
$list = db::name('vs_user_custom_gift')
|
|
|
|
|
|
->alias('a')
|
|
|
|
|
|
->join('vs_gift b','a.gift_id = b.gid')
|
2026-01-06 14:41:42 +08:00
|
|
|
|
->field('a.id,b.gid as gift_id,a.gift_remark_name,b.gift_name,b.base_image,b.gift_price,b.icon')
|
|
|
|
|
|
->where(['a.user_id' => $user_id,'a.delete_time'=>0,'a.gift_remark_name'=>['<>','']])
|
2026-01-04 19:00:02 +08:00
|
|
|
|
->order('a.sort desc ,a.updatetime desc')
|
|
|
|
|
|
->select();
|
|
|
|
|
|
return ['code' => 1, 'msg' => '获取成功','data' =>$list];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-02 17:14:40 +08:00
|
|
|
|
}
|