新需求: 盲盒转盘开发-转盘抽奖接口开发-盲盒转盘接口列表调整
This commit is contained in:
@@ -24,7 +24,8 @@ class BlindBoxTurntable extends BaseCom
|
||||
*/
|
||||
public function get_gift_list(){
|
||||
$gift_bag_id = input('gift_bag_id',0);
|
||||
$reslut = model('BlindBoxTurntableGift')->get_gift_list($gift_bag_id);
|
||||
$room_id = input('room_id',0);
|
||||
$reslut = model('BlindBoxTurntableGift')->get_gift_list($gift_bag_id,$room_id);
|
||||
return v($reslut['code'], $reslut['msg'], $reslut['data']);
|
||||
}
|
||||
/*
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\model;
|
||||
use app\common\controller\Push;
|
||||
use think\Model;
|
||||
use think\Db;
|
||||
use think\Session;
|
||||
@@ -18,7 +19,7 @@ class BlindBoxTurntableGift extends Model
|
||||
protected $table = 'fa_vs_gift';
|
||||
|
||||
//获取奖池礼物列表
|
||||
public function get_gift_list($gift_bag_id)
|
||||
public function get_gift_list($gift_bag_id,$room_id)
|
||||
{
|
||||
$box = db::name('vs_gift_bag')->where('id',$gift_bag_id)->find();
|
||||
$gifts = db::name('vs_gift_bag_detail')->where('gift_bag_id',$gift_bag_id)->order("id desc")->select();
|
||||
@@ -34,14 +35,40 @@ class BlindBoxTurntableGift extends Model
|
||||
$gift_list[$key]['gift_price'] = $gift_data['gift_price'];
|
||||
}
|
||||
}
|
||||
|
||||
$ext = json_decode($box['ext'],true);
|
||||
$box_gift = Db::name('vs_gift')->where('gid',$ext['gift_id'])->find();
|
||||
|
||||
//巡乐会
|
||||
$is_xlh = 0;
|
||||
$xlh_box = db::name('vs_gift_bag')->where('id',13)->find();
|
||||
$xlh_ext = json_decode($xlh_box['ext'],true);
|
||||
$xlh = [];
|
||||
if($xlh_ext['inlet_bag_id'] == $box['id']){
|
||||
$is_xlh = 1;
|
||||
$xlh['waiting_start_num'] = $xlh_ext['open_condition']['waiting_start_num'];//等待开奖次数
|
||||
$xlh['start_num'] = $xlh_ext['open_condition']['start_num'];//开始开奖次数
|
||||
//本期总次数
|
||||
$total_number = db::name('vs_gift_bag_detail')->where(['gift_bag_id'=>$gift_bag_id])->sum('quantity')??0;
|
||||
//本期剩余次数
|
||||
$remaining_number = db::name('vs_room_pan')->where(['room_id'=>$room_id,'gift_bag_id'=>$gift_bag_id])->sum('remaining_number')??'0';
|
||||
//当前抽奖次数
|
||||
$xlh['current_num'] = $total_number - $remaining_number;
|
||||
//状态
|
||||
if($xlh['current_num'] >= $xlh_ext['open_condition']['start_num']){
|
||||
$xlh['status'] = 1;//状态 1:巡乐会开始 2:即将开始开始 0:等待开始
|
||||
} elseif($xlh['current_num'] >= $xlh_ext['open_condition']['waiting_start_num'] && $xlh['current_num'] < $xlh_ext['open_condition']['start_num']){
|
||||
$xlh['status'] = 2;//状态 1:巡乐会开始 2:即将开始开始 0:等待开始
|
||||
}else{
|
||||
$xlh['status'] = 0;
|
||||
}
|
||||
}
|
||||
$result_data = [
|
||||
'title' => $box['name'],
|
||||
'rule_url' => get_system_config_value('web_site')."/api/Page/get_gift_box_rule?box_id=".$box["id"],
|
||||
'rule' => $ext['introd'],
|
||||
'box_price' => $box_gift['gift_price'],
|
||||
'is_xlh' => $is_xlh,
|
||||
'xlh_data' => $xlh,
|
||||
'gift_list' => $gift_list,
|
||||
];
|
||||
return ['code' => 1, 'msg' => '获取成功', 'data' => $result_data];
|
||||
@@ -60,6 +87,10 @@ class BlindBoxTurntableGift extends Model
|
||||
if ($user_waller['coin'] < $bag_gift['gift_price'] * $num) {
|
||||
return ['code' => 0, 'msg' => '用户金币不足', 'data' => null];
|
||||
}
|
||||
$room = db::name('vs_room')->where(['id'=>$room_id])->find();
|
||||
if ($room['is_open_blind_box_turntable'] != 1) {
|
||||
return ['code' => 0, 'msg' => '该房间未开启盲盒转盘', 'data' => null];
|
||||
}
|
||||
//盲盒转盘抽奖记录
|
||||
$box_turntable_log = db::name('vs_blind_box_turntable_log')->insertGetId([
|
||||
'user_id' => $user_id,
|
||||
@@ -126,12 +157,18 @@ class BlindBoxTurntableGift extends Model
|
||||
public function draw_gift_one($gift_bag_id, $user_id, $gift_user_id,$gift_price,$periods,$room_id=0,$box_turntable_log=0){
|
||||
//随机获取一个礼物
|
||||
$where = [
|
||||
'gift_bag_id' => $gift_bag_id,
|
||||
'quantity' => ['>',0],
|
||||
'remaining_number' => ['>',0]
|
||||
'a.gift_bag_id' => $gift_bag_id,
|
||||
'a.quantity' => ['>',0],
|
||||
'b.remaining_number' => ['>',0],
|
||||
'b.room_id' => $room_id
|
||||
];
|
||||
// 优化:基于剩余数量的加权随机选择
|
||||
$gift_bag_details = db::name("vs_gift_bag_detail")->where($where)->select();
|
||||
$gift_bag_details = db::name("vs_gift_bag_detail")
|
||||
->field('a.id,a.quantity,b.remaining_number,a.weight,a.foreign_id')
|
||||
->alias('a')
|
||||
->join('vs_room_pan b','b.gift_bag_detail_id = a.id','left')
|
||||
->where($where)
|
||||
->select();
|
||||
if (empty($gift_bag_details)) {
|
||||
return ['code' => 0, 'msg' => '当前盲盒无可用礼物', 'data' => []];
|
||||
}
|
||||
@@ -181,19 +218,51 @@ class BlindBoxTurntableGift extends Model
|
||||
return ['code' => 0, 'msg' => '失败,', 'data' => []];
|
||||
}
|
||||
//减去盲盒包礼物数量
|
||||
$ret = db::name("vs_gift_bag_detail")->where('id',$gift_bag_detail['id'])->setDec('remaining_number');
|
||||
// $ret = db::name("vs_gift_bag_detail")->where('id',$gift_bag_detail['id'])->setDec('remaining_number');
|
||||
$ret = db::name("vs_room_pan")->where(['room_id'=>$room_id,'gift_bag_detail_id'=>$gift_bag_detail['id']])->setDec('remaining_number',1);
|
||||
if(!$ret){
|
||||
return ['code' => 0, 'msg' => '失败.', 'data' => []];
|
||||
}
|
||||
//判断剩余数量是否为0 为0重置,进入下一期
|
||||
$gift_bag_num = db::name("vs_gift_bag_detail")->where('gift_bag_id',$gift_bag_id)->sum('remaining_number');
|
||||
$gift_bag_num = db::name("vs_room_pan")->where(['room_id'=>$room_id,'gift_bag_id'=>$gift_bag_id])->sum('remaining_number');
|
||||
if($gift_bag_num <= 0){
|
||||
db::name("vs_gift_bag")->where('id',$gift_bag_id)->setInc('periods');
|
||||
db::name("vs_gift_bag_detail")->where('gift_bag_id',$gift_bag_id)->update(['remaining_number'=>db::raw('quantity')]);
|
||||
db::name("vs_room")->where('id',$room_id)->setInc('blind_box_turntable_periods');
|
||||
db::name("vs_room_pan")->where(['room_id'=>$room_id,'gift_bag_id'=>$gift_bag_id])->update(
|
||||
['remaining_number' => db::raw('(SELECT quantity FROM fa_vs_gift_bag_detail WHERE id = fa_vs_room_pan.gift_bag_detail_id)')]);
|
||||
}
|
||||
}else{
|
||||
return ['code' => 0, 'msg' => '失败!', 'data' => []];
|
||||
}
|
||||
//巡乐会飘屏
|
||||
$xlh_box = db::name('vs_gift_bag')->where('id',13)->find();
|
||||
$xlh_ext = json_decode($xlh_box['ext'],true);
|
||||
if($xlh_ext['inlet_bag_id'] == $gift_bag_id['id']){
|
||||
$room_name = Db::name('vs_room')->where(['id' => $room_id, 'apply_status' => 2])->value('room_name');
|
||||
if($total_draw_times == $xlh_ext['open_condition']['waiting_start_num']){
|
||||
//即将开始推送飘屏
|
||||
$text = $room_name."的巡乐会即将开始,请大家尽快参与哦!";
|
||||
}
|
||||
if($total_draw_times == $xlh_ext['open_condition']['start_num']){
|
||||
//正式开始推送飘屏
|
||||
$text = $room_name."的巡乐会正式开始,请大家尽快参与哦!";
|
||||
}
|
||||
//推送礼物横幅
|
||||
$push = new Push(UID, $room_id);
|
||||
$room_name = Db::name('vs_room')->where(['id' => $room_id, 'apply_status' => 2])->value('room_name');
|
||||
$text_list_new = [
|
||||
'text' => $text,
|
||||
'gift_picture' => "",
|
||||
'room_id' => $room_id,
|
||||
'fromUserName' => "",
|
||||
'toUserName' => "",
|
||||
'giftName' => "",
|
||||
'roomId' => $room_id,
|
||||
'number' => "",
|
||||
];
|
||||
$push->giftBanner($text_list_new);
|
||||
}
|
||||
|
||||
$result_data = [
|
||||
'user_id' => $user_id,
|
||||
'gift_user_id'=>$gift_user_id,
|
||||
|
||||
Reference in New Issue
Block a user