Initial commit: 投注游戏平台初始化

This commit is contained in:
li
2026-02-25 01:26:58 +08:00
commit 77ca2cc8b3
275 changed files with 237479 additions and 0 deletions
+464
View File
@@ -0,0 +1,464 @@
# 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)