fix: 베팅 대상에 들어가지 않은 국가가 성공 대상인 경우 버그

- purifyBettingKey에서 '해당 국가 없음' 에러를 내지 않도록 변경
This commit is contained in:
2022-03-27 13:11:08 +09:00
parent 3400f5843e
commit 65e1495b44
2 changed files with 14 additions and 4 deletions
+2 -2
View File
@@ -26,7 +26,7 @@ class Betting
return Json::encode($bettingType);
}
public function purifyBettingKey(array $bettingType): array
public function purifyBettingKey(array $bettingType, bool $ignoreOver = false): array
{
$selectCnt = $this->info->selectCnt;
sort($bettingType, SORT_NUMERIC);
@@ -39,7 +39,7 @@ class Betting
throw new \InvalidArgumentException('올바르지 않은 값이 있습니다.(0 미만)' . print_r($bettingType, true));
}
if (Util::array_last($bettingType) >= count($this->info->candidates)) {
if (!$ignoreOver && Util::array_last($bettingType) >= count($this->info->candidates)) {
throw new \InvalidArgumentException('올바르지 않은 값이 있습니다.(초과)' . print_r($bettingType, true));
}
+12 -2
View File
@@ -49,10 +49,20 @@ class FinishNationBetting extends \sammo\Event\Action
}
$winnerTypes = [];
$notInBettingWinner = 0;
foreach ($winnerNations as $winnerNationID) {
$winnerTypes[] = $nationIDMap[$winnerNationID];
if(key_exists($winnerNationID, $nationIDMap)){
$winnerTypes[] = $nationIDMap[$winnerNationID];
}
else{
//혹시라도 베팅 시점 이후에 생성된 국가라 없을 수 있다.
$winnerTypes[] = count($nationIDMap) + $notInBettingWinner;
$notInBettingWinner += 1;
}
}
$winnerTypes = $bettingHelper->purifyBettingKey($winnerTypes);
$winnerTypes = $bettingHelper->purifyBettingKey($winnerTypes, $notInBettingWinner > 0);
$bettingHelper->giveReward($winnerTypes);
$logger = new ActionLogger(0, 0, $env['year'], $env['month']);