diff --git a/saiadmin-artd/src/views/plugin/dice/reward_config/index/index.vue b/saiadmin-artd/src/views/plugin/dice/reward_config/index/index.vue
index 4da9e80..7c4c30b 100644
--- a/saiadmin-artd/src/views/plugin/dice/reward_config/index/index.vue
+++ b/saiadmin-artd/src/views/plugin/dice/reward_config/index/index.vue
@@ -48,7 +48,12 @@
-
+
+
+
+
+
+
@@ -114,7 +119,12 @@
-
+
+
+
+
+
+
@@ -185,6 +195,7 @@
id: number
grid_number: number
ui_text: string
+ ui_text_en: string
real_ev: number
tier: string
remark: string
@@ -217,10 +228,11 @@
id: Number(raw.id) ?? 0,
grid_number: Number(raw.grid_number) ?? 0,
ui_text: String(raw.ui_text ?? ''),
+ ui_text_en: String((raw as any).ui_text_en ?? ''),
real_ev: Number(raw.real_ev) ?? 0,
tier: String(raw.tier ?? ''),
remark: String(raw.remark ?? ''),
- weight: toWeight(raw.weight)
+ weight: toWeight((raw as any).weight)
}
}
@@ -329,6 +341,7 @@
id: r.id,
grid_number: r.grid_number,
ui_text: r.ui_text,
+ ui_text_en: r.ui_text_en,
real_ev: r.real_ev,
tier: r.tier,
remark: r.remark
diff --git a/saiadmin-artd/src/views/plugin/dice/reward_config/index/modules/edit-dialog.vue b/saiadmin-artd/src/views/plugin/dice/reward_config/index/modules/edit-dialog.vue
index ac9a3e0..9e2a3c9 100644
--- a/saiadmin-artd/src/views/plugin/dice/reward_config/index/modules/edit-dialog.vue
+++ b/saiadmin-artd/src/views/plugin/dice/reward_config/index/modules/edit-dialog.vue
@@ -16,7 +16,10 @@
/>
-
+
+
+
+
@@ -111,6 +114,7 @@
const rules = reactive({
grid_number: [{ 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' }],
tier: [{ required: true, message: '所属档位必需填写', trigger: 'blur' }],
weight: [{ type: 'number', min: 0, max: 10000, message: '大奖权重 0~10000', trigger: 'blur' }]
@@ -128,6 +132,7 @@
id: null,
grid_number: null,
ui_text: '',
+ ui_text_en: '',
real_ev: '',
tier: '',
remark: '',
diff --git a/server/app/api/controller/GameController.php b/server/app/api/controller/GameController.php
index 1f8dcb8..6a8c4de 100644
--- a/server/app/api/controller/GameController.php
+++ b/server/app/api/controller/GameController.php
@@ -88,6 +88,27 @@ class GameController extends BaseController
$list = array_values(array_filter($list, function ($row) {
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);
}
@@ -123,6 +144,37 @@ class GameController extends BaseController
try {
$logic = new PlayStartLogic();
$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);
} catch (ApiException $e) {
return $this->fail($e->getMessage(), ReturnCode::BUSINESS_ERROR);
diff --git a/server/app/dice/logic/reward_config/DiceRewardConfigLogic.php b/server/app/dice/logic/reward_config/DiceRewardConfigLogic.php
index 360ccdf..06a80f6 100644
--- a/server/app/dice/logic/reward_config/DiceRewardConfigLogic.php
+++ b/server/app/dice/logic/reward_config/DiceRewardConfigLogic.php
@@ -161,7 +161,7 @@ class DiceRewardConfigLogic extends BaseLogic
}
$id = (int) $row['id'];
$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)) {
$data[$field] = $row[$field];
}
diff --git a/server/app/dice/model/reward_config/DiceRewardConfig.php b/server/app/dice/model/reward_config/DiceRewardConfig.php
index c1b171c..4f1544a 100644
--- a/server/app/dice/model/reward_config/DiceRewardConfig.php
+++ b/server/app/dice/model/reward_config/DiceRewardConfig.php
@@ -18,6 +18,7 @@ use support\think\Cache;
* @property $id ID
* @property $grid_number 色子点数
* @property $ui_text 前端显示文本
+ * @property $ui_text_en 前端显示文本(英文)
* @property $real_ev 真实资金结算
* @property $tier 所属档位
* @property $weight 权重(仅 BIGWIN 使用,0-10000)
@@ -65,6 +66,17 @@ class DiceRewardConfig extends BaseModel
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)
*/
diff --git a/server/app/dice/validate/reward_config/DiceRewardConfigValidate.php b/server/app/dice/validate/reward_config/DiceRewardConfigValidate.php
index a9b5bd4..788b94b 100644
--- a/server/app/dice/validate/reward_config/DiceRewardConfigValidate.php
+++ b/server/app/dice/validate/reward_config/DiceRewardConfigValidate.php
@@ -20,6 +20,7 @@ class DiceRewardConfigValidate extends BaseValidate
protected $rule = [
'grid_number' => 'require|integer|between:5,30',
'ui_text' => 'require',
+ 'ui_text_en' => 'max:255',
'real_ev' => 'require',
'tier' => 'require',
'type' => 'number',
@@ -36,8 +37,8 @@ class DiceRewardConfigValidate extends BaseValidate
];
protected $scene = [
- 'save' => ['grid_number', 'ui_text', 'real_ev', 'tier', 'type'],
- 'update' => ['grid_number', 'ui_text', 'real_ev', 'tier', 'type', 'weight'],
- 'batch_update' => ['grid_number', 'ui_text', 'real_ev', 'tier', 'remark'],
+ 'save' => ['grid_number', 'ui_text', 'ui_text_en', 'real_ev', 'tier', 'type'],
+ 'update' => ['grid_number', 'ui_text', 'ui_text_en', 'real_ev', 'tier', 'type', 'weight'],
+ 'batch_update' => ['grid_number', 'ui_text', 'ui_text_en', 'real_ev', 'tier', 'remark'],
];
}