完善猜成语过期与答题记录逻辑
This commit is contained in:
@@ -12,16 +12,20 @@
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\GameConfig;
|
||||
use App\Models\Idiom;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\View\View;
|
||||
|
||||
/**
|
||||
* 类功能:负责猜成语题库与后台参数管理。
|
||||
*/
|
||||
class IdiomController extends Controller
|
||||
{
|
||||
/**
|
||||
* 显示所有成语题目列表
|
||||
* 方法功能:显示所有成语题目列表。
|
||||
*/
|
||||
public function index(): View
|
||||
{
|
||||
@@ -31,7 +35,7 @@ class IdiomController extends Controller
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建新题目
|
||||
* 方法功能:创建新的成语题目。
|
||||
*/
|
||||
public function store(Request $request): RedirectResponse
|
||||
{
|
||||
@@ -49,7 +53,7 @@ class IdiomController extends Controller
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新题目
|
||||
* 方法功能:更新已有成语题目。
|
||||
*/
|
||||
public function update(Request $request, Idiom $idiom): RedirectResponse
|
||||
{
|
||||
@@ -67,7 +71,7 @@ class IdiomController extends Controller
|
||||
}
|
||||
|
||||
/**
|
||||
* 切换启用/禁用(AJAX)
|
||||
* 方法功能:通过 AJAX 切换题目的启用状态。
|
||||
*/
|
||||
public function toggle(Idiom $idiom): JsonResponse
|
||||
{
|
||||
@@ -81,7 +85,7 @@ class IdiomController extends Controller
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除题目
|
||||
* 方法功能:删除指定成语题目。
|
||||
*/
|
||||
public function destroy(Idiom $idiom): RedirectResponse
|
||||
{
|
||||
@@ -92,7 +96,7 @@ class IdiomController extends Controller
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存猜成语游戏参数(仅更新 GameConfig params,不影响其他字段)
|
||||
* 方法功能:保存猜成语游戏参数而不覆盖其他游戏配置字段。
|
||||
*/
|
||||
public function saveSettings(Request $request): RedirectResponse
|
||||
{
|
||||
@@ -100,19 +104,21 @@ class IdiomController extends Controller
|
||||
'reward_gold' => 'required|integer|min:0',
|
||||
'reward_exp' => 'required|integer|min:0',
|
||||
'auto_start_interval' => 'required|integer|min:0',
|
||||
'expire_minutes' => 'required|integer|min:0',
|
||||
]);
|
||||
|
||||
$config = \App\Models\GameConfig::firstOrCreate(
|
||||
$config = GameConfig::firstOrCreate(
|
||||
['game_key' => 'idiom'],
|
||||
['name' => '猜成语', 'icon' => '🧩', 'enabled' => false],
|
||||
);
|
||||
|
||||
// 合并现有 params,只覆盖提交的字段,不影响其他已有参数
|
||||
// 合并现有 params,只覆盖本次后台提交的字段,避免误删其他游戏参数。
|
||||
$existingParams = $config->params ?? [];
|
||||
$config->params = array_merge($existingParams, [
|
||||
'reward_gold' => (int) $data['reward_gold'],
|
||||
'reward_exp' => (int) $data['reward_exp'],
|
||||
'auto_start_interval' => (int) $data['auto_start_interval'],
|
||||
'expire_minutes' => (int) $data['expire_minutes'],
|
||||
]);
|
||||
$config->save();
|
||||
$config->clearCache();
|
||||
|
||||
Reference in New Issue
Block a user