From 3d4465a5c6bf91de23b0f70ff87bda541ffbea9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E9=92=8A?= Date: Wed, 29 Oct 2025 17:03:57 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=B2=E7=9B=92=E8=BD=AC=E7=9B=98=E4=BC=98?= =?UTF-8?q?=E5=8C=96-=E9=87=8D=E6=9E=84-=E8=B0=83=E8=AF=95-=E5=86=8D?= =?UTF-8?q?=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/model/BlindBoxTurntableGiftDrawWorldNew.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/application/api/model/BlindBoxTurntableGiftDrawWorldNew.php b/application/api/model/BlindBoxTurntableGiftDrawWorldNew.php index 0293286..ce73eac 100644 --- a/application/api/model/BlindBoxTurntableGiftDrawWorldNew.php +++ b/application/api/model/BlindBoxTurntableGiftDrawWorldNew.php @@ -225,6 +225,11 @@ class BlindBoxTurntableGiftDrawWorldNew extends Model $selectedGift = $this->selectGiftWithAliasMethod($aliasTableForNew); } if ($selectedGift) { + $giftBagDetailCached = $this->getCachedGiftBagDetailItem($gift_bag_id, $selectedGift['id']); + if($giftBagDetailCached['remaining_number']<=0){ + $aliasTableForNew = $this->buildAliasTable($availableGifts); + $selectedGift = $this->selectGiftWithAliasMethod($aliasTableForNew); + } $gift = $giftInfoMap[$selectedGift['foreign_id']]??[]; $precomputedResults[] = [ 'gift_user_id' => $giftUserId, @@ -507,7 +512,9 @@ class BlindBoxTurntableGiftDrawWorldNew extends Model if ($gift_bag_detail_data) { foreach ($gift_bag_detail_data as &$item) { if ($item['id'] == $detail_id) { - $item['remaining_number'] -= $decrement; + if( $item['remaining_number'] >= $decrement){ + $item['remaining_number'] -= $decrement; + } break; } } @@ -745,6 +752,9 @@ class BlindBoxTurntableGiftDrawWorldNew extends Model }else{ $upRemainingNumber = $giftBagDetailCached['remaining_number']; } + if($upRemainingNumber < 0){ + throw new \Exception('礼物数量不足'); + } $ret = db::name("vs_gift_bag_detail")->where('id',$giftId)->update([ 'remaining_number' => $upRemainingNumber ]);