巡乐会抽奖接口提交.-抽奖记录

This commit is contained in:
2025-08-28 18:44:56 +08:00
parent 92ac1971b2
commit a5dc0d6252
4 changed files with 226 additions and 36 deletions

View File

@@ -310,15 +310,15 @@ class BlindBoxTurntableGift extends Model
return ['code' => 0, 'msg' => '开奖数据不存在','data' => null];
}
//获取盲盒配置
$bag_data = db::name("vs_gift_bag")->field('id,name,ext,periods')->where('id',$blind_box_turntable['gift_bag_id'])->find();
$ext = json_decode($bag_data['ext'],true);
// $bag_data = db::name("vs_gift_bag")->field('id,name,ext,periods')->where('id',$blind_box_turntable['gift_bag_id'])->find();
// $ext = json_decode($bag_data['ext'],true);
foreach ($blind_box_turntable_log as $key => $value) {
$give_gift_ext['gift_id'] = $value['gift_id'];
$give_gift_ext['count'] = $value['count'];
$give_gift_ext['gift_price'] = $value['gift_price'];
$give_gift_ext['all_gift_price'] = $value['all_gift_price'];
$give_gift_ext['is_draw_gift'] = 1;
$res = model('GiveGift')->give_gift($blind_box_turntable['user_id'], $value['gift_user_id'], $ext['gift_id'], $value['count'],2,1, $blind_box_turntable['room_id'],0,0,$give_gift_ext);
$res = model('GiveGift')->give_gift($blind_box_turntable['user_id'], $value['gift_user_id'], $value['gift_id'], $value['count'],2,1, $blind_box_turntable['room_id'],0,0,$give_gift_ext);
if (isset($res) && $res['code'] != 1) {
return V(0, $res['msg']);
}
@@ -455,6 +455,10 @@ class BlindBoxTurntableGift extends Model
return ['code' => 0, 'msg' => '该房间未开启盲盒转盘', 'data' => null];
}
//开始抽奖
$pan_xlh = db::name('vs_room_pan_xlh')->where(['room_id'=>$room_id,'periods'=>$room['blind_box_turntable_periods']])->find();
if(empty($pan_xlh)){
return ['code' => 0, 'msg' => '未开始', 'data' => null];
}
for($i = 0; $i < $num; $i++){
//随机获取一个礼物
$where = [
@@ -510,40 +514,24 @@ class BlindBoxTurntableGift extends Model
//处理抽中礼物命中主奖品逻辑
if($gift_bag_detail['foreign_id'] == $ext['locking_condition']['selected_gift_id']){
//中奖
$pan_xlh = db::name('vs_room_pan_xlh')->where(['room_id'=>$room_id,'periods'=>$room['blind_box_turntable_periods']])->find();
if($pan_xlh){
db::name('vs_room_pan_xlh')->where('id',$pan_xlh['id'])->update([
'user_id' => $user_id,
'num' => $pan_xlh['num'] + 1,
]);
if($pan_xlh['num'] == 0){
$end_time = time() + $ext['locking_time']['tow_no_locking_time'] * 60;
}else{
$end_time = time() + ($ext['locking_time']['tow_no_locking_time']-$ext['locking_time']['next_time']) * 60;
}
db::name('vs_room_pan_xlh_log')->insertGetId([
'xlh_id' => $pan_xlh['id'],
'user_id' => $user_id,
'num' => isset($pan_xlh['num']) ? $pan_xlh['num']+1 : 1,
'locking_end_time' => $end_time,
'createtime' => time()
]);
if($pan_xlh['num'] == 0){
$end_time = time() + $ext['locking_time']['tow_no_locking_time'] * 60;
}else{
$end_time = time() + ($ext['locking_time']['tow_no_locking_time']-$ext['locking_time']['next_time']) * 60;
}
}
//处理礼包发放记录表
$data = [];
$data['user_id'] = $user_id;
$data['parent_id'] = 0;
$data['gift_bag_id'] = $gift_bag_id;
$data['gift_id'] = $gift_bag_detail['foreign_id'];
$data['periods'] = $room['blind_box_turntable_periods'];
$data['room_id'] = $room_id;
$data['gift_price'] = $gift['gift_price'];
$data['bag_price'] = $ext['xlh_box_price'];
$data['createtime'] = time();
$result = db::name("vs_gift_bag_receive_log")->insert($data);
if(!$result){
return ['code' => 0, 'msg' => '失败,', 'data' => []];
db::name('vs_room_pan_xlh')->where('id',$pan_xlh['id'])->update([
'user_id' => $user_id,
'num' => $pan_xlh['num'] + 1,
'end_time' => $end_time,
'updatetime' => time()
]);
db::name('vs_room_pan_xlh_log')->insertGetId([
'xlh_id' => $pan_xlh['id'],
'user_id' => $user_id,
'num' => isset($pan_xlh['num']) ? $pan_xlh['num']+1 : 1,
'locking_end_time' => $end_time,
'createtime' => time()
]);
}
//减去盲盒包礼物数量
$ret = db::name("vs_room_pan")->where(['room_id'=>$room_id,'gift_bag_detail_id'=>$gift_bag_detail['id']])->setDec('remaining_number',1);
@@ -566,6 +554,37 @@ class BlindBoxTurntableGift extends Model
'is_public_screen'=>$gift['is_public_screen'],
];
}
$reslut_data = [];
foreach ($result_data as $key => $value) {
$gift_id = $value['gift_id'];
if (!isset($reslut_data[$gift_id])) {
$reslut_data[$gift_id] = [
'gift_id' => $gift_id,
'gift_price'=>$value['gift_price'],
'count' => 1
];
}else {
$reslut_data[$gift_id]['count']++;
}
}
foreach ($reslut_data as $key => $value) {
//处理礼包发放记录表
$data = [];
$data['user_id'] = $user_id;
$data['parent_id'] = $pan_xlh['id'];
$data['gift_bag_id'] = $gift_bag_id;
$data['gift_id'] = $value['gift_id'];
$data['periods'] = $room['blind_box_turntable_periods'];
$data['room_id'] = $room_id;
$data['num'] = $value['count'];
$data['gift_price'] = $value['gift_price'];
$data['bag_price'] = $ext['xlh_box_price'];
$data['createtime'] = time();
$result = db::name("vs_gift_bag_receive_log")->insert($data);
if(!$result){
return ['code' => 0, 'msg' => '失败,', 'data' => []];
}
}
// 添加活动记录
$reslut = Db::name('vs_activities_receive')->insert([
'user_id' => $user_id,
@@ -576,4 +595,50 @@ class BlindBoxTurntableGift extends Model
]);
return ['code' => 1, 'msg' => '成功', 'data' => $result_data];
}
/*
* 巡乐会抽奖记录
*/
public function xlh_get_user_record($user_id,$room_id,$page=1,$page_size=12){
$where = [];
$where['a.gift_bag_id'] = 13;
$where['a.user_id'] = $user_id;
$where['a.room_id'] = $room_id;
$list = db('vs_gift_bag_receive_log')
->alias('a')
->join('vs_room_pan_xlh b','b.id = a.parent_id','left')
->join('vs_gift c','c.gid = a.gift_id','left')
->field('a.gift_id,a.num,b.createtime,c.gift_name as gift_name,c.base_image')
->where($where)
->page($page,$page_size)
->select();
foreach ($list as &$v){
$v['createtime'] = date('Y-m-d H:i:s',$v['createtime']);
}
return ['code' => 1, 'msg' => '成功', 'data' => $list];
}
/*
* 巡乐会榜单
*/
public function xlh_ranking($room_id,$page=1,$page_size=12){
$where = [];
$where['a.gift_bag_id'] = 13;
$where['a.room_id'] = $room_id;
$where['e.is_world_show'] = 1;
$list = db('vs_gift_bag_receive_log')
->alias('a')
->join('vs_room_pan_xlh b','b.id = a.parent_id','left')
->join('vs_gift c','c.gid = a.gift_id','left')
->join('fa_user d','d.id = a.user_id','left')
->join('vs_gift_bag_detail e','e.foreign_id = a.gift_id','left')
->field('a.gift_id,a.num,b.createtime,c.gift_name as gift_name,c.base_image,d.nickname')
->where($where)
->page($page,$page_size)
->select();
foreach ($list as &$v){
$v['createtime'] = date('Y-m-d H:i:s',$v['createtime']);
}
return ['code' => 1, 'msg' => '成功', 'data' => $list];
}
}