fix(core): harden settlement and wallet integration
This commit is contained in:
@@ -2,11 +2,10 @@
|
||||
|
||||
namespace App\Services\AgentSettlement;
|
||||
|
||||
use App\Models\Player;
|
||||
use App\Models\TicketItem;
|
||||
use App\Services\Player\PlayerCreditService;
|
||||
use App\Support\PlayerFundingMode;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Services\Player\PlayerCreditService;
|
||||
|
||||
/**
|
||||
* 彩票注单游戏结算侧入账:快照、占成流水、回水计提、玩家已用额度。
|
||||
@@ -30,8 +29,12 @@ final class AgentGameSettlementRecorder
|
||||
&& (int) ($player->agent_node_id ?? 0) > 0;
|
||||
}
|
||||
|
||||
public function recordForTicketItem(TicketItem $item, int $netWin, string $terminalStatus): void
|
||||
{
|
||||
public function recordForTicketItem(
|
||||
TicketItem $item,
|
||||
int $netWin,
|
||||
string $terminalStatus,
|
||||
int $settlementVersion = 0,
|
||||
): void {
|
||||
if (! $this->shouldRecord($item)) {
|
||||
return;
|
||||
}
|
||||
@@ -77,7 +80,7 @@ final class AgentGameSettlementRecorder
|
||||
|
||||
$settledAt = now();
|
||||
|
||||
DB::transaction(function () use ($item, $player, $snapshot, $shareSnapshot, $basicRebateRate, $gameWinLoss, $basicRebate, $result, $settledAt, $validBet, $extraRebate, $gameType): void {
|
||||
DB::transaction(function () use ($item, $player, $snapshot, $shareSnapshot, $basicRebateRate, $gameWinLoss, $basicRebate, $result, $settledAt, $validBet, $extraRebate, $gameType, $settlementVersion): void {
|
||||
$item->forceFill([
|
||||
'agent_node_id' => $snapshot['agent_node_id'],
|
||||
'share_snapshot' => $shareSnapshot,
|
||||
@@ -134,13 +137,13 @@ final class AgentGameSettlementRecorder
|
||||
|
||||
$holdAmount = (int) $item->actual_deduct_amount;
|
||||
if ($holdAmount > 0) {
|
||||
$this->playerCreditService->releaseBetHold($player, $holdAmount, $item->id);
|
||||
$this->playerCreditService->releaseBetHold($player, $holdAmount, $item->id, $settlementVersion);
|
||||
}
|
||||
|
||||
if ($gameWinLoss > 0) {
|
||||
$this->playerCreditService->applySettledLoss($player, (int) round($gameWinLoss), $item->id);
|
||||
$this->playerCreditService->applySettledLoss($player, (int) round($gameWinLoss), $item->id, $settlementVersion);
|
||||
} elseif ($gameWinLoss < 0) {
|
||||
$this->playerCreditService->applySettledWin($player, (int) round(abs($gameWinLoss)), $item->id);
|
||||
$this->playerCreditService->applySettledWin($player, (int) round(abs($gameWinLoss)), $item->id, $settlementVersion);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user