zhibo/Zhibo/zhibo-h/礼物打赏模块README.md

203 lines
4.1 KiB
Markdown
Raw 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.

# 礼物打赏模块
## 📖 简介
礼物打赏模块是直播系统的核心功能之一,允许用户在直播间或私聊中向主播赠送虚拟礼物。本模块基于现有数据库表结构实现,完全兼容你的数据库设计。
## 🗂️ 数据库表
本模块使用以下4个数据库表
| 表名 | 说明 | 用途 |
|------|------|------|
| `eb_gift` | 礼物表 | 存储礼物的基本信息 |
| `eb_gift_reward_record` | 礼物打赏记录表 | 记录每次打赏的详细信息 |
| `eb_gift_detail` | 送礼物明细表 | 记录送礼的详细明细 |
| `eb_gift_quantity` | 礼物数量列表 | 充值选项配置 |
## 🚀 快速开始
### 1. 插入测试数据
```bash
# 在MySQL中执行
mysql -u root -p your_database < sql/gift_test_data.sql
```
### 2. 启动服务
```bash
cd crmeb-admin
mvn spring-boot:run
```
### 3. 测试接口
访问 Swagger 文档http://localhost:8081/doc.html
或使用测试脚本:
```bash
# Windows
test_gift_api.bat
# Linux/Mac
./test_gift_api.sh
```
## 📡 API接口
### 1. 获取礼物列表
```
GET /api/front/gift/list
```
### 2. 获取用户余额
```
GET /api/front/gift/balance
需要登录
```
### 3. 赠送礼物
```
POST /api/front/gift/send
需要登录
```
### 4. 获取充值选项
```
GET /api/front/gift/recharge/options
```
### 5. 创建充值订单
```
POST /api/front/gift/recharge/create
需要登录
```
## 📚 文档
- [开发说明](./礼物打赏模块开发说明.md) - 详细的技术文档
- [快速开始](./礼物打赏模块快速开始.md) - 部署和测试指南
- [实现总结](../礼物打赏模块实现总结.md) - 功能总结和统计
## 🔧 配置
### 数据库配置
确保 `application.yml` 中的数据库配置正确:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf-8
username: your_username
password: your_password
```
### 端口配置
默认端口8081
如需修改,在 `application.yml` 中配置:
```yaml
server:
port: 8081
```
## 🧪 测试
### 使用Postman
1. 导入 `礼物打赏API测试集合.postman_collection.json`
2. 设置环境变量:
- `base_url`: http://localhost:8081
- `token`: 你的登录token
3. 运行测试
### 使用curl
```bash
# 获取礼物列表
curl http://localhost:8081/api/front/gift/list
# 获取充值选项
curl http://localhost:8081/api/front/gift/recharge/options
```
## 📊 数据流程
### 礼物赠送流程
```
用户选择礼物
验证登录状态
验证礼物存在
计算总金额
检查余额
扣除用户余额
保存打赏记录 (eb_gift_reward_record)
保存用户账单 (eb_user_bill)
增加主播收益
保存主播账单 (eb_user_bill)
返回结果
```
## ⚠️ 注意事项
1. **充值功能**当前返回模拟数据需要集成真实支付SDK
2. **分成比例**当前主播收益100%,实际应按平台规则分成
3. **并发控制**高并发场景需要使用Redis锁
4. **WebSocket**:礼物赠送后应推送消息到直播间
## 🔐 安全建议
1. 所有接口都需要验证用户登录状态
2. 严格验证金额,防止篡改
3. 限制用户赠送礼物的频率
4. 使用数据库行锁或Redis锁防止超额扣款
5. 记录所有金额变动操作
## 📈 后续优化
- [ ] 集成支付SDK微信支付、支付宝
- [ ] 实现平台分成逻辑
- [ ] 添加WebSocket推送
- [ ] 实现礼物动画
- [ ] 添加礼物排行榜
- [ ] 实现连击功能
- [ ] 使用 eb_gift_detail 表记录详细信息
## 🐛 问题排查
### 接口返回401
- 检查是否传递了token
- 检查token是否有效
### 余额不足
- 查询用户余额:`SELECT now_money FROM eb_user WHERE uid = ?`
- 手动充值:`UPDATE eb_user SET now_money = 1000 WHERE uid = ?`
### 找不到礼物
- 检查礼物是否存在:`SELECT * FROM eb_gift WHERE id = ?`
- 检查礼物状态:`status = 1` 表示启用
## 📞 技术支持
如有问题,请查看详细文档或联系开发团队。
---
**版本**: v1.0
**状态**: ✅ 已完成
**最后更新**: 2024年