Files
yusheng-php/application/api/model/GiftNew.php

176 lines
7.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\api\model;
use think\Cache;
use think\Model;
use think\Db;
class GiftNew extends Model
{
/*
* 获取礼物列表
* @param int $label 礼物标签
* @param int $type 类型1-房间送礼礼物2-排麦设置插麦礼物3-拍卖位选择拍卖礼物4-歌手添加歌单礼物5-动态打赏礼物, 6-酒吧房
*/
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;
if ($label == 99) {
$gift_price = get_system_config_value('room_love_auction_cion');
$where['gift_price'] = ['>',$gift_price];
$where['label'] = ['<>',2];
}
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;
case 6:
$where['type'] = 4;
$where['label'] = $label;
break;
}
$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();
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;
if($label==14){ //酒吧房自定义礼物 自定义
$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 ?? '';
}
}
}
//================================到这里结束逻辑==================================
if($label!=14) {//非自定义礼物走缓存
//设置缓存
Cache::set($cache_key, json_encode($list), 3600);
}
return ['code' => 1, 'msg' => '获取成功', 'data' => $list];
}
//自定义礼物设置
public function set_custom_gift($user_id, $gift_id, $room_id, $gift_remark_name){
$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];
}
if(empty($gift_remark_name)){
$type = 0;//删除
}else{
$type = 1;
}
$user_custom_gift = db::name('vs_user_custom_gift')->where(['user_id' => $user_id,'gift_id'=>$gift_id])->find();
if($user_custom_gift){
db::name('vs_user_custom_gift')->where(['id' => $user_custom_gift['id']])->update(['gift_remark_name'=>$gift_remark_name,'updatetime'=>time()]);
}else{
$res = db::name('vs_user_custom_gift')->insert([
'user_id' => $user_id,
'gift_id'=>$gift_id,
'gift_remark_name'=>$gift_remark_name,
'createtime'=>time()
]);
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;
//聊天室推送系统消息
model('Chat')->sendMsg(1203,$room_id,$text);
}
return ['code' => 1, 'msg' => '设置成功','data' =>null];
}
//自定义礼物列表
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')
->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'=>['<>','']])
->order('a.sort desc ,a.updatetime desc')
->select();
return ['code' => 1, 'msg' => '获取成功','data' =>$list];
}
}