feat(tests): 添加结算相关功能的测试用例,增强代码覆盖率
Some checks failed
lotterLaravel CI / test (push) Has been cancelled
lotterLaravel E2E / e2e-api (push) Has been cancelled

This commit is contained in:
2026-06-30 11:41:49 +08:00
parent c83343e989
commit 200269196e
7 changed files with 508 additions and 31 deletions

View File

@@ -36,6 +36,10 @@ final class AgentGameSettlementRecorder
return;
}
if ($this->hasActiveShareLedger($item->id)) {
return;
}
$player = $item->player;
if ($player === null) {
return;
@@ -168,6 +172,20 @@ final class AgentGameSettlementRecorder
return 0.0;
}
/** 原分账行存在且尚未被冲正时视为活跃,禁止重复入账。 */
private function hasActiveShareLedger(int $ticketItemId): bool
{
return DB::table('share_ledger as sl')
->where('sl.ticket_item_id', $ticketItemId)
->whereNull('sl.reversal_of_id')
->whereNotExists(function ($query): void {
$query->selectRaw('1')
->from('share_ledger as rev')
->whereColumn('rev.reversal_of_id', 'sl.id');
})
->exists();
}
private function normalizeRate(float $rate): float
{
return max(0.0, min(1.0, $rate));