8.7 KiB
Executable File
8.7 KiB
Executable File
Xóc Đĩa 游戏集成指南
📋 概述
本文档描述如何在 TM68 平台上使用新集成的 Xóc Đĩa(色碟)游戏功能。
🎯 游戏规则
基本机制
- 使用 4 枚双色硬币(红色/白色)
- 荷官摇动后开盖展示结果
- 玩家根据硬币颜色组合进行投注
投注类型
| 投注类型 | 说明 | 中奖条件 | 默认赔率 |
|---|---|---|---|
| CHẴN (双/偶) | 双数组合 | 4红 或 4白 或 2红2白 | 1:0.96 |
| LẺ (单/奇) | 单数组合 | 3红1白 或 3白1红 | 1:0.96 |
| 4 ĐỎ | 4个红色 | 全部红色 | 1:10 |
| 4 TRẮNG | 4个白色 | 全部白色 | 1:10 |
| 3 ĐỎ 1 TRẮNG | 3红1白 | 3个红色1个白色 | 1:3.5 |
| 3 TRẮNG 1 ĐỎ | 3白1红 | 3个白色1个红色 | 1:3.5 |
🚀 部署步骤
1. 初始化数据库
执行 SQL 脚本初始化游戏和赔率配置:
# 方式1:通过 phpMyAdmin 导入
# 导入文件:Db/xocdia_setup.sql
# 方式2:通过命令行执行
mysql -u用户名 -p数据库名 < Db/xocdia_setup.sql
脚本内容:
- 在
games表添加 Xóc Đĩa 游戏记录(code='xocdia', type='xocdia') - 在
game_odds表配置6种投注类型的赔率
2. 配置游戏信息
登录后台管理 → 游戏管理 → 编辑 Xóc Đĩa 游戏:
-
基本信息
- 游戏名称:Xóc Đĩa
- 游戏标识:xocdia(自动生成)
- 游戏类型:xocdia(重要!)
- 状态:启用
-
直播配置
- 直播流地址:填写 HLS/FLV 流地址
- 示例:
https://your-cdn.com/live/xocdia.m3u8
-
展示设置
- 游戏图片:上传缩略图(推荐尺寸 400x300)
- 在游戏大厅显示:是
- 排序权重:100(数字越大越靠前)
3. 配置赔率(可选)
如需调整赔率,登录后台管理 → 游戏管理 → 赔率配置:
| 类型 (type) | 目标 (target) | 赔率 (odds) | 说明 |
|---|---|---|---|
| chan | all | 0.96 | 双(偶)的赔率 |
| le | all | 0.96 | 单(奇)的赔率 |
| exact | 4red | 10.0 | 4红的赔率 |
| exact | 4white | 10.0 | 4白的赔率 |
| exact | 3red1white | 3.5 | 3红1白的赔率 |
| exact | 3white1red | 3.5 | 3白1红的赔率 |
🎮 游戏流程
前台用户流程
-
进入游戏
- 访问首页 → 点击 Xóc Đĩa 游戏卡片
- 或直接访问:
http://yourdomain.com/live?game_id=X(X为游戏ID)
-
观看直播
- 页面左侧自动播放直播视频
- 显示当前期号和倒计时
-
下注
- 选择筹码金额(100K ~ 5M)
- 点击投注区域(双/单 或 精确组合)
- 可多次点击累加投注额
- 点击"ĐẶT CƯỢC"确认,或"HỦY"取消
-
等待开奖
- 倒计时结束后封盘
- 荷官开奖
- 自动结算并更新余额
后台管理流程
开始新一轮
- 登录后台管理 → 期号管理
- 点击"开始下注"按钮
- 系统自动创建新期号(格式:
G{GameID}{YYYYMMDD}{NNNN}) - 前台用户可以开始投注(60秒倒计时)
开奖
- 倒计时结束或手动封盘
- 点击"开奖"按钮
- 选择开奖方式:
- 手动输入:逐个选择4个硬币的颜色(red/white)
- 自动随机:系统随机生成结果
- 确认开奖
开奖结果存储格式(JSON):
["red", "white", "red", "red"] // 3红1白
结算
- 点击"结算"按钮
- 系统自动:
- 遍历所有待结算投注
- 根据开奖结果判断输赢
- 中奖用户:返还本金 + 盈利
- 未中奖:不退还本金
- 记录资金流水
- 期号状态变更为"已结算"
- 点击"开始下注"启动下一轮
🔧 技术实现细节
数据库字段复用
为避免修改数据库结构,Xóc Đĩa 游戏复用了 periods 表的骰子游戏字段:
| 字段名 | 骰子游戏 | Xóc Đĩa 游戏 |
|---|---|---|
result |
"Xỉu/Tài" | JSON数组:["red","white",...] |
dice1 |
骰子1点数 | 红色硬币数量 |
dice2 |
骰子2点数 | 白色硬币数量 |
dice3 |
骰子3点数 | null |
total |
三骰总和 | null |
投注数据结构
{
"bets": [
{
"type": "chan", // 投注类型
"value": "all", // 投注目标
"amount": 100000, // 投注金额
"odds": 0.96 // 赔率(从服务器获取)
},
{
"type": "exact",
"value": "4red",
"amount": 500000,
"odds": 10.0
}
],
"period_number": "G2202601080001",
"game_id": 2
}
开奖API调用示例
// 手动开奖
fetch('/admin/periods/draw', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
id: 123, // 期号ID
auto: false, // 手动模式
coins: ['red', 'red', 'white', 'red'] // 4个硬币颜色
})
});
// 自动开奖
fetch('/admin/periods/draw', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
id: 123,
auto: true // 自动随机
})
});
结算逻辑
// 中奖判断示例(checkWin 方法)
$coins = json_decode($period['result'], true); // ["red", "red", "white", "red"]
$redCount = count(array_filter($coins, fn($c) => $c === 'red')); // 3
// 判断 chan(双)
if (in_array($redCount, [0, 2, 4])) {
// 中奖:0红4白, 2红2白, 4红0白
$winAmount = $betAmount * $odds;
}
// 判断 exact(精确组合)
if ($betValue === '3red1white' && $redCount === 3) {
// 中奖:3红1白
$winAmount = $betAmount * $odds;
}
🐛 故障排查
问题1:前台看不到 Xóc Đĩa 游戏
原因:
- 游戏未启用(status=0)
- featured=0(不在大厅显示)
解决:
UPDATE games SET status=1, featured=1 WHERE code='xocdia';
问题2:投注时提示"赔率无效"
原因:
game_odds表缺少赔率配置
解决:
# 重新执行初始化脚本
mysql -u用户名 -p数据库名 < Db/xocdia_setup.sql
问题3:开奖后前台显示错误
原因:
result字段不是有效的 JSON 数组
解决:
-- 检查 result 字段格式
SELECT id, result FROM periods WHERE game_id=2 LIMIT 5;
-- 应该是:["red","white","red","red"] 格式
-- 如果不是,手动修正
UPDATE periods SET result='["red","red","white","white"]' WHERE id=XXX;
问题4:结算失败
原因:
- 期号状态不是 'drawn'
- 事务回滚
解决:
- 检查日志:
Storage/log/error.log - 检查期号状态:
SELECT id, period_number, status FROM periods WHERE id=XXX; - 手动修复状态:
UPDATE periods SET status='drawn' WHERE id=XXX;
📊 性能优化建议
1. 赔率缓存
当前实现已使用静态缓存,避免重复查询:
static $oddsCache = [];
2. 期号索引
确保数据库有以下索引:
CREATE INDEX idx_period_status ON periods(status);
CREATE INDEX idx_period_game ON periods(game_id, status);
CREATE INDEX idx_bet_period ON bets(period_id, status);
3. 定时清理
建议每月清理已结算的旧期号和投注记录:
-- 保留最近30天的记录
DELETE FROM periods WHERE status='settled' AND created_at < DATE_SUB(NOW(), INTERVAL 30 DAY);
DELETE FROM bets WHERE status IN ('win','lose') AND created_at < DATE_SUB(NOW(), INTERVAL 30 DAY);
📝 未来扩展
可能的功能增强
-
统计数据
- 历史开奖记录(路单)
- 热门投注统计
- 玩家胜率分析
-
游戏变体
- 支持自定义硬币图案
- 支持更多投注类型(如:颜色顺序)
-
自动化
- 自动开奖(对接硬件或视频识别)
- 自动封盘(基于倒计时)
✅ 集成检查清单
部署前请确认:
- SQL 脚本已执行,游戏和赔率已创建
- 后台游戏管理中 Xóc Đĩa 状态为"启用"
- 已配置直播流地址(或留空测试)
- 前台可以正常访问游戏页面
- 测试完整流程:创建期号 → 投注 → 开奖 → 结算
- 数据库备份已创建
📞 技术支持
如遇到问题,请检查:
Storage/log/error.log- PHP 错误日志- 浏览器开发者工具 Console - 前端错误
- 数据库查询日志 - SQL 错误
相关文件:
- 数据库脚本:
Db/xocdia_setup.sql - 前端组件:
App/Views/Web/components/xocdia-bet-panel.php - 后端控制器:
App/Controllers/Web/HomeController.php(live方法)App/Controllers/Web/BetController.php(placeBet方法)App/Controllers/Admin/PeriodController.php(draw/settle方法)
最后更新: 2026-01-08 版本: 1.0.0