新需求: 盲盒转盘开发-转盘抽奖接口开发-抽奖记录接口 -送礼接口调整

This commit is contained in:
2025-08-19 18:09:48 +08:00
parent 2767f64a67
commit 251ffc84a8
4 changed files with 274 additions and 113 deletions

View File

@@ -40,6 +40,7 @@ class BlindBoxTurntableGift extends Model
$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'],
'gift_list' => $gift_list,
];
@@ -54,9 +55,23 @@ class BlindBoxTurntableGift extends Model
$ext = json_decode($bag_data['ext'],true);
$bag_gift = db::name("vs_gift")->where(['gid'=>$ext['gift_id']])->find();// 获取盲盒信息
$toarray = explode(',',$gift_user_ids);
//判断是否有足够的金币
$user_waller = db::name('user_wallet')->where(['user_id'=>$user_id])->find();
if ($user_waller['coin'] < $bag_gift['gift_price'] * $num) {
return ['code' => 0, 'msg' => '用户金币不足', 'data' => null];
}
//盲盒转盘抽奖记录
$box_turntable_log = db::name('vs_blind_box_turntable_log')->insertGetId([
'user_id' => $user_id,
'gift_bag_id' => $gift_bag_id,
'num' => $num,
'room_id' => $room_id,
'bag_price' => $bag_gift['gift_price'],
'createtime' => time()
]);
foreach ($toarray as $gift_user_id){
for($i = 0; $i < $num; $i++){
$reslut_draw_gift_data = $this->draw_gift_one($gift_bag_id, $user_id, $gift_user_id,$bag_gift['gift_price'],$bag_data['periods'],$room_id);
$reslut_draw_gift_data = $this->draw_gift_one($gift_bag_id, $user_id, $gift_user_id,$bag_gift['gift_price'],$bag_data['periods'],$room_id,$box_turntable_log);
$reslut_draw_gift[] = $reslut_draw_gift_data['data'];
}
}
@@ -89,16 +104,18 @@ class BlindBoxTurntableGift extends Model
}
}
$reslut_gift = array_values($reslut_gift);
//盲盒转盘抽奖记录
$box_turntable_log = db::name('vs_blind_box_turntable_log')->insertGetId([
'user_id' => $user_id,
'gift_bag_id' => $gift_bag_id,
'num' => $num,
'room_id' => $room_id,
'bag_price' => $bag_gift['gift_price'],
'lottery_result' => json_encode($reslut_gift),
'createtime' => time()
]);
foreach ($reslut_gift as $key => $value) {
db::name('vs_blind_box_turntable_results_log')->insert([
'tid' => $box_turntable_log,
'gift_user_id' => $value['gift_user_id'],
'gift_id' => $value['gift_id'],
'count' => $value['count'],
'gift_price' => $value['gift_price'],
'all_gift_price' => $value['gift_price'] * $value['count'],
'createtime' => time()
]);
}
$reslut = [];
$reslut['blind_box_turntable_id'] = $box_turntable_log;
$reslut['reslut_list'] = array_values($reslut_data);
return V(1,"成功", $reslut);
@@ -106,7 +123,7 @@ class BlindBoxTurntableGift extends Model
/*
* 单人单次抽奖
*/
public function draw_gift_one($gift_bag_id, $user_id, $gift_user_id,$gift_price,$periods,$room_id=0){
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,
@@ -151,6 +168,7 @@ class BlindBoxTurntableGift extends Model
$data = [];
$data['user_id'] = $user_id;
$data['gift_user_id'] = $gift_user_id;
$data['parent_id'] = $box_turntable_log;
$data['gift_bag_id'] = $gift_bag_id;
$data['gift_id'] = $gift_bag_detail['foreign_id'];
$data['periods'] = $periods;
@@ -194,14 +212,72 @@ class BlindBoxTurntableGift extends Model
if(!$blind_box_turntable){
return ['code' => 0, 'msg' => '数据不存在'];
}
$reslut_gift = json_decode($blind_box_turntable['lottery_result'],true);
foreach ($reslut_gift as $key => $value) {
$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']);
$blind_box_turntable_log = db('vs_blind_box_turntable_results_log')->where('tid',$send_id)->select();
if(!$blind_box_turntable_log){
return ['code' => 0, 'msg' => '开奖数据不存在'];
}
//获取盲盒配置
$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'],$give_gift_ext);
if (isset($res) && $res['code'] != 1) {
return V(0, $res['msg']);
}
db('vs_blind_box_turntable_results_log')->where('id', $value['id'])->update(['is_sued' => 1, 'updatetime' => time()]);
}
$res = db('vs_blind_box_turntable_log')->where('id', $blind_box_turntable['id'])->update(['is_sued' => 1, 'updatetime' => time()]);
return ['code' => 1, 'msg' => '成功', 'data' => $res];
return ['code' => 1, 'msg' => '成功', 'data' => null];
}
/*
* 获取用户抽奖记录
*/
public function get_user_record($gift_bag_id,$user_id=0,$page=1,$page_size=12){
$where = [];
$where['b.gift_bag_id'] = $gift_bag_id;
if($user_id > 0){
$where['b.user_id'] = $user_id;
}
$list = db('vs_blind_box_turntable_results_log')
->alias('a')
->join('vs_blind_box_turntable_log b','b.id = a.tid','left')
->join('user c','a.gift_user_id = c.id','left')
->join('vs_gift d','d.gid = a.gift_id','left')
->field('a.gift_id,a.count,a.gift_user_id,b.createtime,c.nickname,d.gift_name as gift_name,d.play_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 get_all_record($gift_bag_id,$page=1,$page_size=12){
$where = [];
$where['b.gift_bag_id'] = $gift_bag_id;
$where['d.gift_bag_id'] = $gift_bag_id;
$where['d.is_world_show'] = 1;
$list = db('vs_blind_box_turntable_results_log')
->alias('a')
->join('vs_blind_box_turntable_log b','b.id = a.tid','left')
->join('user c','b.user_id = c.id','left')
->join('vs_gift_bag_detail d','d.foreign_id = a.gift_id','left')
->join('vs_gift e','e.gid = a.gift_id','left')
->field('a.gift_id,a.count,a.gift_user_id,b.createtime,c.nickname,d.name as gift_name,e.play_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];
}
}