Files
pk10/XOCDIA_README.md

465 lines
10 KiB
Markdown
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Xóc Đĩa 游戏 - 后台管理系统
## 📋 项目概述
这是为 TM68 在线娱乐平台开发的 **Xóc Đĩa(色碟)** 游戏后台管理系统。
Xóc Đĩa 是越南传统赌博游戏,使用 4 枚双色硬币(红/白),玩家根据硬币颜色组合进行投注。
---
## 🎮 游戏规则
### 基本玩法
1. 荷官摇动碗盘,展示 4 枚硬币的结果
2. 每枚硬币有两面:**红色 (Đen)** 或 **白色 (Trắng)**
3. 玩家提前押注结果组合
### 投注类型与赔率
| 投注类型 | 说明 | 默认赔率 |
|---------|------|---------|
| **Chẵn (双)** | 4红 / 4白 / 2红2白 | 1:1 |
| **Lẻ (单)** | 3红1白 / 1红3白 | 1:1 |
| **4 Đen (4红)** | 4枚全红 | 10:1 |
| **4 Trắng (4白)** | 4枚全白 | 10:1 |
| **3 Đen (3红1白)** | 3红1白 | 3.5:1 |
| **3 Trắng (3白1红)** | 1红3白 | 3.5:1 |
### 房间类型
#### 1. Bàn Thu Phế (抽水台)
- 庄家对赢家抽取佣金(默认 5%
- 标准玩法
#### 2. Bàn Xâu 3 Đen (免水台)
- 免抽水(1赔1
- **特殊规则**:出现"3红1白"时,押"单"的玩家退款(可配置)
- 庄家通过特殊规则保持优势
---
## 🗂️ 系统架构
### 目录结构
```
touzi/
├── App/
│ ├── Controllers/
│ │ └── Admin/
│ │ ├── XocdiaRoomController.php # 房间配置管理
│ │ └── XocdiaPeriodController.php # 期号管理
│ └── Views/
│ └── Admin/
│ ├── xocdia_rooms.php # 房间管理界面
│ └── xocdia_periods.php # 期号管理界面
├── Db/
│ └── xocdia_schema.sql # 数据库表结构
├── Docs/
│ └── XOCDIA_ADMIN_GUIDE.md # 详细使用指南
└── routes.php # 路由配置
```
### 数据库表
| 表名 | 用途 |
|-----|------|
| `xd_room_config` | 房间配置(赔率、限红、规则) |
| `xd_periods` | 期号记录(状态、结果、配置快照) |
| `xd_bets` | 投注记录 |
| `xd_settlements` | 结算汇总 |
| `xd_bet_stats` | 实时投注统计 |
---
## 🚀 快速开始
### 步骤1:初始化数据库
```bash
# 登录 MySQL
mysql -u your_username -p
# 使用现有数据库
USE touzi_database;
# 导入表结构
SOURCE /path/to/touzi/Db/xocdia_schema.sql;
```
**验证**
```sql
SHOW TABLES LIKE 'xd_%';
-- 应该看到 5 个表
SELECT * FROM xd_room_config;
-- 应该看到 2 个默认房间
```
### 步骤2:访问后台
1. 登录后台:`http://yourdomain.com/admin/login`
2. 访问房间管理:`http://yourdomain.com/admin/xocdia/rooms`
3. 访问期号管理:`http://yourdomain.com/admin/xocdia/periods`
### 步骤3:配置房间
1. 在房间列表点击"编辑"
2. 修改赔率、限红、抽水比例等
3. 保存配置
### 步骤4:开始第一期游戏
1. 访问期号管理页面
2. 选择房间
3. 点击"开始新期号"
4. 等待用户下注(或手动点击"封盘")
5. 点击"开奖",选择 4 枚硬币的结果
6. 系统自动结算并更新用户余额
---
## 🎯 管理流程
### 完整流程图
```
┌────────────┐
│ 开始新期号 │ → 自动生成期号、快照配置
└──────┬─────┘
┌────────────┐
│ 下注阶段 │ → 用户可以投注(30-60秒)
└──────┬─────┘
┌────────────┐
│ 封盘 │ → 停止接受新投注
└──────┬─────┘
┌────────────┐
│ 开奖 │ → 管理员选择 4 枚硬币结果
└──────┬─────┘
┌────────────┐
│ 自动结算 │ → 判断输赢、计算赔付、更新余额
└──────┬─────┘
┌────────────┐
│ 展示结果 │ → 显示开奖结果和赔付明细
└────────────┘
```
### 关键操作
#### 1. 配置赔率
**方式 A:通过界面**
- 访问 `/admin/xocdia/rooms`
- 点击"编辑"按钮
- 修改赔率配置
- 保存
**方式 B:直接修改数据库**
```sql
UPDATE xd_room_config
SET odds = JSON_OBJECT(
'even', 1.0,
'odd', 1.0,
'four_red', 15.0, -- 修改为 15 倍
'four_white', 15.0,
'three_red', 5.0,
'three_white', 5.0
),
version = version + 1
WHERE room_id = 1;
```
#### 2. 开始期号
**API 调用**
```javascript
fetch('/admin/xocdia/periods/start', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ room_id: 1 })
})
```
#### 3. 开奖
**API 调用**
```javascript
fetch('/admin/xocdia/periods/draw', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
period_id: 123,
coins: [1, 1, 1, 0] // 3红1白
})
})
```
**开奖结果映射**
```
[1, 1, 1, 1] → 4_red (4红)
[1, 1, 1, 0] → 3_red_1_white (3红1白)
[1, 1, 0, 0] → 2_red_2_white (2红2白)
[1, 0, 0, 0] → 1_red_3_white (1红3白)
[0, 0, 0, 0] → 4_white (4白)
```
---
## 💰 结算逻辑
### 基础结算(抽水台)
```
1. 判断输赢
- 投注"双",结果是 4红 → 赢
- 投注"单",结果是 3红1白 → 赢
2. 计算赔付
- 赢得金额 = 投注金额 × 赔率
- 佣金 = 赢得金额 × 佣金率 (5%)
- 净盈亏 = 赢得金额 - 佣金
3. 更新余额
- 用户余额 += 净盈亏
示例:
投注 100 元押"单",赔率 1.0,结果 3红1白
→ 赢得金额 = 100 × 1.0 = 100
→ 佣金 = 100 × 0.05 = 5
→ 净盈亏 = 100 - 5 = 95
→ 用户实际获得 95 元利润
```
### 特殊规则结算(免水台)
```
配置示例:
{
"trigger_result": "3_red_1_white", // 触发条件
"affected_bet_types": ["odd"], // 影响的投注类型
"action": "refund", // 动作:退款
"refund_percentage": 1.0 // 100% 退款
}
结算流程:
1. 检查结果是否为 "3_red_1_white"
2. 如果是,检查投注类型是否为 "odd"
3. 如果匹配,执行退款动作:
- 赢得金额 = 投注金额 × 100% = 投注金额
- 净盈亏 = 0(不赚不赔)
- 状态 = 'refund'
示例:
投注 100 元押"单",结果 3红1白
→ 触发特殊规则
→ 退款 100 元
→ 净盈亏 = 0
```
---
## 📊 数据查询
### 查看房间盈亏
```sql
-- 今日盈亏
SELECT
room_id,
SUM(house_profit) as total_profit,
SUM(total_bets_amount) as total_bets,
COUNT(*) as period_count
FROM xd_settlements
WHERE settled_at >= CURDATE()
GROUP BY room_id;
-- 历史盈亏(按日)
SELECT
DATE(settled_at) as date,
room_id,
SUM(house_profit) as daily_profit,
COUNT(*) as period_count
FROM xd_settlements
WHERE room_id = 1
GROUP BY DATE(settled_at), room_id
ORDER BY date DESC
LIMIT 30;
```
### 查看用户投注记录
```sql
SELECT
u.username,
b.period_number,
b.bet_type,
b.bet_amount,
b.status,
b.net_profit,
b.created_at
FROM xd_bets b
JOIN users u ON b.user_id = u.id
WHERE u.id = 123
ORDER BY b.created_at DESC
LIMIT 50;
```
### 统计热门玩法
```sql
SELECT
bet_type,
COUNT(*) as bet_count,
SUM(bet_amount) as total_amount,
AVG(bet_amount) as avg_amount
FROM xd_bets
WHERE created_at >= DATE_SUB(NOW(), INTERVAL 7 DAY)
GROUP BY bet_type
ORDER BY bet_count DESC;
```
---
## 🔧 配置说明
### 房间配置字段详解
```json
{
"room_id": 1,
"room_name": "Bàn Thu Phế",
"room_type": "commission", // commission=抽水台, special_rule=免水台
// 赔率配置(倍数)
"odds": {
"even": 1.0, // 双
"odd": 1.0, // 单
"four_red": 10.0, // 4红
"four_white": 10.0, // 4白
"three_red": 3.5, // 3红1白
"three_white": 3.5 // 1红3白
},
// 抽水配置
"commission_rate": 0.05, // 5%
"commission_enabled": true, // 是否启用
// 限红配置
"limits": {
"min_bet": 10, // 最小投注
"max_bet": 50000, // 最大投注
"max_payout": 500000 // 最大赔付
},
// 时间配置
"timing": {
"betting_duration": 30, // 下注时长(秒)
"result_display_duration": 8, // 结果展示时长(秒)
"auto_start_next": true // 自动开始下一期
},
// 特殊规则(仅免水台)
"special_rule": {
"enabled": true,
"trigger_result": "3_red_1_white",
"affected_bet_types": ["odd"],
"action": "refund", // refund/half_win/lose
"refund_percentage": 1.0 // 1.0=100%, 0.5=50%
}
}
```
---
## ⚠️ 注意事项
### 配置修改
1. **配置修改后不会立即生效**
- 当前期号使用配置快照
- 新期号开始时才会读取最新配置
2. **版本控制**
- 每次修改配置,`version` 字段自动 +1
- 用于乐观锁,防止并发修改冲突
### 开奖操作
1. **开奖不可撤销**
- 开奖后立即结算并更新余额
- 如果误操作,需手动回滚数据库
2. **结算原子性**
- 结算过程使用事务保证
- 失败会自动回滚
### 安全建议
1. **限制管理员权限**
- 开奖权限应严格控制
- 建议启用操作日志
2. **数据备份**
- 定期备份 `xd_*`
- 重要操作前手动备份
3. **并发控制**
- 避免多个管理员同时操作同一期号
- 配置更新使用乐观锁
---
## 📚 相关文档
- **详细使用指南**: `Docs/XOCDIA_ADMIN_GUIDE.md`
- **后端逻辑架构**: 参见开发文档
- **数据库表结构**: `Db/xocdia_schema.sql`
- **API 接口文档**: 待补充
---
## 🛠️ 后续开发计划
### 第一阶段(核心功能完善)
- [ ] WebSocket 实时通信
- [ ] 自动化定时任务(自动开奖、封盘)
- [ ] 风险监控预警
- [ ] 操作日志记录
### 第二阶段(数据分析)
- [ ] 房间盈亏报表
- [ ] 用户行为分析
- [ ] 开奖历史走势图
- [ ] 实时数据可视化
### 第三阶段(体验优化)
- [ ] 移动端适配
- [ ] 多语言支持(越南语/中文)
- [ ] 游戏历史回放
- [ ] API 开放接口
---
## 📞 技术支持
如有问题,请查阅:
1. 详细使用指南:`Docs/XOCDIA_ADMIN_GUIDE.md`
2. 数据库表结构:`Db/xocdia_schema.sql`
3. 源代码文档:控制器代码注释
---
**开发完成日期**: 2026-01-08
**版本**: 1.0.0
**开发者**: Claude (AI Assistant)