feat(admin): 新增通用KV系统配置管理接口
新增后台配置管理相关的表单请求类,添加通用设置的列表查询和更新接口,支持按分组筛选配置项并返回标准化的配置数据
This commit is contained in:
60
app/Http/Controllers/Api/V1/Admin/AdminSettingController.php
Normal file
60
app/Http/Controllers/Api/V1/Admin/AdminSettingController.php
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
<?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,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
20
app/Http/Requests/Admin/AdminSettingIndexRequest.php
Normal file
20
app/Http/Requests/Admin/AdminSettingIndexRequest.php
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests\Admin;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
final class AdminSettingIndexRequest extends FormRequest
|
||||||
|
{
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'group' => ['sometimes', 'nullable', 'string', 'max:64'],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
20
app/Http/Requests/Admin/AdminSettingUpdateRequest.php
Normal file
20
app/Http/Requests/Admin/AdminSettingUpdateRequest.php
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests\Admin;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
final class AdminSettingUpdateRequest extends FormRequest
|
||||||
|
{
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'value' => ['required'],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -18,6 +18,7 @@ use App\Http\Controllers\Api\V1\Admin\Config\PlayConfigItemsReplaceController;
|
|||||||
use App\Http\Controllers\Api\V1\Admin\Config\PlayConfigVersionIndexController;
|
use App\Http\Controllers\Api\V1\Admin\Config\PlayConfigVersionIndexController;
|
||||||
use App\Http\Controllers\Api\V1\Admin\Config\PlayConfigVersionStoreController;
|
use App\Http\Controllers\Api\V1\Admin\Config\PlayConfigVersionStoreController;
|
||||||
use App\Http\Controllers\Api\V1\Admin\Config\PlayConfigVersionPublishController;
|
use App\Http\Controllers\Api\V1\Admin\Config\PlayConfigVersionPublishController;
|
||||||
|
use App\Http\Controllers\Api\V1\Admin\AdminSettingController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 管理员配置管理路由(玩法/赔率/封顶)。
|
* 管理员配置管理路由(玩法/赔率/封顶)。
|
||||||
@@ -105,3 +106,14 @@ Route::middleware('admin.permission:prd.play_switch.manage|prd.odds.manage|prd.r
|
|||||||
->name('risk-cap-versions.publish');
|
->name('risk-cap-versions.publish');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 通用 KV 设置(钱包限额等)
|
||||||
|
Route::middleware('admin.permission:prd.wallet_reconcile.manage')
|
||||||
|
->prefix('settings')
|
||||||
|
->name('api.v1.admin.settings.')
|
||||||
|
->group(function (): void {
|
||||||
|
Route::get('/', AdminSettingController::class.'@index')
|
||||||
|
->name('index');
|
||||||
|
Route::put('{key}', AdminSettingController::class.'@update')
|
||||||
|
->name('update');
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user