feat(tests): 添加结算相关功能的测试用例,增强代码覆盖率
This commit is contained in:
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user