diff --git a/README.md b/README.md index 9c30816..caeb72a 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ php artisan serve php artisan reverb:start ``` -**终端 3 — 任务调度(`draw.countdown` 每秒 + `lottery:draw-tick` 每分钟)** +**终端 3 — 任务调度(`draw.countdown` 每秒 + `lottery:draw-tick` 每 10 秒)** ```bash php artisan schedule:work diff --git a/app/Http/Controllers/Api/V1/Admin/Settlement/AdminSettlementBatchPayoutController.php b/app/Http/Controllers/Api/V1/Admin/Settlement/AdminSettlementBatchPayoutController.php index 83e71d0..5cc293e 100644 --- a/app/Http/Controllers/Api/V1/Admin/Settlement/AdminSettlementBatchPayoutController.php +++ b/app/Http/Controllers/Api/V1/Admin/Settlement/AdminSettlementBatchPayoutController.php @@ -17,8 +17,14 @@ final class AdminSettlementBatchPayoutController extends Controller { try { $updated = $this->service->payout($batch); - } catch (\RuntimeException) { - return ApiResponse::error(trans('api.client_error'), ErrorCode::ClientHttpError->value, null, 409); + } catch (\RuntimeException $e) { + $reason = $e->getMessage(); + $msg = match ($reason) { + 'settlement_not_approved' => trans('api.settlement_not_approved'), + default => trans('api.client_error'), + }; + + return ApiResponse::error($msg, ErrorCode::ClientHttpError->value, ['reason' => $reason], 409); } return ApiResponse::success([ diff --git a/bootstrap/app.php b/bootstrap/app.php index b688939..b2471fa 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -169,7 +169,8 @@ return Application::configure(basePath: dirname(__DIR__)) }); }) ->withSchedule(function (Schedule $schedule): void { - $schedule->command('lottery:draw-tick')->everyMinute(); + /** 开奖时刻后尽快跑 RNG/冷静期,避免大厅在 0:00 卡住最多 1 分钟 */ + $schedule->command('lottery:draw-tick')->everyTenSeconds(); $schedule->command('lottery:wallet-transfer-reconcile --lookback-hours=24 --stale-minutes=15 --limit=1000') ->everyTenMinutes() ->withoutOverlapping(); diff --git a/lang/en/api.php b/lang/en/api.php index 3848d0d..ecd90bc 100644 --- a/lang/en/api.php +++ b/lang/en/api.php @@ -3,6 +3,7 @@ return [ 'validation_failed' => 'The given data was invalid.', 'client_error' => 'This request could not be completed.', + 'settlement_not_approved' => 'Settlement batch is not approved for payout (both status and review_status must be approved).', 'not_found' => 'The requested resource was not found.', 'too_many_requests' => 'Too many requests. Please try again later.', 'server_error' => 'Something went wrong. Please try again later.', diff --git a/lang/ne/api.php b/lang/ne/api.php index b2caae9..3308792 100644 --- a/lang/ne/api.php +++ b/lang/ne/api.php @@ -3,6 +3,7 @@ return [ 'validation_failed' => 'दिइएको डाटा अमान्य छ।', 'client_error' => 'यो अनुरोध पूरा गर्न सकिएन।', + 'settlement_not_approved' => 'सेटलमेन्ट ब्याच पेमेन्टका लागि स्वीकृत छैन (status र review_status दुवै approved हुनुपर्छ)।', 'not_found' => 'अनुरोध गरिएको स्रोत फेला परेन।', 'too_many_requests' => 'धेरै अनुरोधहरू। कृपया पछि प्रयास गर्नुहोस्।', 'server_error' => 'केही गडबड भयो। कृपया पछि प्रयास गर्नुहोस्।', diff --git a/lang/zh/api.php b/lang/zh/api.php index 697dc8a..d0c583f 100644 --- a/lang/zh/api.php +++ b/lang/zh/api.php @@ -3,6 +3,7 @@ return [ 'validation_failed' => '请求参数校验未通过。', 'client_error' => '请求无法完成。', + 'settlement_not_approved' => '结算批次尚未审核通过,无法派彩(需 status 与 review_status 均为 approved)。', 'not_found' => '请求的资源不存在。', 'too_many_requests' => '请求过于频繁,请稍后再试。', 'server_error' => '服务暂时不可用,请稍后再试。',