refactor(game): 重构游戏组件和数据结构

- 移除中心模态框的背景模糊效果并调整透明度
- 为桌面游戏历史组件添加空状态显示组件
- 重构头部时钟显示逻辑,提取为独立组件并优化时间同步
- 移除用户ID遮罩功能,直接使用昵称显示中奖信息
- 调整入口页面的模态框渲染结构和认证状态检查逻辑
- 更新奖池广播数据结构,替换用户ID为昵称字段
- 优化实时同步中的数据验证和映射逻辑
- 调整移动端头部时钟组件的实现方式
This commit is contained in:
JiaJun
2026-06-02 10:02:08 +08:00
parent 72b6de499e
commit 522b8a1f28
12 changed files with 180 additions and 121 deletions

View File

@@ -256,7 +256,7 @@ function extractJackpotHitItem(value: unknown): JackpotHitItemDto | null {
const source = value as Record<string, unknown>
if (
typeof source.user_id !== 'number' ||
typeof source.nickname !== 'string' ||
typeof source.period_no !== 'string' ||
typeof source.total_win !== 'string'
) {
@@ -270,10 +270,10 @@ function extractJackpotHitItem(value: unknown): JackpotHitItemDto | null {
}
return {
nickname: source.nickname,
period_no: source.period_no,
result_number: resultNumber,
total_win: source.total_win,
user_id: source.user_id,
}
}
@@ -286,18 +286,31 @@ function extractJackpotHitData(
return null
}
const serverTime = toOptionalNumber(data.server_time)
const nestedHits = data.hits
const sourceHits = Array.isArray(nestedHits)
? nestedHits
: nestedHits && typeof nestedHits === 'object'
? [nestedHits]
: [data]
const firstHitSource = sourceHits.find(
(item): item is Record<string, unknown> =>
Boolean(item) && typeof item === 'object',
)
const hits = sourceHits
.map((item) => extractJackpotHitItem(item))
.filter((item): item is JackpotHitItemDto => item !== null)
const root = message as Record<string, unknown>
const serverTime = toOptionalNumber(
data.server_time ?? firstHitSource?.server_time ?? root.server_time,
)
const resultNumber = toOptionalNumber(
data.result_number ?? data['result number'],
)
if (typeof serverTime !== 'number') {
return null
}
const sourceHits = Array.isArray(data.hits) ? data.hits : [data]
const hits = sourceHits
.map((item) => extractJackpotHitItem(item))
.filter((item): item is JackpotHitItemDto => item !== null)
const resultNumber = toOptionalNumber(data.result_number)
return {
hits,
period_id:
@@ -589,11 +602,11 @@ function applyJackpotHitMessage(message: GameSocketMessage) {
if (jackpotHitData?.hits.length) {
useGameSessionStore.getState().pushJackpotBroadcasts(
jackpotHitData.hits.map((hit) => ({
id: `${jackpotHitData.period_no}:${hit.result_number}:${hit.user_id}:${hit.total_win}`,
message: `恭喜${hit.user_id} 用户中奖,获得${hit.total_win}`,
id: `${jackpotHitData.period_no}:${hit.result_number}:${hit.nickname}:${hit.total_win}`,
message: `恭喜${hit.nickname} 用户中奖,获得${hit.total_win}`,
nickname: hit.nickname,
periodNo: hit.period_no,
totalWin: hit.total_win,
userId: hit.user_id,
})),
)
}