Files
lotteryLaravel/routes/api/v1/admin/draw.php
kang c74bec3f64 feat: 增强抽奖管理功能,支持手动创建、更新和删除期号
- 新增 API 路由和控制器,允许管理员手动创建、更新和删除抽奖期号。
- 更新抽奖调度逻辑,确保在抽奖时间和封盘时间的管理上更加灵活。
- 添加多语言支持的错误信息,提升用户体验。
- 更新测试用例,确保新功能的正确性和稳定性。
2026-05-25 18:00:22 +08:00

118 lines
6.7 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\V1\Admin\Draw\AdminDrawShowController;
use App\Http\Controllers\Api\V1\Admin\Draw\AdminDrawIndexController;
use App\Http\Controllers\Api\V1\Admin\Draw\DrawReopenController;
use App\Http\Controllers\Api\V1\Admin\Draw\DrawCancelController;
use App\Http\Controllers\Api\V1\Admin\Draw\DrawRngRunController;
use App\Http\Controllers\Api\V1\Admin\Draw\AdminDrawStoreController;
use App\Http\Controllers\Api\V1\Admin\Draw\AdminDrawUpdateController;
use App\Http\Controllers\Api\V1\Admin\Draw\AdminDrawDestroyController;
use App\Http\Controllers\Api\V1\Admin\Draw\AdminDrawBatchDestroyController;
use App\Http\Controllers\Api\V1\Admin\Draw\DrawPlanGenerateController;
use App\Http\Controllers\Api\V1\Admin\Draw\DrawSettlementRunController;
use App\Http\Controllers\Api\V1\Admin\Draw\DrawManualCloseController;
use App\Http\Controllers\Api\V1\Admin\Risk\AdminRiskPoolShowController;
use App\Http\Controllers\Api\V1\Admin\Risk\AdminRiskPoolIndexController;
use App\Http\Controllers\Api\V1\Admin\Risk\AdminRiskPoolManualStatusController;
use App\Http\Controllers\Api\V1\Admin\Draw\DrawResultBatchPublishController;
use App\Http\Controllers\Api\V1\Admin\Draw\AdminDrawFinanceSummaryController;
use App\Http\Controllers\Api\V1\Admin\Risk\AdminRiskPoolLockLogIndexController;
use App\Http\Controllers\Api\V1\Admin\Draw\AdminDrawResultBatchesIndexController;
use App\Http\Controllers\Api\V1\Admin\Draw\DrawManualResultBatchStoreController;
use App\Http\Controllers\Api\V1\Admin\Settlement\AdminSettlementBatchShowController;
use App\Http\Controllers\Api\V1\Admin\Settlement\AdminSettlementBatchIndexController;
use App\Http\Controllers\Api\V1\Admin\Settlement\AdminSettlementBatchExportController;
use App\Http\Controllers\Api\V1\Admin\Settlement\AdminSettlementBatchPayoutController;
use App\Http\Controllers\Api\V1\Admin\Settlement\AdminSettlementBatchRejectController;
use App\Http\Controllers\Api\V1\Admin\Settlement\AdminSettlementBatchApproveController;
use App\Http\Controllers\Api\V1\Admin\Settlement\AdminSettlementBatchDetailsController;
/**
* 管理员开奖/风控/结算路由。
*/
// 开奖结果查看 + 风控监控
Route::middleware('admin.api-resource')
->group(function (): void {
Route::get('draws', AdminDrawIndexController::class)
->name('api.v1.admin.draws.index');
Route::get('draws/{draw}', AdminDrawShowController::class)
->name('api.v1.admin.draws.show');
Route::get('draws/{draw}/finance-summary', AdminDrawFinanceSummaryController::class)
->name('api.v1.admin.draws.finance-summary');
Route::get('draws/{draw}/result-batches', AdminDrawResultBatchesIndexController::class)
->name('api.v1.admin.draws.result-batches.index');
Route::get('draws/{draw}/risk-pools/{number_4d}', AdminRiskPoolShowController::class)
->where('number_4d', '[0-9]{4}')
->name('api.v1.admin.draws.risk-pools.show');
Route::get('draws/{draw}/risk-pool-lock-logs', AdminRiskPoolLockLogIndexController::class)
->name('api.v1.admin.draws.risk-pool-lock-logs.index');
Route::get('draws/{draw}/risk-pools', AdminRiskPoolIndexController::class)
->name('api.v1.admin.draws.risk-pools.index');
});
// 开奖结果录入(发布批次)
Route::middleware('admin.api-resource')
->group(function (): void {
Route::post('draws/{draw}/result-batches', DrawManualResultBatchStoreController::class)
->name('api.v1.admin.draws.result-batches.store');
Route::post('draws/{draw}/result-batches/{batch}/publish', DrawResultBatchPublishController::class)
->name('api.v1.admin.draws.result-batches.publish');
Route::post('draws/{draw}/reopen', DrawReopenController::class)
->name('api.v1.admin.draws.reopen');
Route::post('draws/generate-plan', DrawPlanGenerateController::class)
->name('api.v1.admin.draws.generate-plan');
Route::post('draws', AdminDrawStoreController::class)
->name('api.v1.admin.draws.store');
Route::put('draws/{draw}', AdminDrawUpdateController::class)
->name('api.v1.admin.draws.update');
Route::delete('draws/{draw}', AdminDrawDestroyController::class)
->name('api.v1.admin.draws.destroy');
Route::post('draws/batch-destroy', AdminDrawBatchDestroyController::class)
->name('api.v1.admin.draws.batch-destroy');
Route::post('draws/{draw}/manual-close', DrawManualCloseController::class)
->name('api.v1.admin.draws.manual-close');
Route::post('draws/{draw}/risk-pools/{number_4d}/manual-close', [AdminRiskPoolManualStatusController::class, 'close'])
->where('number_4d', '[0-9]{4}')
->name('api.v1.admin.draws.risk-pools.manual-close');
Route::post('draws/{draw}/risk-pools/{number_4d}/recover', [AdminRiskPoolManualStatusController::class, 'recover'])
->where('number_4d', '[0-9]{4}')
->name('api.v1.admin.draws.risk-pools.recover');
Route::post('draws/{draw}/cancel', DrawCancelController::class)
->name('api.v1.admin.draws.cancel');
Route::post('draws/{draw}/rng', DrawRngRunController::class)
->name('api.v1.admin.draws.rng');
});
// 派彩确认
Route::middleware('admin.api-resource')
->post('draws/{draw}/settlement/run', DrawSettlementRunController::class)
->name('api.v1.admin.draws.settlement.run');
// 结算批次查看
Route::middleware('admin.api-resource')
->group(function (): void {
Route::get('settlement-batches', AdminSettlementBatchIndexController::class)
->name('api.v1.admin.settlement-batches.index');
Route::get('settlement-batches/{batch}', AdminSettlementBatchShowController::class)
->name('api.v1.admin.settlement-batches.show');
Route::get('settlement-batches/{batch}/details', AdminSettlementBatchDetailsController::class)
->name('api.v1.admin.settlement-batches.details');
Route::get('settlement-batches/{batch}/export', AdminSettlementBatchExportController::class)
->name('api.v1.admin.settlement-batches.export');
});
Route::middleware('admin.api-resource')
->group(function (): void {
Route::post('settlement-batches/{batch}/approve', AdminSettlementBatchApproveController::class)
->name('api.v1.admin.settlement-batches.approve');
Route::post('settlement-batches/{batch}/reject', AdminSettlementBatchRejectController::class)
->name('api.v1.admin.settlement-batches.reject');
});
Route::middleware('admin.api-resource')
->post('settlement-batches/{batch}/payout', AdminSettlementBatchPayoutController::class)
->name('api.v1.admin.settlement-batches.payout');