新需求-活动需求-盲盒转盘

This commit is contained in:
2025-10-12 12:38:20 +08:00
parent a504005c8f
commit ef90015195
3 changed files with 92 additions and 92 deletions

View File

@@ -261,95 +261,95 @@ class BlindBox extends adminApi
return V(0,"请选择盲盒类型"); return V(0,"请选择盲盒类型");
} }
$gift_bag_detail = db::name($this->table)->where(['gift_bag_id'=>$gift_bag_id])->select(); $gift_bag_detail = db::name($this->table)->where(['gift_bag_id'=>$gift_bag_id])->select();
if(in_array($gift_bag_id,[10,11,12,13])){ // if(in_array($gift_bag_id,[10,11,12,13])){
$periods = 1; // $periods = 1;
$target_room_ids = []; // $target_room_ids = [];
if(!empty($room_id)){ // if(!empty($room_id)){
// 处理单个房间 // // 处理单个房间
$room_pan_detail = db::name('vs_room_pan') // $room_pan_detail = db::name('vs_room_pan')
->where(['gift_bag_id'=>$gift_bag_id,'room_id'=>$room_id]) // ->where(['gift_bag_id'=>$gift_bag_id,'room_id'=>$room_id])
->order('id desc') // ->order('id desc')
->find(); // ->find();
//
if($room_pan_detail){ // if($room_pan_detail){
$periods = $room_pan_detail['periods']; // $periods = $room_pan_detail['periods'];
} // }
// 删除指定房间的数据 // // 删除指定房间的数据
db::name('vs_room_pan') // db::name('vs_room_pan')
->where(['room_id'=>$room_id,'gift_bag_id'=>$gift_bag_id]) // ->where(['room_id'=>$room_id,'gift_bag_id'=>$gift_bag_id])
->delete(); // ->delete();
//
$target_room_ids = [$room_id]; // $target_room_ids = [$room_id];
}else{ // }else{
// 处理所有房间 // // 处理所有房间
db::name('vs_room_pan') // db::name('vs_room_pan')
->where(['gift_bag_id'=>$gift_bag_id]) // ->where(['gift_bag_id'=>$gift_bag_id])
->delete(); // ->delete();
//
$target_room_ids = db::name('vs_room') // $target_room_ids = db::name('vs_room')
->where(['is_open_blind_box_turntable'=>1,'room_status'=>1]) // ->where(['is_open_blind_box_turntable'=>1,'room_status'=>1])
->column('id'); // ->column('id');
} // }
// 批量插入数据 // // 批量插入数据
$insert_data = []; // $insert_data = [];
$update_data = []; // $update_data = [];
foreach ($gift_bag_detail as $v){ // foreach ($gift_bag_detail as $v){
if(!empty($room_id)) { // if(!empty($room_id)) {
// 单个房间更新或插入 // // 单个房间更新或插入
$existing = db::name('vs_room_pan') // $existing = db::name('vs_room_pan')
->where([ // ->where([
'room_id' => $room_id, // 'room_id' => $room_id,
'gift_bag_detail_id' => $v['id'] // 'gift_bag_detail_id' => $v['id']
]) // ])
->find(); // ->find();
//
if($existing) { // if($existing) {
$update_data[] = [ // $update_data[] = [
'id' => $existing['id'], // 'id' => $existing['id'],
'remaining_number' => $v['quantity'], // 'remaining_number' => $v['quantity'],
'periods' => $periods // 'periods' => $periods
]; // ];
} else { // } else {
$insert_data[] = [ // $insert_data[] = [
'room_id' => $room_id, // 'room_id' => $room_id,
'gift_bag_id' => $gift_bag_id, // 'gift_bag_id' => $gift_bag_id,
'gift_bag_detail_id' => $v['id'], // 'gift_bag_detail_id' => $v['id'],
'remaining_number' => $v['quantity'], // 'remaining_number' => $v['quantity'],
'periods' => $periods, // 'periods' => $periods,
'createtime' => time(), // 'createtime' => time(),
]; // ];
} // }
} else { // } else {
// 多个房间批量插入 // // 多个房间批量插入
foreach ($target_room_ids as $mid){ // foreach ($target_room_ids as $mid){
$insert_data[] = [ // $insert_data[] = [
'room_id' => $mid, // 'room_id' => $mid,
'gift_bag_id' => $gift_bag_id, // 'gift_bag_id' => $gift_bag_id,
'gift_bag_detail_id' => $v['id'], // 'gift_bag_detail_id' => $v['id'],
'remaining_number' => $v['quantity'], // 'remaining_number' => $v['quantity'],
'periods' => $periods, // 'periods' => $periods,
'createtime' => time(), // 'createtime' => time(),
]; // ];
} // }
} // }
} // }
//
// 执行批量插入 // // 执行批量插入
if(!empty($insert_data)) { // if(!empty($insert_data)) {
db::name('vs_room_pan')->insertAll($insert_data); // db::name('vs_room_pan')->insertAll($insert_data);
} // }
// 执行批量更新 // // 执行批量更新
if(!empty($update_data)) { // if(!empty($update_data)) {
foreach($update_data as $update_item) { // foreach($update_data as $update_item) {
db::name('vs_room_pan') // db::name('vs_room_pan')
->where(['id' => $update_item['id']]) // ->where(['id' => $update_item['id']])
->update([ // ->update([
'remaining_number' => $update_item['remaining_number'], // 'remaining_number' => $update_item['remaining_number'],
'periods' => $update_item['periods'] // 'periods' => $update_item['periods']
]); // ]);
} // }
} // }
} // }
// 更新盲盒详情的剩余数量 // 更新盲盒详情的剩余数量
foreach ($gift_bag_detail as $k=>$v){ foreach ($gift_bag_detail as $k=>$v){
$bag_data = db::name($this->table)->where(['id'=>$v['id']])->update(['remaining_number'=>$v['quantity']]); $bag_data = db::name($this->table)->where(['id'=>$v['id']])->update(['remaining_number'=>$v['quantity']]);

View File

@@ -39,7 +39,7 @@ class BlindBoxTurntable extends BaseCom
$gift_user_ids = input('gift_user_ids',0); $gift_user_ids = input('gift_user_ids',0);
$num = input('num',1); $num = input('num',1);
$heart_id = input('heart_id',0); $heart_id = input('heart_id',0);
$reslut = model('BlindBoxTurntableGiftDrawWorld')->draw_gift($gift_bag_id, $user_id, $gift_user_ids,$num,$room_id,$heart_id); $reslut = model('BlindBoxTurntableGiftDraw')->draw_gift($gift_bag_id, $user_id, $gift_user_ids,$num,$room_id,$heart_id);
return v($reslut['code'], $reslut['msg'], $reslut['data']); return v($reslut['code'], $reslut['msg'], $reslut['data']);
} }
/* /*
@@ -92,7 +92,7 @@ class BlindBoxTurntable extends BaseCom
$user_id = $this->uid; $user_id = $this->uid;
$room_id = input('room_id',0); $room_id = input('room_id',0);
$num = input('num',1); $num = input('num',1);
$reslut = model('BlindBoxTurntableGiftDrawWorld')->xlh_draw_gift($user_id,$num,$room_id); $reslut = model('BlindBoxTurntableGiftDraw')->xlh_draw_gift($user_id,$num,$room_id);
return v($reslut['code'], $reslut['msg'], $reslut['data']); return v($reslut['code'], $reslut['msg'], $reslut['data']);
} }
/* /*

View File

@@ -922,7 +922,7 @@ class BlindBoxTurntableGiftDrawWorld extends Model
* @param int $gift_bag_id 礼物包ID * @param int $gift_bag_id 礼物包ID
*/ */
private function reset_gift_pool($gift_bag_id,$remaining_available_gifts=[]) { private function reset_gift_pool($gift_bag_id,$remaining_available_gifts=[]) {
$bag_detail = b::name("vs_gift_bag_detail")->where('gift_bag_id',$gift_bag_id)->select(); $bag_detail = db::name("vs_gift_bag_detail")->where('gift_bag_id',$gift_bag_id)->select();
db::name("vs_gift_bag")->where('id',$gift_bag_id)->setInc('periods'); //更新期数 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_gift_bag_detail")->where('gift_bag_id',$gift_bag_id)->update(['remaining_number'=>db::raw('quantity')]);//重置奖池
//防止并发上把如果件数小于0则加上 //防止并发上把如果件数小于0则加上