优化DiceConfig,新增title_en和value_en字段

This commit is contained in:
2026-03-13 18:11:27 +08:00
parent 05d592dcbc
commit ed46f18415
5 changed files with 44 additions and 6 deletions

View File

@@ -25,21 +25,42 @@ class GameController extends BaseController
/**
* 获取游戏配置(按 group 分组)
* GET /api/game/config
* header: lang = zh | en
* 返回 data[group] = [ { name, title, value, create_time, update_time }, ... ]
* - lang=zh 或默认title/value = 中文
* - lang=en若存在英文配置则返回 title_en/value_en否则回退到中文
*/
public function config(Request $request): Response
{
$rows = DiceConfig::select('name', 'group', 'title', 'value', 'create_time', 'update_time')->get();
$rows = DiceConfig::select('name', 'group', 'title', 'title_en', 'value', 'value_en', 'create_time', 'update_time')->get();
$lang = $request->header('lang', 'zh');
if (!is_string($lang) || $lang === '') {
$lang = 'zh';
}
$langLower = strtolower($lang);
$isEn = $langLower === 'en' || str_starts_with($langLower, 'en-');
$data = [];
foreach ($rows as $row) {
$group = $row->group ?? '';
if (!isset($data[$group])) {
$data[$group] = [];
}
$title = $row->title;
$value = $row->value;
if ($isEn) {
$titleEn = $row->title_en ?? '';
$valueEn = $row->value_en ?? '';
if ($titleEn !== '') {
$title = $titleEn;
}
if ($valueEn !== '') {
$value = $valueEn;
}
}
$data[$group][] = [
'name' => $row->name,
'title' => $row->title,
'value' => $row->value,
'title' => $title,
'value' => $value,
'create_time' => $row->create_time,
'update_time' => $row->update_time,
];

View File

@@ -17,7 +17,9 @@ use plugin\saiadmin\basic\eloquent\BaseModel;
* @property $name 配置名称
* @property $group 分组
* @property $title 标题
* @property $title_en 标题(英文)
* @property $value 值
* @property $value_en 值(英文)
* @property $create_time 创建时间
* @property $update_time 修改时间
*/

View File

@@ -21,6 +21,7 @@ class DiceConfigValidate extends BaseValidate
'group' => 'require',
'title' => 'require',
'value' => 'require',
'title_en' => 'max:100',
];
/**
@@ -31,6 +32,7 @@ class DiceConfigValidate extends BaseValidate
'group' => '分组必须填写',
'title' => '标题必须填写',
'value' => '值必须填写',
'title_en' => '英文标题长度需小于 100 字符',
];
/**
@@ -42,12 +44,14 @@ class DiceConfigValidate extends BaseValidate
'group',
'title',
'value',
'title_en',
],
'update' => [
'name',
'group',
'title',
'value',
'title_en',
],
];