Files
lotteryLaravel/app/Http/Controllers/Api/V1/Admin/AdminSettingController.php
kang e294430c86 feat(admin): 新增通用KV系统配置管理接口
新增后台配置管理相关的表单请求类,添加通用设置的列表查询和更新接口,支持按分组筛选配置项并返回标准化的配置数据
2026-05-14 11:17:41 +08:00

61 lines
1.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace App\Http\Controllers\Api\V1\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\AdminSettingIndexRequest;
use App\Http\Requests\Admin\AdminSettingUpdateRequest;
use App\Models\LotterySetting;
use App\Support\ApiResponse;
use App\Services\LotterySettings;
use Illuminate\Http\JsonResponse;
/**
* 后台运营配置KV 设置)读写。
*/
final class AdminSettingController extends Controller
{
public function index(AdminSettingIndexRequest $request): JsonResponse
{
$validated = $request->validated();
$query = LotterySetting::query()->orderBy('setting_key');
if (! empty($validated['group'])) {
$query->where('group_name', $validated['group']);
}
$items = $query->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]);
}
public function update(AdminSettingUpdateRequest $request, string $key): JsonResponse
{
$setting = LotterySetting::query()->where('setting_key', $key)->first();
if ($setting === null) {
return ApiResponse::error('Setting not found', 404);
}
LotterySettings::put(
$key,
$request->validated('value'),
$setting->group_name,
$setting->description_zh,
);
$fresh = LotterySetting::query()->where('setting_key', $key)->first();
return ApiResponse::success([
'key' => $fresh->setting_key,
'value' => $fresh->value_json,
'group' => $fresh->group_name,
'description' => $fresh->description_zh,
]);
}
}