From 442b6dc7586d081e084a387fd1d5ef922b4fdd3a Mon Sep 17 00:00:00 2001 From: kang Date: Mon, 1 Jun 2026 09:24:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E9=92=B1=E5=8C=85?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=8E=A7=E5=88=B6=E5=99=A8=E4=BB=A5=E5=90=88?= =?UTF-8?q?=E5=B9=B6=20bet=5Freverse=20=E8=87=B3=20reversal=20=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改 WalletLogsController,调整 biz_type 映射,将 bet_reverse 合并至 reversal。 - 新增测试用例,验证钱包日志过滤功能,确保 bet_reverse 不在 bet 类型中显示,而在 reversal 类型中正确返回。 --- .../Api/V1/Wallet/WalletLogsController.php | 4 +- tests/Feature/WalletLogsTest.php | 59 +++++++++++++++++++ 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Api/V1/Wallet/WalletLogsController.php b/app/Http/Controllers/Api/V1/Wallet/WalletLogsController.php index 9b225a7..6925063 100644 --- a/app/Http/Controllers/Api/V1/Wallet/WalletLogsController.php +++ b/app/Http/Controllers/Api/V1/Wallet/WalletLogsController.php @@ -26,8 +26,8 @@ final class WalletLogsController extends Controller 'transfer_in' => ['transfer_in'], 'transfer_out' => ['transfer_out'], 'refund' => ['transfer_out_refund'], - 'reversal' => ['reversal'], - 'bet' => ['bet_deduct', 'bet', 'bet_reverse'], + 'reversal' => ['reversal', 'bet_reverse'], + 'bet' => ['bet_deduct', 'bet'], 'prize' => ['settle_payout', 'prize', 'jackpot_manual_payout'], ]; diff --git a/tests/Feature/WalletLogsTest.php b/tests/Feature/WalletLogsTest.php index 4246fbc..7a54d51 100644 --- a/tests/Feature/WalletLogsTest.php +++ b/tests/Feature/WalletLogsTest.php @@ -83,6 +83,65 @@ test('wallet logs filters bet_deduct as public bet type', function () { ->assertJsonPath('data.items.0.biz_type', 'bet_deduct'); }); +test('wallet logs bet filter excludes bet_reverse shown as reversal', function () { + $player = Player::query()->create([ + 'site_code' => 'main', + 'site_player_id' => 'wl5', + 'default_currency' => 'NPR', + 'status' => 0, + ]); + + $wallet = PlayerWallet::query()->create([ + 'player_id' => $player->id, + 'wallet_type' => 'lottery', + 'currency_code' => 'NPR', + 'balance' => 1000, + 'frozen_balance' => 0, + 'status' => 0, + 'version' => 0, + ]); + + WalletTxn::query()->create([ + 'txn_no' => 'WX_bet_deduct_2', + 'player_id' => $player->id, + 'wallet_id' => $wallet->id, + 'biz_type' => 'bet_deduct', + 'biz_no' => 'TO_bet_only', + 'direction' => 2, + 'amount' => 1100, + 'balance_before' => 100000, + 'balance_after' => 98900, + 'status' => 'posted', + ]); + + WalletTxn::query()->create([ + 'txn_no' => 'WX_bet_reverse_1', + 'player_id' => $player->id, + 'wallet_id' => $wallet->id, + 'biz_type' => 'bet_reverse', + 'biz_no' => 'TO_bet_only', + 'direction' => 1, + 'amount' => 1100, + 'balance_before' => 98900, + 'balance_after' => 100000, + 'status' => 'posted', + ]); + + $this->withHeader('Authorization', 'Bearer dev:'.$player->id) + ->getJson('/api/v1/wallet/logs?type=bet') + ->assertOk() + ->assertJsonPath('data.total', 1) + ->assertJsonPath('data.items.0.type', 'bet') + ->assertJsonPath('data.items.0.biz_type', 'bet_deduct'); + + $this->withHeader('Authorization', 'Bearer dev:'.$player->id) + ->getJson('/api/v1/wallet/logs?type=reversal') + ->assertOk() + ->assertJsonPath('data.total', 1) + ->assertJsonPath('data.items.0.type', 'reversal') + ->assertJsonPath('data.items.0.biz_type', 'bet_reverse'); +}); + test('wallet logs filters settle_payout as public prize type', function () { $player = Player::query()->create([ 'site_code' => 'main',