1.优化接口返回中间信息ui_text(中文)ui_text_en(英文)

2.修复BUG色子点数权重配置-权重配比-顺时针/逆时针显示错误
This commit is contained in:
2026-03-13 17:50:57 +08:00
parent 2419f81955
commit 05d592dcbc
6 changed files with 91 additions and 8 deletions

View File

@@ -48,7 +48,12 @@
</ElTableColumn> </ElTableColumn>
<ElTableColumn label="显示文本" min-width="100" align="center"> <ElTableColumn label="显示文本" min-width="100" align="center">
<template #default="{ row }"> <template #default="{ row }">
<ElInput v-model="row.ui_text" size="small" placeholder="显示文本" /> <ElInput v-model="row.ui_text" size="small" placeholder="显示文本(中文)" />
</template>
</ElTableColumn>
<ElTableColumn label="显示文本(英文)" min-width="120" align="center">
<template #default="{ row }">
<ElInput v-model="row.ui_text_en" size="small" placeholder="显示文本(英文)" />
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn label="真实结算" min-width="110" align="center"> <ElTableColumn label="真实结算" min-width="110" align="center">
@@ -114,7 +119,12 @@
</ElTableColumn> </ElTableColumn>
<ElTableColumn label="显示信息" min-width="140" align="center"> <ElTableColumn label="显示信息" min-width="140" align="center">
<template #default="{ row }"> <template #default="{ row }">
<ElInput v-model="row.ui_text" size="small" placeholder="显示信息" /> <ElInput v-model="row.ui_text" size="small" placeholder="显示信息(中文)" />
</template>
</ElTableColumn>
<ElTableColumn label="显示信息(英文)" min-width="160" align="center">
<template #default="{ row }">
<ElInput v-model="row.ui_text_en" size="small" placeholder="显示信息(英文)" />
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn label="实际中奖" min-width="120" align="center"> <ElTableColumn label="实际中奖" min-width="120" align="center">
@@ -185,6 +195,7 @@
id: number id: number
grid_number: number grid_number: number
ui_text: string ui_text: string
ui_text_en: string
real_ev: number real_ev: number
tier: string tier: string
remark: string remark: string
@@ -217,10 +228,11 @@
id: Number(raw.id) ?? 0, id: Number(raw.id) ?? 0,
grid_number: Number(raw.grid_number) ?? 0, grid_number: Number(raw.grid_number) ?? 0,
ui_text: String(raw.ui_text ?? ''), ui_text: String(raw.ui_text ?? ''),
ui_text_en: String((raw as any).ui_text_en ?? ''),
real_ev: Number(raw.real_ev) ?? 0, real_ev: Number(raw.real_ev) ?? 0,
tier: String(raw.tier ?? ''), tier: String(raw.tier ?? ''),
remark: String(raw.remark ?? ''), remark: String(raw.remark ?? ''),
weight: toWeight(raw.weight) weight: toWeight((raw as any).weight)
} }
} }
@@ -329,6 +341,7 @@
id: r.id, id: r.id,
grid_number: r.grid_number, grid_number: r.grid_number,
ui_text: r.ui_text, ui_text: r.ui_text,
ui_text_en: r.ui_text_en,
real_ev: r.real_ev, real_ev: r.real_ev,
tier: r.tier, tier: r.tier,
remark: r.remark remark: r.remark

View File

@@ -16,7 +16,10 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="前端显示文本" prop="ui_text"> <el-form-item label="前端显示文本" prop="ui_text">
<el-input v-model="formData.ui_text" placeholder="请输入前端显示文本" /> <el-input v-model="formData.ui_text" placeholder="请输入前端显示文本(中文)" />
</el-form-item>
<el-form-item label="前端显示文本(英文)" prop="ui_text_en">
<el-input v-model="formData.ui_text_en" placeholder="请输入前端显示文本(英文)" />
</el-form-item> </el-form-item>
<el-form-item label="真实资金结算" prop="real_ev"> <el-form-item label="真实资金结算" prop="real_ev">
<el-input-number v-model="formData.real_ev" placeholder="请输入真实资金结算" /> <el-input-number v-model="formData.real_ev" placeholder="请输入真实资金结算" />
@@ -111,6 +114,7 @@
const rules = reactive<FormRules>({ const rules = reactive<FormRules>({
grid_number: [{ required: true, message: '色子点数必需填写', trigger: 'blur' }], grid_number: [{ required: true, message: '色子点数必需填写', trigger: 'blur' }],
ui_text: [{ required: true, message: '前端显示文本必需填写', trigger: 'blur' }], ui_text: [{ required: true, message: '前端显示文本必需填写', trigger: 'blur' }],
ui_text_en: [{ max: 255, message: '前端显示文本(英文)长度需小于 255 字符', trigger: 'blur' }],
real_ev: [{ required: true, message: '真实资金结算必需填写', trigger: 'blur' }], real_ev: [{ required: true, message: '真实资金结算必需填写', trigger: 'blur' }],
tier: [{ required: true, message: '所属档位必需填写', trigger: 'blur' }], tier: [{ required: true, message: '所属档位必需填写', trigger: 'blur' }],
weight: [{ type: 'number', min: 0, max: 10000, message: '大奖权重 0~10000', trigger: 'blur' }] weight: [{ type: 'number', min: 0, max: 10000, message: '大奖权重 0~10000', trigger: 'blur' }]
@@ -128,6 +132,7 @@
id: null, id: null,
grid_number: null, grid_number: null,
ui_text: '', ui_text: '',
ui_text_en: '',
real_ev: '', real_ev: '',
tier: '', tier: '',
remark: '', remark: '',

View File

@@ -88,6 +88,27 @@ class GameController extends BaseController
$list = array_values(array_filter($list, function ($row) { $list = array_values(array_filter($list, function ($row) {
return (string) ($row['tier'] ?? '') !== 'BIGWIN'; return (string) ($row['tier'] ?? '') !== 'BIGWIN';
})); }));
$lang = $request->header('lang', 'zh');
if (!is_string($lang) || $lang === '') {
$lang = 'zh';
}
$langLower = strtolower($lang);
$isEn = $langLower === 'en' || str_starts_with($langLower, 'en-');
if ($isEn) {
foreach ($list as $index => $row) {
$uiEn = '';
if (is_array($row) && array_key_exists('ui_text_en', $row) && $row['ui_text_en'] !== null) {
$uiEn = (string) $row['ui_text_en'];
}
if ($uiEn !== '') {
$row['ui_text'] = $uiEn;
}
$list[$index] = $row;
}
}
return $this->success($list); return $this->success($list);
} }
@@ -123,6 +144,37 @@ class GameController extends BaseController
try { try {
$logic = new PlayStartLogic(); $logic = new PlayStartLogic();
$data = $logic->run($userId, (int)$direction); $data = $logic->run($userId, (int)$direction);
$lang = $request->header('lang', 'zh');
if (!is_string($lang) || $lang === '') {
$lang = 'zh';
}
$langLower = strtolower($lang);
$isEn = $langLower === 'en' || str_starts_with($langLower, 'en-');
if (is_array($data) && array_key_exists('reward_config_id', $data)) {
$rewardConfigId = (int) $data['reward_config_id'];
if ($rewardConfigId > 0) {
$configRow = DiceRewardConfig::getCachedById($rewardConfigId);
if ($configRow !== null) {
$uiText = '';
$uiTextEn = '';
if (array_key_exists('ui_text', $configRow) && $configRow['ui_text'] !== null) {
$uiText = (string) $configRow['ui_text'];
}
if (array_key_exists('ui_text_en', $configRow) && $configRow['ui_text_en'] !== null) {
$uiTextEn = (string) $configRow['ui_text_en'];
}
if ($isEn && $uiTextEn !== '') {
$data['ui_text'] = $uiTextEn;
} else {
$data['ui_text'] = $uiText;
}
$data['ui_text_en'] = $uiTextEn;
}
}
}
return $this->success($data); return $this->success($data);
} catch (ApiException $e) { } catch (ApiException $e) {
return $this->fail($e->getMessage(), ReturnCode::BUSINESS_ERROR); return $this->fail($e->getMessage(), ReturnCode::BUSINESS_ERROR);

View File

@@ -161,7 +161,7 @@ class DiceRewardConfigLogic extends BaseLogic
} }
$id = (int) $row['id']; $id = (int) $row['id'];
$data = []; $data = [];
foreach (['grid_number', 'ui_text', 'real_ev', 'tier', 'remark'] as $field) { foreach (['grid_number', 'ui_text', 'ui_text_en', 'real_ev', 'tier', 'remark'] as $field) {
if (array_key_exists($field, $row)) { if (array_key_exists($field, $row)) {
$data[$field] = $row[$field]; $data[$field] = $row[$field];
} }

View File

@@ -18,6 +18,7 @@ use support\think\Cache;
* @property $id ID * @property $id ID
* @property $grid_number 色子点数 * @property $grid_number 色子点数
* @property $ui_text 前端显示文本 * @property $ui_text 前端显示文本
* @property $ui_text_en 前端显示文本(英文)
* @property $real_ev 真实资金结算 * @property $real_ev 真实资金结算
* @property $tier 所属档位 * @property $tier 所属档位
* @property $weight 权重(仅 BIGWIN 使用0-10000 * @property $weight 权重(仅 BIGWIN 使用0-10000
@@ -65,6 +66,17 @@ class DiceRewardConfig extends BaseModel
return $inst['list'] ?? []; return $inst['list'] ?? [];
} }
public static function getCachedById(int $id): ?array
{
$list = self::getCachedList();
foreach ($list as $row) {
if (isset($row['id']) && (int) $row['id'] === $id) {
return $row;
}
}
return null;
}
/** /**
* 重新从数据库加载并写入缓存(按档位+权重抽 grid_number含 by_tier、by_tier_grid * 重新从数据库加载并写入缓存(按档位+权重抽 grid_number含 by_tier、by_tier_grid
*/ */

View File

@@ -20,6 +20,7 @@ class DiceRewardConfigValidate extends BaseValidate
protected $rule = [ protected $rule = [
'grid_number' => 'require|integer|between:5,30', 'grid_number' => 'require|integer|between:5,30',
'ui_text' => 'require', 'ui_text' => 'require',
'ui_text_en' => 'max:255',
'real_ev' => 'require', 'real_ev' => 'require',
'tier' => 'require', 'tier' => 'require',
'type' => 'number', 'type' => 'number',
@@ -36,8 +37,8 @@ class DiceRewardConfigValidate extends BaseValidate
]; ];
protected $scene = [ protected $scene = [
'save' => ['grid_number', 'ui_text', 'real_ev', 'tier', 'type'], 'save' => ['grid_number', 'ui_text', 'ui_text_en', 'real_ev', 'tier', 'type'],
'update' => ['grid_number', 'ui_text', 'real_ev', 'tier', 'type', 'weight'], 'update' => ['grid_number', 'ui_text', 'ui_text_en', 'real_ev', 'tier', 'type', 'weight'],
'batch_update' => ['grid_number', 'ui_text', 'real_ev', 'tier', 'remark'], 'batch_update' => ['grid_number', 'ui_text', 'ui_text_en', 'real_ev', 'tier', 'remark'],
]; ];
} }