diff --git a/application/api/model/BlindBoxTurntableGiftDrawWorld.php b/application/api/model/BlindBoxTurntableGiftDrawWorld.php index 2003d26..8650ca9 100644 --- a/application/api/model/BlindBoxTurntableGiftDrawWorld.php +++ b/application/api/model/BlindBoxTurntableGiftDrawWorld.php @@ -64,7 +64,7 @@ class BlindBoxTurntableGiftDrawWorld extends Model $precomputedResults = $precomputeResult['data']['results']; $availableGiftss = $precomputeResult['data']['availableGifts']; $currentXlhPeriodsNum = $precomputeResult['data']['current_xlh_periods_num']; - $xlhIsPiaoPing = $precomputeResult['data']['xlh_is_piao_ping']; + $addcurrentXlhPeriodsNum = $precomputeResult['data']['addcurrentXlhPeriodsNum']; $expectedCount = count(explode(',', $gift_user_ids)) * $num; if (count($precomputedResults) != $expectedCount) { // 记录错误到Redis @@ -95,8 +95,8 @@ class BlindBoxTurntableGiftDrawWorld extends Model $boxTurntableLog, $room_id, $xlh_ext, - $xlhIsPiaoPing, $currentXlhPeriodsNum, + $addcurrentXlhPeriodsNum, $room ); @@ -203,9 +203,6 @@ class BlindBoxTurntableGiftDrawWorld extends Model private function precomputeDrawResults($bag_data, $gift_user_ids, $num) { $toarray = explode(',', $gift_user_ids); - $xlh_is_piao_ping = 0; - $current_xlh_periods_num = $this->getCachedXlhPeriodsNum("get"); - // 1. 计算奖池信息 $poolInfo = $this->calculatePoolInfo($bag_data['id']); if ($poolInfo['code'] !== 1) { @@ -245,7 +242,7 @@ class BlindBoxTurntableGiftDrawWorld extends Model } $totalDrawTimes = 0; // 总抽奖次数重置 } - + $current_xlh_periods_num = $this->getCachedXlhPeriodsNum("get"); // 5. 使用Alias Method预计算抽奖结果(O(1)复杂度) $precomputedResults = $this->precomputeResultsWithAliasMethod( $toarray, @@ -267,8 +264,8 @@ class BlindBoxTurntableGiftDrawWorld extends Model 'data' => [ 'results' => $precomputedResults['precomputedResults'], 'current_xlh_periods_num' => $current_xlh_periods_num, - 'xlh_is_piao_ping' => $xlh_is_piao_ping, 'availableGifts' => $precomputedResults['precomputedResultss'], + 'addcurrentXlhPeriodsNum' => $precomputedResults['addcurrentXlhPeriodsNum'], ] ]; } @@ -288,6 +285,7 @@ class BlindBoxTurntableGiftDrawWorld extends Model ) { $precomputedResults = []; $precomputedResultss = []; + $addcurrentXlhPeriodsNum = 0; // 计算上期剩余礼物总数 $remainingGiftCount = array_sum(array_column($remaining_available_gifts, 'remaining_number')); @@ -328,6 +326,7 @@ class BlindBoxTurntableGiftDrawWorld extends Model ]; $totalDrawTimes++; $currentXlhPeriodsNum++; + $addcurrentXlhPeriodsNum++; // 更新Alias表 $this->updateAliasTable($aliasTableForRemaining, $selectedGift['id']); @@ -370,6 +369,7 @@ class BlindBoxTurntableGiftDrawWorld extends Model ]; $totalDrawTimes++; $currentXlhPeriodsNum++; + $addcurrentXlhPeriodsNum++; // 更新Alias表 $this->updateAliasTable($aliasTableForNew, $selectedGift['id']); @@ -378,7 +378,7 @@ class BlindBoxTurntableGiftDrawWorld extends Model } } - return ['precomputedResults' => $precomputedResults, 'precomputedResultss' => $precomputedResultss]; + return ['precomputedResults' => $precomputedResults, 'precomputedResultss' => $precomputedResultss, 'addcurrentXlhPeriodsNum' => $addcurrentXlhPeriodsNum]; } /** @@ -644,8 +644,8 @@ class BlindBoxTurntableGiftDrawWorld extends Model $boxTurntableLog, $room_id, $xlh_ext, - $xlhIsPiaoPing, $currentXlhPeriodsNum, + $addcurrentXlhPeriodsNum, $room ) { // 1. 批量插入盲盒转盘结果记录 @@ -653,7 +653,7 @@ class BlindBoxTurntableGiftDrawWorld extends Model // 3. 处理巡乐会相关操作 if (!empty($xlh_ext) && $xlh_ext['inlet_bag_id'] == $precomputedResults[0]['gift_bag_detail']['gift_bag_id']) { - $this->handleXlhOperations($room_id, $xlh_ext, $xlhIsPiaoPing, $currentXlhPeriodsNum,$room); + $this->handleXlhOperations($room_id, $xlh_ext, $currentXlhPeriodsNum,$addcurrentXlhPeriodsNum,$room); } } @@ -755,8 +755,9 @@ class BlindBoxTurntableGiftDrawWorld extends Model /** * 处理巡乐会相关操作 */ - private function handleXlhOperations($room_id, $xlh_ext, $xlhIsPiaoPing, $currentXlhPeriodsNum,$room) + private function handleXlhOperations($room_id, $xlh_ext, $currentXlhPeriodsNum,$addcurrentXlhPeriodsNum,$room) { + $xlhIsPiaoPing = 0; $xlhPeriodsNum = $this->getCachedXlhPeriodsNum("get"); if($xlhPeriodsNum < $xlh_ext['open_condition']['waiting_start_num'] && $currentXlhPeriodsNum >= $xlh_ext['open_condition']['waiting_start_num']){ $xlhIsPiaoPing = 1; @@ -765,7 +766,7 @@ class BlindBoxTurntableGiftDrawWorld extends Model $xlhIsPiaoPing = 2; } // 更新房间巡乐会次数 - $this->getCachedXlhPeriodsNum("set",$currentXlhPeriodsNum); + $this->getCachedXlhPeriodsNum("set",$addcurrentXlhPeriodsNum); // 处理飘屏 if ($xlhIsPiaoPing == 1 || $xlhIsPiaoPing == 2) { @@ -989,7 +990,7 @@ class BlindBoxTurntableGiftDrawWorld extends Model $cacheKey = "xlh_periods_num"; $xlh_periods_num = Cache::get($cacheKey) ?? 0; if($type=="set"){ - $xlh_periods_num = $num; + $xlh_periods_num = $xlh_periods_num + $num; Cache::set($cacheKey, $xlh_periods_num, 0); } return $xlh_periods_num;