fix: 更新任务调度频率并增强错误处理逻辑

- 将 `lottery:draw-tick` 命令的调度频率从每分钟更新为每10秒,以提高抽奖数据处理的及时性。
- 在 `AdminSettlementBatchPayoutController` 中增强异常处理,提供更具体的错误信息,特别是针对未批准的结算批次。
- 在多语言文件中添加相应的错误信息翻译,确保用户友好的反馈。
This commit is contained in:
2026-05-25 16:43:51 +08:00
parent 5f1d2d79ce
commit 770fd8950d
6 changed files with 14 additions and 4 deletions

View File

@@ -63,7 +63,7 @@ php artisan serve
php artisan reverb:start php artisan reverb:start
``` ```
**终端 3 — 任务调度(`draw.countdown` 每秒 + `lottery:draw-tick`分钟** **终端 3 — 任务调度(`draw.countdown` 每秒 + `lottery:draw-tick` 10 秒**
```bash ```bash
php artisan schedule:work php artisan schedule:work

View File

@@ -17,8 +17,14 @@ final class AdminSettlementBatchPayoutController extends Controller
{ {
try { try {
$updated = $this->service->payout($batch); $updated = $this->service->payout($batch);
} catch (\RuntimeException) { } catch (\RuntimeException $e) {
return ApiResponse::error(trans('api.client_error'), ErrorCode::ClientHttpError->value, null, 409); $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([ return ApiResponse::success([

View File

@@ -169,7 +169,8 @@ return Application::configure(basePath: dirname(__DIR__))
}); });
}) })
->withSchedule(function (Schedule $schedule): void { ->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') $schedule->command('lottery:wallet-transfer-reconcile --lookback-hours=24 --stale-minutes=15 --limit=1000')
->everyTenMinutes() ->everyTenMinutes()
->withoutOverlapping(); ->withoutOverlapping();

View File

@@ -3,6 +3,7 @@
return [ return [
'validation_failed' => 'The given data was invalid.', 'validation_failed' => 'The given data was invalid.',
'client_error' => 'This request could not be completed.', '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.', 'not_found' => 'The requested resource was not found.',
'too_many_requests' => 'Too many requests. Please try again later.', 'too_many_requests' => 'Too many requests. Please try again later.',
'server_error' => 'Something went wrong. Please try again later.', 'server_error' => 'Something went wrong. Please try again later.',

View File

@@ -3,6 +3,7 @@
return [ return [
'validation_failed' => 'दिइएको डाटा अमान्य छ।', 'validation_failed' => 'दिइएको डाटा अमान्य छ।',
'client_error' => 'यो अनुरोध पूरा गर्न सकिएन।', 'client_error' => 'यो अनुरोध पूरा गर्न सकिएन।',
'settlement_not_approved' => 'सेटलमेन्ट ब्याच पेमेन्टका लागि स्वीकृत छैन (status र review_status दुवै approved हुनुपर्छ)।',
'not_found' => 'अनुरोध गरिएको स्रोत फेला परेन।', 'not_found' => 'अनुरोध गरिएको स्रोत फेला परेन।',
'too_many_requests' => 'धेरै अनुरोधहरू। कृपया पछि प्रयास गर्नुहोस्।', 'too_many_requests' => 'धेरै अनुरोधहरू। कृपया पछि प्रयास गर्नुहोस्।',
'server_error' => 'केही गडबड भयो। कृपया पछि प्रयास गर्नुहोस्।', 'server_error' => 'केही गडबड भयो। कृपया पछि प्रयास गर्नुहोस्।',

View File

@@ -3,6 +3,7 @@
return [ return [
'validation_failed' => '请求参数校验未通过。', 'validation_failed' => '请求参数校验未通过。',
'client_error' => '请求无法完成。', 'client_error' => '请求无法完成。',
'settlement_not_approved' => '结算批次尚未审核通过,无法派彩(需 status 与 review_status 均为 approved。',
'not_found' => '请求的资源不存在。', 'not_found' => '请求的资源不存在。',
'too_many_requests' => '请求过于频繁,请稍后再试。', 'too_many_requests' => '请求过于频繁,请稍后再试。',
'server_error' => '服务暂时不可用,请稍后再试。', 'server_error' => '服务暂时不可用,请稍后再试。',