refactor:拆分 API 路由与请求校验,统一 final 类和代码风格

This commit is contained in:
2026-05-13 11:54:40 +08:00
parent 5d2dbdbe1d
commit 805847954d
281 changed files with 1886 additions and 1308 deletions

View File

@@ -2,11 +2,12 @@
namespace App\Http\Controllers\Api\V1\Admin\Wallet;
use App\Http\Controllers\Controller;
use App\Models\TransferOrder;
use App\Support\ApiResponse;
use App\Models\TransferOrder;
use App\Support\PaginationTrait;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\TransferOrderListRequest;
/**
* 后台:转账单列表(主站 彩票 {@see transfer_orders})。
@@ -25,26 +26,16 @@ use Illuminate\Http\Request;
*/
final class TransferOrderListController extends Controller
{
use PaginationTrait;
private const ALLOWED_STATUS = ['processing', 'success', 'failed', 'pending_reconcile'];
public function __invoke(Request $request): JsonResponse
public function __invoke(TransferOrderListRequest $request): JsonResponse
{
$validated = validator($request->query(), [
'page' => ['sometimes', 'integer', 'min:1'],
'per_page' => ['sometimes', 'integer', 'min:1', 'max:100'],
'size' => ['sometimes', 'integer', 'min:1', 'max:100'],
'player_id' => ['sometimes', 'nullable', 'integer', 'min:1'],
'player_account' => ['sometimes', 'nullable', 'string', 'max:128'],
'transfer_no' => ['sometimes', 'nullable', 'string', 'max:96'],
'external_ref_no' => ['sometimes', 'nullable', 'string', 'max:96'],
'created_from' => ['sometimes', 'nullable', 'date_format:Y-m-d'],
'created_to' => ['sometimes', 'nullable', 'date_format:Y-m-d'],
'status' => ['sometimes', 'nullable', 'string', 'max:256'],
])->validate();
$validated = $request->validated();
$perPage = (int) ($validated['per_page'] ?? $validated['size'] ?? 20);
$perPage = min(100, max(1, $perPage));
$page = max(1, (int) ($validated['page'] ?? 1));
$perPage = $this->perPage($request, 'per_page', 20, 100);
$page = $this->page($request);
$query = TransferOrder::query()
->with(['player:id,site_code,site_player_id,username,nickname'])

View File

@@ -2,11 +2,12 @@
namespace App\Http\Controllers\Api\V1\Admin\Wallet;
use App\Http\Controllers\Controller;
use App\Models\WalletTxn;
use App\Support\ApiResponse;
use App\Support\PaginationTrait;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\WalletTransactionListRequest;
/**
* 后台:彩票钱包流水列表 {@see wallet_txns}
@@ -25,27 +26,16 @@ use Illuminate\Http\Request;
*/
final class WalletTransactionListController extends Controller
{
use PaginationTrait;
private const ALLOWED_STATUS = ['posted', 'pending_reconcile'];
public function __invoke(Request $request): JsonResponse
public function __invoke(WalletTransactionListRequest $request): JsonResponse
{
$validated = validator($request->query(), [
'page' => ['sometimes', 'integer', 'min:1'],
'per_page' => ['sometimes', 'integer', 'min:1', 'max:100'],
'size' => ['sometimes', 'integer', 'min:1', 'max:100'],
'player_id' => ['sometimes', 'nullable', 'integer', 'min:1'],
'player_account' => ['sometimes', 'nullable', 'string', 'max:128'],
'txn_no' => ['sometimes', 'nullable', 'string', 'max:96'],
'external_ref_no' => ['sometimes', 'nullable', 'string', 'max:96'],
'created_from' => ['sometimes', 'nullable', 'date_format:Y-m-d'],
'created_to' => ['sometimes', 'nullable', 'date_format:Y-m-d'],
'biz_type' => ['sometimes', 'nullable', 'string', 'max:64'],
'status' => ['sometimes', 'nullable', 'string', 'max:128'],
])->validate();
$validated = $request->validated();
$perPage = (int) ($validated['per_page'] ?? $validated['size'] ?? 20);
$perPage = min(100, max(1, $perPage));
$page = max(1, (int) ($validated['page'] ?? 1));
$perPage = $this->perPage($request, 'per_page', 20, 100);
$page = $this->page($request);
$query = WalletTxn::query()
->with(['player:id,site_code,site_player_id,username,nickname'])