11 KiB
Executable File
11 KiB
Executable File
Xóc Đĩa 游戏后台管理使用指南
目录
快速开始
访问地址
- 房间配置管理:
http://yourdomain.com/admin/xocdia/rooms - 期号管理:
http://yourdomain.com/admin/xocdia/periods - 实时监控:
http://yourdomain.com/admin/xocdia/monitor?room_id=1
前置条件
- 已完成系统安装(
/install) - 已创建管理员账号并登录后台
- 已执行数据库初始化脚本
数据库初始化
步骤1:导入数据库表结构
连接到 MySQL 数据库,执行以下命令:
mysql -u your_username -p your_database < Db/xocdia_schema.sql
或者通过 phpMyAdmin 导入 Db/xocdia_schema.sql 文件。
步骤2:验证表是否创建成功
SHOW TABLES LIKE 'xd_%';
应该看到以下表:
xd_room_config- 房间配置表xd_periods- 期号表xd_bets- 投注记录表xd_settlements- 结算汇总表xd_bet_stats- 实时投注统计表
步骤3:查看默认房间
数据库初始化时已自动创建两个默认房间:
SELECT room_id, room_name, room_type FROM xd_room_config;
- Room 1: Bàn Thu Phế (抽水台) - 标准抽水 5%
- Room 2: Bàn Xâu 3 Đen (免水台) - 特殊规则,3红1白时退款
房间配置管理
访问房间列表
- 登录后台后,访问
/admin/xocdia/rooms - 可以看到所有房间的列表
创建新房间
注意:当前版本暂不支持通过界面创建房间,请直接修改数据库或复制以下 SQL:
INSERT INTO xd_room_config (room_id, room_name, room_type, odds, limits, timing)
VALUES (
3, -- 新房间ID
'高级房', -- 房间名称
'commission', -- 房间类型
JSON_OBJECT(
'even', 1.0,
'odd', 1.0,
'four_red', 12.0, -- 可自定义赔率
'four_white', 12.0,
'three_red', 4.0,
'three_white', 4.0
),
JSON_OBJECT(
'min_bet', 100, -- 最小投注
'max_bet', 100000, -- 最大投注
'max_payout', 1000000
),
JSON_OBJECT(
'betting_duration', 60, -- 下注时长60秒
'result_display_duration', 10,
'auto_start_next', true
)
);
编辑房间配置
方式1:通过后台界面
- 在房间列表点击"编辑"按钮
- 修改以下配置项:
基本设置
- 房间名称
- 房间类型(抽水台/免水台)
- 抽水比例(仅抽水台)
赔率配置
- 双 (Chẵn) - 默认 1.0
- 单 (Lẻ) - 默认 1.0
- 4红 - 默认 10.0
- 4白 - 默认 10.0
- 3红1白 - 默认 3.5
- 3白1红 - 默认 3.5
限红配置
- 最小投注:建议 10-100
- 最大投注:建议 50000-100000
- 最大赔付:建议 500000-1000000
时间配置
- 下注时长:建议 30-60 秒
- 点击"保存配置"
方式2:直接修改数据库
-- 修改赔率
UPDATE xd_room_config
SET odds = JSON_OBJECT(
'even', 1.0,
'odd', 1.0,
'four_red', 15.0, -- 修改赔率
'four_white', 15.0,
'three_red', 5.0,
'three_white', 5.0
),
version = version + 1 -- 版本号加1
WHERE room_id = 1;
配置生效时机
⚠️ 重要:配置修改后,下一期号开始时才会生效。
- 当前正在进行的期号使用"配置快照",不受影响
- 新开始的期号会读取最新配置
开放/关闭房间
- 在房间列表点击"开放"或"关闭"按钮
- 关闭的房间无法开始新期号
期号管理流程
完整流程图
开始新期号 → 下注阶段 (30-60s) → 封盘 → 开奖 → 自动结算 → 展示结果 → 完成
步骤1:开始新期号
- 访问
/admin/xocdia/periods - 选择房间
- 点击"开始新期号"按钮
自动执行的操作:
- 生成期号(格式:
YYYYMMDD-001) - 快照当前房间配置
- 初始化投注统计表
- 设置状态为
betting
步骤2:下注阶段
此时前台用户可以下注。
管理员可以:
- 实时查看投注统计(访问监控页面)
- 手动封盘(提前结束下注)
自动封盘:
- 如果配置了倒计时,到时间后自动封盘(需 WebSocket 支持)
步骤3:封盘
- 在期号列表找到状态为"下注中"的期号
- 点击"封盘"按钮
自动执行的操作:
- 设置状态为
shaking - 记录封盘时间
- 拒绝新的投注请求
步骤4:开奖
- 在期号列表找到状态为"摇碟中"的期号
- 点击"开奖"按钮
- 在弹窗中选择 4 枚硬币的结果:
- 1 = 红色 (Đen)
- 0 = 白色 (Trắng)
示例结果:
[1, 1, 1, 0]= 3红1白 =3_red_1_white[1, 1, 1, 1]= 4红 =4_red[0, 0, 0, 0]= 4白 =4_white
- 点击"确认开奖并结算"
步骤5:自动结算
开奖后,系统自动执行以下操作:
-
判断输赢
- 遍历所有投注记录
- 根据开奖结果判断是否赢
-
计算赔付
- 赢的投注:
赢得金额 = 投注金额 × 赔率 - 输的投注:
净盈亏 = -投注金额
- 赢的投注:
-
应用佣金(仅抽水台)
佣金 = 赢得金额 × 佣金率净盈亏 = 赢得金额 - 佣金
-
应用特殊规则(仅免水台)
- 检查是否触发特殊规则(如 3红1白)
- 如果触发:
action=refund: 退款,净盈亏 = 0action=half_win: 只赢一半action=lose: 强制输
-
更新余额
- 更新所有玩家的余额
- 记录交易流水
-
生成结算汇总
- 总投注笔数
- 总投注金额
- 总赢得金额
- 总佣金
- 庄家盈利 = 总投注额 - (总赢得金额 - 总佣金)
-
完成
- 设置状态为
showing
- 设置状态为
步骤6:查看结算详情
- 点击期号的"详情"按钮
- 查看:
- 开奖结果
- 投注统计
- 结算数据
- 庄家盈亏
实时监控
访问监控页面
/admin/xocdia/monitor?room_id=1
监控内容
-
当前期号信息
- 期号
- 状态
- 倒计时(如果在下注阶段)
-
实时投注统计(需要数据库触发器或定时刷新)
- 各投注项的金额
- 各投注项的笔数
- 单边倾斜预警
-
赔付预测
- 如果结果是 X,庄家盈亏多少
- 最差情况/最佳情况分析
常见问题
Q1: 配置修改后为什么还是旧的赔率?
答:当前期号使用的是"配置快照",修改不会影响正在进行的期号。新期号开始后才会使用新配置。
Q2: 如何验证结算是否正确?
答:可以手动计算验证:
-- 查看某期号的结算汇总
SELECT * FROM xd_settlements WHERE period_id = 123;
-- 查看详细投注记录
SELECT
bet_type,
COUNT(*) as count,
SUM(bet_amount) as total_bet,
SUM(win_amount) as total_win,
SUM(commission) as total_commission,
SUM(net_profit) as total_profit
FROM xd_bets
WHERE period_id = 123
GROUP BY bet_type;
验证公式:
庄家盈利 = 总投注额 - (总赢得金额 - 总佣金)
= 总投注额 - 玩家净盈亏总和
Q3: 如何处理误操作开奖?
答:当前版本不支持撤销开奖。如果误操作:
-
紧急方案:直接修改数据库
-- 回滚期号状态(谨慎操作!) UPDATE xd_periods SET state = 'shaking', result = NULL WHERE id = 123; -- 删除结算记录 DELETE FROM xd_settlements WHERE period_id = 123; -- 回滚投注记录 UPDATE xd_bets SET status = 'pending', is_win = 0, win_amount = 0, commission = 0, net_profit = 0 WHERE period_id = 123; -- 手动调整受影响用户的余额(需逐个计算) -
推荐方案:联系技术团队处理
Q4: 特殊规则如何配置?
答:修改 special_rule 字段(JSON 格式):
UPDATE xd_room_config
SET special_rule = JSON_OBJECT(
'enabled', true,
'trigger_result', '3_red_1_white', -- 触发条件:3红1白
'affected_bet_types', JSON_ARRAY('odd'), -- 影响的投注类型
'action', 'refund', -- 动作:refund/half_win/lose
'refund_percentage', 1.0 -- 退款比例(1.0=100%)
),
version = version + 1
WHERE room_id = 2;
常见配置示例:
| 规则名称 | trigger_result | affected_bet_types | action | refund_percentage |
|---|---|---|---|---|
| Xâu 3 Đen 全退款 | 3_red_1_white | ['odd'] | refund | 1.0 |
| Xâu 3 Đen 半退款 | 3_red_1_white | ['odd'] | refund | 0.5 |
| Xâu 3 Đen 只赢一半 | 3_red_1_white | ['odd'] | half_win | - |
| Xâu 3 Đen 强制输 | 3_red_1_white | ['odd'] | lose | - |
Q5: 如何查看房间盈亏统计?
答:执行以下 SQL:
-- 查看某房间今日盈亏
SELECT
SUM(house_profit) as total_profit,
SUM(total_bets_amount) as total_bets,
SUM(total_commission) as total_commission,
COUNT(*) as period_count
FROM xd_settlements
WHERE room_id = 1
AND settled_at >= CURDATE();
-- 查看某房间历史盈亏(按日统计)
SELECT
DATE(settled_at) as date,
COUNT(*) as period_count,
SUM(total_bets_amount) as total_bets,
SUM(house_profit) as total_profit
FROM xd_settlements
WHERE room_id = 1
GROUP BY DATE(settled_at)
ORDER BY date DESC
LIMIT 30;
Q6: 如何备份游戏数据?
答:定期备份以下表:
# 备份所有 Xóc Đĩa 相关表
mysqldump -u username -p database_name \
xd_room_config \
xd_periods \
xd_bets \
xd_settlements \
xd_bet_stats \
> xocdia_backup_$(date +%Y%m%d).sql
后续开发建议
高优先级
-
WebSocket 集成
- 实时推送游戏状态变化
- 自动倒计时
- 实时投注更新
-
自动化流程
- 定时自动开始新期号
- 定时自动封盘
- 定时自动开奖(如接入硬件设备)
-
风险控制
- 单边预警(投注严重倾斜时提醒)
- 异常投注检测
- 最大赔付限制
中优先级
-
数据分析
- 房间盈亏报表
- 用户投注习惯分析
- 热门玩法统计
-
用户体验优化
- 投注历史查询
- 开奖历史走势图
- 房间排行榜
低优先级
- 高级功能
- 多语言支持(越南语/中文/英文)
- 移动端适配
- API 接口文档
技术支持
如有问题,请参考:
- 后端逻辑设计:
/path/to/architecture_design.md - 数据库表结构:
Db/xocdia_schema.sql - 控制器代码:
App/Controllers/Admin/Xocdia*.php
最后更新: 2026-01-08 文档版本: 1.0.0