盲盒转盘优化-调试
This commit is contained in:
@@ -35,6 +35,9 @@ class SysSet extends adminApi
|
|||||||
'10' => '邀请奖励',
|
'10' => '邀请奖励',
|
||||||
'11' => '二级密码',
|
'11' => '二级密码',
|
||||||
];
|
];
|
||||||
|
public $noAdminConfigType = [
|
||||||
|
'1' => '基础设置',
|
||||||
|
];
|
||||||
|
|
||||||
public function _initialize()
|
public function _initialize()
|
||||||
{
|
{
|
||||||
@@ -45,14 +48,18 @@ class SysSet extends adminApi
|
|||||||
* 类型列表
|
* 类型列表
|
||||||
*/
|
*/
|
||||||
public function type_list(){
|
public function type_list(){
|
||||||
$configType = $this->configType;
|
if($this->auth->isSuperAdmin()){
|
||||||
|
$configType = $this->configType;
|
||||||
|
}else{
|
||||||
|
$configType = $this->noAdminConfigType;
|
||||||
|
}
|
||||||
$list = [];
|
$list = [];
|
||||||
$i=0;
|
$i=0;
|
||||||
foreach ($configType as $k=>$v){
|
foreach ($configType as $k=>$v){
|
||||||
$list[$i]['id'] = $k;
|
$list[$i]['id'] = $k;
|
||||||
$list[$i]['name'] = $v;
|
$list[$i]['name'] = $v;
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
return V(1,"成功", $list);
|
return V(1,"成功", $list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -379,6 +379,24 @@ class BlindBoxTurntableGiftDrawWorld extends Model
|
|||||||
for ($i = 0; $i < $userNewAllocation; $i++) {
|
for ($i = 0; $i < $userNewAllocation; $i++) {
|
||||||
$selectedGift = $this->selectGiftWithAliasMethod($aliasTableForNew);
|
$selectedGift = $this->selectGiftWithAliasMethod($aliasTableForNew);
|
||||||
if ($selectedGift) {
|
if ($selectedGift) {
|
||||||
|
// 检查实际库存是否足够
|
||||||
|
if ($selectedGift['remaining_number'] <= 0) {
|
||||||
|
// 如果库存不足,重新构建 Alias 表
|
||||||
|
$aliasTableForNew = $this->buildAliasTable($availableGifts);
|
||||||
|
$selectedGift = $this->selectGiftWithAliasMethod($aliasTableForNew);
|
||||||
|
}
|
||||||
|
// 更新内存中的礼物库存
|
||||||
|
foreach ($availableGifts as &$gift) {
|
||||||
|
if ($gift['id'] == $selectedGift['id']) {
|
||||||
|
$gift['remaining_number']--;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unset($gift); // 清除引用
|
||||||
|
|
||||||
|
// 更新 Alias 表
|
||||||
|
$this->updateAliasTable($aliasTableForNew, $selectedGift['id']);
|
||||||
|
|
||||||
$giftInfoMap = $this->preloadGiftInfo($availableGifts);
|
$giftInfoMap = $this->preloadGiftInfo($availableGifts);
|
||||||
$gift = $giftInfoMap[$selectedGift['foreign_id']];
|
$gift = $giftInfoMap[$selectedGift['foreign_id']];
|
||||||
if($gift){
|
if($gift){
|
||||||
@@ -1249,6 +1267,10 @@ class BlindBoxTurntableGiftDrawWorld extends Model
|
|||||||
// 批量更新库存
|
// 批量更新库存
|
||||||
ksort($inventory_updates); // 按ID排序
|
ksort($inventory_updates); // 按ID排序
|
||||||
foreach ($inventory_updates as $detail_id => $count) {
|
foreach ($inventory_updates as $detail_id => $count) {
|
||||||
|
$bag_detail = db::name("vs_gift_bag_detail")->field('remaining_number') ->where('id',$detail_id)->find();
|
||||||
|
if($bag_detail['remaining_number'] < $count){
|
||||||
|
throw new \Exception('库存不足');
|
||||||
|
}
|
||||||
db::name("vs_gift_bag_detail")->where('id',$detail_id)->setDec('remaining_number', $count);
|
db::name("vs_gift_bag_detail")->where('id',$detail_id)->setDec('remaining_number', $count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user