- 在多个控制器中引入 ApiMessage,替换原有的 ApiResponse 错误处理逻辑,确保错误信息的一致性与可读性。 - 更新错误返回信息,使用更具语义的键值,提升 API 的可维护性与用户体验。 - 适配相关控制器的请求参数,确保在处理错误时能够正确返回相应的错误信息。
52 lines
1.4 KiB
PHP
52 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api\V1\Setting;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\LotterySetting;
|
|
use App\Lottery\ErrorCode;
|
|
use App\Support\ApiMessage;
|
|
use App\Support\ApiResponse;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
|
|
/**
|
|
* 玩家端/公开:读取 KV 配置(公开访问;仅允许白名单分组)。
|
|
*/
|
|
final class SettingIndexController extends Controller
|
|
{
|
|
/** @var list<string> */
|
|
private const PUBLIC_GROUPS = [
|
|
'frontend',
|
|
'currency',
|
|
];
|
|
|
|
public function __invoke(Request $request): JsonResponse
|
|
{
|
|
$group = $request->query('group');
|
|
|
|
if (! is_string($group) || $group === '' || ! in_array($group, self::PUBLIC_GROUPS, true)) {
|
|
return ApiMessage::errorResponse(
|
|
$request,
|
|
'invalid_settings_group',
|
|
ErrorCode::ClientHttpError->value,
|
|
['allowed_groups' => self::PUBLIC_GROUPS],
|
|
400,
|
|
);
|
|
}
|
|
|
|
$items = LotterySetting::query()
|
|
->where('group_name', $group)
|
|
->orderBy('setting_key')
|
|
->get()
|
|
->map(fn (LotterySetting $s): array => [
|
|
'key' => $s->setting_key,
|
|
'value' => $s->value_json,
|
|
'group' => $s->group_name,
|
|
'description' => $s->description_zh,
|
|
]);
|
|
|
|
return ApiResponse::success(['items' => $items]);
|
|
}
|
|
}
|