From d8e9fa5f4c1ba06767581e50f089fad8c088b8c9 Mon Sep 17 00:00:00 2001 From: kang Date: Wed, 13 May 2026 11:59:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=B4=A7=E5=B8=81?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E5=A4=9A=E4=B8=AA=E6=8E=A7=E5=88=B6=E5=99=A8=E4=BB=A5?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=87=91=E9=A2=9D=E5=92=8C=E4=BD=99=E9=A2=9D?= =?UTF-8?q?=E7=9A=84=E6=A0=BC=E5=BC=8F=E5=8C=96=E6=98=BE=E7=A4=BA=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=BC=BA=20API=20=E5=93=8D=E5=BA=94=E7=9A=84=E5=8F=AF?= =?UTF-8?q?=E8=AF=BB=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/Risk/AdminRiskPoolShowController.php | 12 ++++++------ .../Wallet/TransferOrderListController.php | 5 ++++- .../Wallet/WalletTransactionListController.php | 14 ++++++++++---- .../V1/Jackpot/JackpotSummaryController.php | 6 +++++- .../V1/Ticket/TicketItemsIndexController.php | 18 ++++++++++++++---- .../Api/V1/Wallet/WalletBalanceController.php | 8 +++++++- .../Api/V1/Wallet/WalletLogsController.php | 15 ++++++++++++--- app/Support/AdminMessage.php | 4 ++-- 8 files changed, 60 insertions(+), 22 deletions(-) diff --git a/app/Http/Controllers/Api/V1/Admin/Risk/AdminRiskPoolShowController.php b/app/Http/Controllers/Api/V1/Admin/Risk/AdminRiskPoolShowController.php index b8ca992..2b68a2e 100644 --- a/app/Http/Controllers/Api/V1/Admin/Risk/AdminRiskPoolShowController.php +++ b/app/Http/Controllers/Api/V1/Admin/Risk/AdminRiskPoolShowController.php @@ -2,16 +2,16 @@ namespace App\Http\Controllers\Api\V1\Admin\Risk; -use App\Http\Controllers\Controller; -use App\Lottery\ErrorCode; use App\Models\Draw; use App\Models\RiskPool; -use App\Models\RiskPoolLockLog; -use App\Support\AdminApiList; +use App\Lottery\ErrorCode; use App\Support\ApiResponse; -use Illuminate\Contracts\Pagination\LengthAwarePaginator; -use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use App\Support\AdminApiList; +use App\Models\RiskPoolLockLog; +use Illuminate\Http\JsonResponse; +use App\Http\Controllers\Controller; +use Illuminate\Contracts\Pagination\LengthAwarePaginator; /** * GET /api/v1/admin/draws/{draw}/risk-pools/{number_4d} — 单号码风险池详情 + 占用流水。 diff --git a/app/Http/Controllers/Api/V1/Admin/Wallet/TransferOrderListController.php b/app/Http/Controllers/Api/V1/Admin/Wallet/TransferOrderListController.php index f9672e2..9b5cfd6 100644 --- a/app/Http/Controllers/Api/V1/Admin/Wallet/TransferOrderListController.php +++ b/app/Http/Controllers/Api/V1/Admin/Wallet/TransferOrderListController.php @@ -6,6 +6,7 @@ use App\Support\ApiResponse; use App\Models\TransferOrder; use App\Support\PaginationTrait; use Illuminate\Http\JsonResponse; +use App\Support\CurrencyFormatter; use App\Http\Controllers\Controller; use App\Http\Requests\Admin\TransferOrderListRequest; @@ -96,6 +97,7 @@ final class TransferOrderListController extends Controller private function formatRow(TransferOrder $o): array { $p = $o->player; + $amount = (int) $o->amount; return [ 'id' => $o->id, @@ -107,7 +109,8 @@ final class TransferOrderListController extends Controller 'nickname' => $p?->nickname, 'direction' => $o->direction, 'currency_code' => $o->currency_code, - 'amount' => (int) $o->amount, + 'amount' => $amount, + 'amount_formatted' => CurrencyFormatter::fromMinor($amount), 'idempotent_key' => $o->idempotent_key, 'status' => $o->status, 'external_ref_no' => $o->external_ref_no, diff --git a/app/Http/Controllers/Api/V1/Admin/Wallet/WalletTransactionListController.php b/app/Http/Controllers/Api/V1/Admin/Wallet/WalletTransactionListController.php index 00977b4..bf32892 100644 --- a/app/Http/Controllers/Api/V1/Admin/Wallet/WalletTransactionListController.php +++ b/app/Http/Controllers/Api/V1/Admin/Wallet/WalletTransactionListController.php @@ -6,6 +6,7 @@ use App\Models\WalletTxn; use App\Support\ApiResponse; use App\Support\PaginationTrait; use Illuminate\Http\JsonResponse; +use App\Support\CurrencyFormatter; use App\Http\Controllers\Controller; use App\Http\Requests\Admin\WalletTransactionListRequest; @@ -100,6 +101,9 @@ final class WalletTransactionListController extends Controller private function formatRow(WalletTxn $t): array { $p = $t->player; + $amount = (int) $t->amount; + $balanceBefore = (int) $t->balance_before; + $balanceAfter = (int) $t->balance_after; return [ 'id' => $t->id, @@ -112,15 +116,17 @@ final class WalletTransactionListController extends Controller 'biz_type' => $t->biz_type, 'biz_no' => $t->biz_no, 'direction' => (int) $t->direction, - 'amount' => (int) $t->amount, - 'balance_before' => (int) $t->balance_before, - 'balance_after' => (int) $t->balance_after, + 'amount' => $amount, + 'amount_formatted' => CurrencyFormatter::fromMinor($amount), + 'balance_before' => $balanceBefore, + 'balance_before_formatted' => CurrencyFormatter::fromMinor($balanceBefore), + 'balance_after' => $balanceAfter, + 'balance_after_formatted' => CurrencyFormatter::fromMinor($balanceAfter), 'status' => $t->status, 'external_ref_no' => $t->external_ref_no, 'idempotent_key' => $t->idempotent_key, 'remark' => $t->remark, 'created_at' => $t->created_at?->toIso8601String(), - /** 展示用「完成时间」;无业务终态时可与 created_at 相同 */ 'updated_at' => $t->updated_at?->toIso8601String(), ]; } diff --git a/app/Http/Controllers/Api/V1/Jackpot/JackpotSummaryController.php b/app/Http/Controllers/Api/V1/Jackpot/JackpotSummaryController.php index 8040daf..161bdcc 100644 --- a/app/Http/Controllers/Api/V1/Jackpot/JackpotSummaryController.php +++ b/app/Http/Controllers/Api/V1/Jackpot/JackpotSummaryController.php @@ -6,6 +6,7 @@ use App\Models\JackpotPool; use App\Support\ApiResponse; use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; +use App\Support\CurrencyFormatter; use App\Http\Controllers\Controller; /** @@ -25,10 +26,13 @@ final class JackpotSummaryController extends Controller ->where('status', 1) ->first(); + $amountMinor = $pool !== null ? (int) $pool->current_amount : 0; + return ApiResponse::success([ 'currency_code' => $currency, 'enabled' => $pool !== null, - 'current_amount_minor' => $pool !== null ? (int) $pool->current_amount : 0, + 'current_amount_minor' => $amountMinor, + 'current_amount_formatted' => CurrencyFormatter::fromMinor($amountMinor), ]); } } diff --git a/app/Http/Controllers/Api/V1/Ticket/TicketItemsIndexController.php b/app/Http/Controllers/Api/V1/Ticket/TicketItemsIndexController.php index 0a8d09c..821be7d 100644 --- a/app/Http/Controllers/Api/V1/Ticket/TicketItemsIndexController.php +++ b/app/Http/Controllers/Api/V1/Ticket/TicketItemsIndexController.php @@ -8,6 +8,7 @@ use App\Support\ApiResponse; use Illuminate\Http\Request; use App\Support\PaginationTrait; use Illuminate\Http\JsonResponse; +use App\Support\CurrencyFormatter; use App\Http\Controllers\Controller; /** @@ -42,6 +43,11 @@ final class TicketItemsIndexController extends Controller $paginator = $query->paginate(perPage: $perPage, page: $page); $items = collect($paginator->items())->map(function (TicketItem $row): array { + $totalBet = (int) $row->total_bet_amount; + $actualDeduct = (int) $row->actual_deduct_amount; + $winAmount = (int) $row->win_amount; + $jackpotWin = (int) $row->jackpot_win_amount; + return [ 'ticket_no' => $row->ticket_no, 'order_no' => $row->order?->order_no, @@ -49,11 +55,15 @@ final class TicketItemsIndexController extends Controller 'currency_code' => $row->order?->currency_code, 'play_code' => $row->play_code, 'original_number' => $row->original_number, - 'total_bet_amount' => (int) $row->total_bet_amount, - 'actual_deduct_amount' => (int) $row->actual_deduct_amount, + 'total_bet_amount' => $totalBet, + 'total_bet_amount_formatted' => CurrencyFormatter::fromMinor($totalBet), + 'actual_deduct_amount' => $actualDeduct, + 'actual_deduct_amount_formatted' => CurrencyFormatter::fromMinor($actualDeduct), 'status' => $row->status, - 'win_amount' => (int) $row->win_amount, - 'jackpot_win_amount' => (int) $row->jackpot_win_amount, + 'win_amount' => $winAmount, + 'win_amount_formatted' => CurrencyFormatter::fromMinor($winAmount), + 'jackpot_win_amount' => $jackpotWin, + 'jackpot_win_amount_formatted' => CurrencyFormatter::fromMinor($jackpotWin), 'placed_at' => $row->order?->created_at?->toIso8601String(), 'updated_at' => $row->updated_at?->toIso8601String(), ]; diff --git a/app/Http/Controllers/Api/V1/Wallet/WalletBalanceController.php b/app/Http/Controllers/Api/V1/Wallet/WalletBalanceController.php index c476ae1..a965830 100644 --- a/app/Http/Controllers/Api/V1/Wallet/WalletBalanceController.php +++ b/app/Http/Controllers/Api/V1/Wallet/WalletBalanceController.php @@ -9,6 +9,7 @@ use App\Support\ApiResponse; use Illuminate\Http\Request; use App\Support\CurrencyResolver; use Illuminate\Http\JsonResponse; +use App\Support\CurrencyFormatter; use App\Http\Controllers\Controller; /** @@ -53,14 +54,19 @@ final class WalletBalanceController extends Controller $balance = (int) $wallet->balance; $frozen = (int) $wallet->frozen_balance; + $available = max(0, $balance - $frozen); return ApiResponse::success([ 'balance' => $balance, - 'available_balance' => max(0, $balance - $frozen), + 'balance_formatted' => CurrencyFormatter::fromMinor($balance), + 'available_balance' => $available, + 'available_balance_formatted' => CurrencyFormatter::fromMinor($available), 'main_balance' => null, + 'main_balance_formatted' => null, 'currency_code' => $wallet->currency_code, 'wallet_type' => $wallet->wallet_type, 'frozen_balance' => $frozen, + 'frozen_balance_formatted' => CurrencyFormatter::fromMinor($frozen), ]); } diff --git a/app/Http/Controllers/Api/V1/Wallet/WalletLogsController.php b/app/Http/Controllers/Api/V1/Wallet/WalletLogsController.php index e535414..d58ddbc 100644 --- a/app/Http/Controllers/Api/V1/Wallet/WalletLogsController.php +++ b/app/Http/Controllers/Api/V1/Wallet/WalletLogsController.php @@ -9,6 +9,7 @@ use Illuminate\Http\Request; use App\Models\TransferOrder; use App\Support\PaginationTrait; use Illuminate\Http\JsonResponse; +use App\Support\CurrencyFormatter; use App\Http\Controllers\Controller; /** @@ -123,16 +124,21 @@ final class WalletLogsController extends Controller private function formatTxn(WalletTxn $txn): array { $currency = $txn->wallet?->currency_code ?? ''; + $amount = (int) $txn->amount; + $balanceAfter = (int) $txn->balance_after; return [ 'log_id' => $txn->txn_no, 'type' => $this->bizToPublicType((string) $txn->biz_type), 'biz_type' => $txn->biz_type, 'amount' => $this->signedAmount($txn), - 'amount_abs' => (int) $txn->amount, + 'amount_formatted' => CurrencyFormatter::fromMinor($amount), + 'amount_abs' => $amount, + 'amount_abs_formatted' => CurrencyFormatter::fromMinor($amount), 'direction' => (int) $txn->direction === 1 ? 'in' : 'out', 'currency_code' => $currency, - 'balance_after' => (int) $txn->balance_after, + 'balance_after' => $balanceAfter, + 'balance_after_formatted' => CurrencyFormatter::fromMinor($balanceAfter), 'ref_id' => $txn->biz_no, 'idempotent_key' => $txn->idempotent_key, 'external_ref_no' => $txn->external_ref_no, @@ -162,12 +168,15 @@ final class WalletLogsController extends Controller */ private function formatPendingOrder(TransferOrder $order): array { + $amount = (int) $order->amount; + return [ 'transfer_no' => $order->transfer_no, 'direction' => $order->direction, 'type' => $order->direction === 'in' ? 'transfer_in' : 'transfer_out', 'currency_code' => $order->currency_code, - 'amount' => (int) $order->amount, + 'amount' => $amount, + 'amount_formatted' => CurrencyFormatter::fromMinor($amount), 'status' => $order->status, 'fail_reason' => $order->fail_reason, 'idempotent_key' => $order->idempotent_key, diff --git a/app/Support/AdminMessage.php b/app/Support/AdminMessage.php index fa05a4d..1965947 100644 --- a/app/Support/AdminMessage.php +++ b/app/Support/AdminMessage.php @@ -18,7 +18,7 @@ final class AdminMessage /** * 取通用管理后台错误的用户可见文案(lang/{locale}/admin.php)。 * - * @param string $key 语言包键名,如 'unauthenticated', 'permission_denied' + * @param string $key 语言包键名,如 'unauthenticated', 'permission_denied' */ public static function get(Request $request, string $key): string { @@ -38,7 +38,7 @@ final class AdminMessage /** * 取错误码对应的用户可见文案。 * - * @param int $code {@see ErrorCode} 管理端段(8110–8114) + * @param int $code {@see ErrorCode} 管理端段(8110–8114) */ public static function errorCode(Request $request, int $code): string {