feat(tests): 添加结算相关功能的测试用例,增强代码覆盖率
This commit is contained in:
@@ -3,11 +3,14 @@
|
||||
namespace App\Services\Draw;
|
||||
|
||||
use App\Models\Draw;
|
||||
use App\Models\Player;
|
||||
use App\Models\TicketItem;
|
||||
use App\Models\TicketOrder;
|
||||
use App\Models\WalletTxn;
|
||||
use App\Services\Player\PlayerCreditService;
|
||||
use App\Services\Ticket\RiskPoolService;
|
||||
use App\Services\Ticket\TicketWalletService;
|
||||
use App\Support\PlayerFundingMode;
|
||||
|
||||
/**
|
||||
* 取消期号前:退本、释池,避免已扣款注单悬空。
|
||||
@@ -17,6 +20,7 @@ final class DrawCancelBetRefundService
|
||||
public function __construct(
|
||||
private readonly RiskPoolService $riskPool,
|
||||
private readonly TicketWalletService $ticketWallet,
|
||||
private readonly PlayerCreditService $playerCreditService,
|
||||
) {}
|
||||
|
||||
public function refundOpenBetsForDraw(Draw $draw): void
|
||||
@@ -76,18 +80,27 @@ final class DrawCancelBetRefundService
|
||||
])->save();
|
||||
}
|
||||
|
||||
$hasPostedDeduct = WalletTxn::query()
|
||||
->where('biz_type', 'bet_deduct')
|
||||
->where('biz_no', $lockedOrder->order_no)
|
||||
->where('status', 'posted')
|
||||
->exists();
|
||||
$player = Player::query()->whereKey($lockedOrder->player_id)->first();
|
||||
|
||||
if ($hasPostedDeduct) {
|
||||
$this->ticketWallet->reverseBetDeduct($lockedOrder);
|
||||
if ($player !== null && PlayerFundingMode::usesCredit($player)) {
|
||||
$holdAmount = (int) $lockedOrder->total_actual_deduct;
|
||||
if ($holdAmount > 0) {
|
||||
$this->playerCreditService->reverseBetHold($player, $holdAmount, (int) $lockedOrder->id);
|
||||
}
|
||||
} else {
|
||||
$hasPostedDeduct = WalletTxn::query()
|
||||
->where('biz_type', 'bet_deduct')
|
||||
->where('biz_no', $lockedOrder->order_no)
|
||||
->where('status', 'posted')
|
||||
->exists();
|
||||
|
||||
if ($hasPostedDeduct) {
|
||||
$this->ticketWallet->reverseBetDeduct($lockedOrder);
|
||||
}
|
||||
|
||||
$this->ticketWallet->releaseReservedBetDeduct($lockedOrder, 'draw_cancelled_release');
|
||||
}
|
||||
|
||||
$this->ticketWallet->releaseReservedBetDeduct($lockedOrder, 'draw_cancelled_release');
|
||||
|
||||
$lockedOrder->forceFill(['status' => 'refunded'])->save();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user