diff --git a/application/api/model/BlindBoxTurntableGiftDrawWorldNew.php b/application/api/model/BlindBoxTurntableGiftDrawWorldNew.php index ab55fa4..6ea911e 100644 --- a/application/api/model/BlindBoxTurntableGiftDrawWorldNew.php +++ b/application/api/model/BlindBoxTurntableGiftDrawWorldNew.php @@ -708,30 +708,18 @@ class BlindBoxTurntableGiftDrawWorldNew extends Model // 批量更新 foreach ($inventoryUpdates as $giftId => $count) { - $giftBagDetail = Db::name("vs_gift_bag_detail") - ->where('id', $giftId) - ->find(); $giftBagDetailCached = $this->getCachedGiftBagDetailItem($gift_bag_id, $giftId); - if (!$giftBagDetail) { - throw new \Exception("礼物详情不存在,ID: " . $giftId); - } - $upRemainingNumber = $giftBagDetail['remaining_number'] - $count; - if($upRemainingNumber!=$giftBagDetailCached['remaining_number']){ - $this->redis->setex( 'blind_box_draw_errors_' . date('Y-m-d-H-i-s'), 86400 * 7, "有并发:礼物数量不一致,礼物ID: " . $giftId . '数据库数量: '.$upRemainingNumber. '缓存数量: '.$giftBagDetailCached['remaining_number']. ' ' .json_encode($giftBagDetail) . ' ' .json_encode($giftBagDetailCached)); + if(empty($giftBagDetailCached)){ + $giftBagDetail = db::name("vs_gift_bag_detail")->where('id',$giftId)->find(); + $upRemainingNumber = $giftBagDetail['remaining_number'] - $count; + }else{ $upRemainingNumber = $giftBagDetailCached['remaining_number']; } - // 检查库存是否足够 - if ($upRemainingNumber < 0) { - throw new \Exception("礼物库存不足,ID: " . $giftId); - } - if($upRemainingNumber = $giftBagDetail['remaining_number']){ - return; - } $ret = db::name("vs_gift_bag_detail")->where('id',$giftId)->update([ 'remaining_number' => $upRemainingNumber ]); if (!$ret) { - throw new \Exception('更新礼物剩余数量失败'); + throw new \Exception('更新礼物剩余数量失败 ID: ' . $giftId); } } }