61 lines
1.8 KiB
PHP
61 lines
1.8 KiB
PHP
<?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,
|
||
]);
|
||
}
|
||
}
|