# 期号问题快速修复指南 ## 问题描述 用户报告: 1. **新游戏显示老游戏的开奖信息** - Xóc Đĩa 显示骰子游戏的历史记录 2. **无法正常下注** - 投注时提示错误 ## 根本原因 1. **历史开奖记录是硬编码的** - 前台页面使用固定的示例数据 2. **期号状态可能不正确** - 需要确认期号是否处于 `pending` 状态 --- ## 解决方案 ### 1. 修改的文件 已修改以下文件以支持动态历史记录: #### `App/Controllers/Web/HomeController.php` - 添加获取历史开奖记录的代码 - 传递 `recentPeriods` 变量到视图 #### `App/Views/Web/live.php` - 将硬编码的历史记录改为动态生成 - 根据游戏类型显示不同的历史记录格式 --- ### 2. 验证步骤 #### 步骤1:检查数据库中的期号 ```sql -- 查看所有期号 SELECT id, period_number, game_id, status, created_at FROM periods ORDER BY id DESC LIMIT 10; -- 应该看到: -- 骰子游戏(game_id=1)和 Xóc Đĩa(game_id=2)的期号分开 ``` #### 步骤2:检查当前期号状态 ```sql -- 查看 Xóc Đĩa 的当前期号 SELECT id, period_number, game_id, status, start_time FROM periods WHERE game_id = 2 ORDER BY id DESC LIMIT 1; -- 状态应该是 'pending' -- start_time 应该是最近的时间 ``` #### 步骤3:如果期号状态不对 ```sql -- 如果状态是 'locked' 或其他,重置为 'pending' UPDATE periods SET status = 'pending', start_time = NOW() WHERE id = [期号ID]; ``` #### 步骤4:检查游戏配置 ```sql -- 确认游戏类型正确 SELECT id, name, code, type, status FROM games; -- 应该看到: -- 1 | Tài Xỉu | dice | dice | 1 -- 2 | Xóc Đĩa | xocdia | xocdia | 1 ``` --- ### 3. 投注失败的常见原因 #### 原因1:期号状态不是 pending **检查**: ```sql SELECT id, period_number, status FROM periods WHERE game_id = 2 ORDER BY id DESC LIMIT 1; ``` **修复**: ```sql UPDATE periods SET status = 'pending' WHERE id = [期号ID]; ``` #### 原因2:投注时间超过60秒 **检查**: ```sql SELECT id, period_number, start_time, TIMESTAMPDIFF(SECOND, start_time, NOW()) as elapsed_seconds FROM periods WHERE game_id = 2 ORDER BY id DESC LIMIT 1; -- 如果 elapsed_seconds > 60,说明已经超时 ``` **修复**: ```sql -- 重置开始时间 UPDATE periods SET start_time = NOW() WHERE id = [期号ID]; ``` #### 原因3:期号不存在 **检查**: ```sql -- 查看是否有 Xóc Đĩa 的期号 SELECT COUNT(*) FROM periods WHERE game_id = 2; ``` **修复**: - 进入后台 → 期号管理 - 选择"Xóc Đĩa"游戏 - 点击"开始下注" --- ### 4. 完整的重置流程 如果问题仍然存在,执行以下完整重置: ```sql -- 1. 删除 Xóc Đĩa 的所有旧期号(可选,谨慎操作) -- DELETE FROM periods WHERE game_id = 2; -- 2. 确认游戏配置正确 UPDATE games SET type = 'xocdia', code = 'xocdia' WHERE name LIKE '%Xóc%'; -- 3. 通过后台创建新期号 -- 进入后台 → 期号管理 → 选择 Xóc Đĩa → 开始下注 ``` --- ### 5. 前台测试 #### 测试1:访问游戏页面 ```bash # 访问 Xóc Đĩa 游戏 http://yourdomain.com/live?game_id=2 # 应该看到: # - 期号显示(例如:G220260108001) # - 倒计时(60秒) # - 历史记录为空或显示 Xóc Đĩa 的历史 ``` #### 测试2:投注 1. 选择筹码金额 2. 点击投注区域(双/单 或 精确组合) 3. 点击"ĐẶT CƯỢC"确认 4. 应该看到"Đặt cược thành công!"提示 #### 测试3:查看投注记录 ```sql -- 查看最新的投注记录 SELECT id, user_id, period_id, bet_type, bet_value, amount, status FROM bets ORDER BY id DESC LIMIT 5; -- 应该看到刚才的投注记录 ``` --- ### 6. 浏览器控制台调试 打开浏览器开发者工具(F12),查看 Console 和 Network 标签: #### Console 错误 如果看到错误信息,记录下来: ``` Poll error: ... Bet error: ... ``` #### Network 请求 查看以下请求是否成功: 1. **期号轮询**:`/api/period/current?game_id=2` - 应该返回:`{"success":true,"data":{...}}` - 如果返回 `success: false`,说明期号不存在 2. **投注请求**:`/api/bet` - 应该返回:`{"success":true,"new_balance":...}` - 如果返回 `success: false`,查看 `message` 字段 --- ### 7. 后台日志 如果问题仍然存在,检查后台日志: ```bash # 查看 PHP 错误日志 tail -f /path/to/touzi/Storage/log/error.log # 或者查看宝塔面板的日志 # 宝塔 → 网站 → 日志 → PHP错误日志 ``` --- ## 常见错误信息 ### "Kỳ quay không tồn tại"(期号不存在) **原因**:数据库中没有该游戏的 pending 期号 **解决**: 1. 进入后台期号管理 2. 选择游戏 3. 点击"开始下注" --- ### "Kỳ quay đã đóng hoặc đang xử lý"(期号已关闭) **原因**:期号状态不是 `pending` **解决**: ```sql UPDATE periods SET status = 'pending' WHERE id = [期号ID]; ``` --- ### "Đã hết thời gian đặt cược"(投注时间已过) **原因**:距离开始时间超过60秒 **解决**: ```sql UPDATE periods SET start_time = NOW() WHERE id = [期号ID]; ``` --- ### "Dữ liệu không hợp lệ"(数据无效) **原因**:前端发送的数据格式不正确 **解决**: 1. 检查浏览器 Console 是否有 JavaScript 错误 2. 确认 `currentGameId` 变量是否正确 3. 刷新页面重试 --- ## 预防措施 ### 1. 定期检查期号状态 ```sql -- 查看所有未结算的期号 SELECT id, period_number, game_id, status, start_time FROM periods WHERE status IN ('pending', 'locked', 'drawn') ORDER BY id DESC; ``` ### 2. 自动封盘机制 前台已经实现自动封盘: - 60秒后自动将 `pending` 改为 `locked` - 但需要有用户访问页面触发 ### 3. 后台操作流程 标准流程: 1. 开始下注(创建 pending 期号) 2. 等待60秒或手动封盘 3. 录入开奖结果(状态变为 drawn) 4. 确认结算(状态变为 settled) 5. 重复步骤1 --- ## 联系支持 如果以上步骤都无法解决问题,请提供: 1. **数据库查询结果**: ```sql SELECT * FROM periods WHERE game_id = 2 ORDER BY id DESC LIMIT 3; SELECT * FROM games WHERE id = 2; ``` 2. **浏览器 Console 错误**:截图或复制错误信息 3. **Network 请求详情**: - `/api/period/current?game_id=2` 的响应 - `/api/bet` 的请求和响应 --- **最后更新**: 2026-01-08 **适用版本**: TM68 投注平台