refactor:拆分 API 路由与请求校验,统一 final 类和代码风格
This commit is contained in:
@@ -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'])
|
||||
|
||||
@@ -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'])
|
||||
|
||||
Reference in New Issue
Block a user