feat(game): 添加游戏历史记录实时同步功能

- 实现了游戏历史记录的实时推送和展示功能
- 添加了总奖池金额显示在历史记录界面中
- 新增 PeriodPayoutHistoryEntry 和 PeriodPayoutEventData 类型定义
- 在游戏状态管理中添加了待处理赔付历史记录状态
- 实现了 WebSocket 消息解析器来处理赔付数据
- 添加了移动端和桌面端历史记录组件的实时数据展示
- 集成了注册邀请码查询参数功能并优化了注册表单逻辑
- 重构了历史记录视图模型以支持实时数据流处理
This commit is contained in:
JiaJun
2026-06-12 11:51:32 +08:00
parent 5768632313
commit 800e737470
11 changed files with 267 additions and 43 deletions

View File

@@ -231,6 +231,14 @@ export function DesktopGameHistory() {
)}
</div>
<div className="grid grid-cols-[1fr_1fr] gap-design-5">
<div className="flex min-h-design-28 items-center justify-between gap-design-6 rounded-[calc(var(--design-unit)*6)] border border-[rgba(94,212,230,0.14)] bg-[linear-gradient(90deg,rgba(5,23,33,0.54),rgba(12,78,94,0.14))] px-design-7 py-design-4">
<span className="shrink-0 text-[#84A2A2]">
{t('gameDesktop.history.totalPoolAmount')}
</span>
<span className="min-w-0 truncate text-right text-design-14 font-bold text-[#D5FBFF] [text-shadow:0_0_calc(var(--design-unit)*8)_rgba(95,233,255,0.18)]">
{item.betAmountLabel}
</span>
</div>
<div className="flex min-h-design-28 items-center justify-between gap-design-6 rounded-[calc(var(--design-unit)*6)] border border-[rgba(255,227,117,0.14)] bg-[linear-gradient(90deg,rgba(5,23,33,0.54),rgba(84,57,8,0.14))] px-design-7 py-design-4">
<span className="shrink-0 text-[#84A2A2]">
{t('gameDesktop.history.payout')}
@@ -239,7 +247,7 @@ export function DesktopGameHistory() {
{item.winAmountLabel}
</span>
</div>
<div className="flex min-h-design-28 items-center justify-between gap-design-6 rounded-[calc(var(--design-unit)*6)] border border-[rgba(255,117,117,0.16)] bg-[linear-gradient(90deg,rgba(5,23,33,0.54),rgba(88,20,28,0.14))] px-design-7 py-design-4">
<div className="col-span-2 flex min-h-design-28 items-center justify-between gap-design-6 rounded-[calc(var(--design-unit)*6)] border border-[rgba(255,117,117,0.16)] bg-[linear-gradient(90deg,rgba(5,23,33,0.54),rgba(88,20,28,0.14))] px-design-7 py-design-4">
<span className={'shrink-0 text-[#84A2A2]'}>
{t('gameDesktop.history.winningResult')}
</span>

View File

@@ -26,7 +26,7 @@ function HistoryRewardNumber({
return (
<span
className={`inline-flex h-design-24 w-design-24 shrink-0 items-center justify-center rounded-[calc(var(--design-unit)*4)] border border-[rgba(95,233,255,0.16)] bg-[rgba(6,28,39,0.38)] p-design-1 align-middle ${className ?? ''}`}
className={`inline-flex h-design-24 w-design-24 shrink-0 items-center justify-center rounded-[calc(var(--design-unit)*4)]bg-[rgba(6,28,39,0.38)] p-design-1 align-middle ${className ?? ''}`}
title={label}
>
<RewardSpriteImage
@@ -185,6 +185,15 @@ export function MobileGameHistory() {
</div>
<div className="grid grid-cols-2 gap-design-4">
<div className="flex min-h-design-22 items-center justify-between gap-design-4 rounded-[calc(var(--design-unit)*5)] border border-[rgba(94,212,230,0.14)] bg-[linear-gradient(90deg,rgba(5,23,33,0.54),rgba(12,78,94,0.14))] px-design-6 py-design-4">
<span className="shrink-0 text-[#84A2A2]">
{t('gameDesktop.history.totalPoolAmount')}
</span>
<span className="min-w-0 truncate text-right text-design-11 font-bold text-[#D5FBFF]">
{item.betAmountLabel}
</span>
</div>
<div className="flex min-h-design-22 items-center justify-between gap-design-4 rounded-[calc(var(--design-unit)*5)] border border-[rgba(255,227,117,0.14)] bg-[linear-gradient(90deg,rgba(5,23,33,0.54),rgba(84,57,8,0.14))] px-design-6 py-design-4">
<span className="shrink-0 text-[#84A2A2]">
{t('gameDesktop.history.payout')}
@@ -194,7 +203,7 @@ export function MobileGameHistory() {
</span>
</div>
<div className="flex min-h-design-22 items-center justify-between gap-design-4 rounded-[calc(var(--design-unit)*5)] border border-[rgba(255,117,117,0.16)] bg-[linear-gradient(90deg,rgba(5,23,33,0.54),rgba(88,20,28,0.14))] px-design-6 py-design-4">
<div className="col-span-2 flex min-h-design-22 items-center justify-between gap-design-4 rounded-[calc(var(--design-unit)*5)] border border-[rgba(255,117,117,0.16)] bg-[linear-gradient(90deg,rgba(5,23,33,0.54),rgba(88,20,28,0.14))] px-design-6 py-design-4">
<span className="shrink-0 text-[#84A2A2]">
{t('gameDesktop.history.winningResult')}
</span>