# 礼物打赏模块部署清单 ## ✅ 部署前检查 ### 1. 数据库表检查 ```sql -- 执行以下SQL检查表是否存在 SHOW TABLES LIKE 'eb_gift'; SHOW TABLES LIKE 'eb_gift_reward_record'; SHOW TABLES LIKE 'eb_gift_detail'; SHOW TABLES LIKE 'eb_gift_quantity'; ``` **预期结果**:应该看到4个表 ### 2. 测试数据准备 ```bash # 执行测试数据脚本 mysql -u root -p your_database < zhibo-h/sql/gift_test_data.sql ``` ### 3. 代码文件检查 确认以下文件已创建: **Model层(4个):** - [x] `crmeb-common/src/main/java/com/zbkj/common/model/gift/Gift.java` - [x] `crmeb-common/src/main/java/com/zbkj/common/model/gift/GiftRecord.java` - [x] `crmeb-common/src/main/java/com/zbkj/common/model/gift/GiftDetail.java` - [x] `crmeb-common/src/main/java/com/zbkj/common/model/gift/RechargeOption.java` **Dao层(4个):** - [x] `crmeb-service/src/main/java/com/zbkj/service/dao/GiftDao.java` - [x] `crmeb-service/src/main/java/com/zbkj/service/dao/GiftRecordDao.java` - [x] `crmeb-service/src/main/java/com/zbkj/service/dao/GiftDetailDao.java` - [x] `crmeb-service/src/main/java/com/zbkj/service/dao/RechargeOptionDao.java` **Service层(6个):** - [x] `crmeb-service/src/main/java/com/zbkj/service/service/GiftService.java` - [x] `crmeb-service/src/main/java/com/zbkj/service/service/GiftRecordService.java` - [x] `crmeb-service/src/main/java/com/zbkj/service/service/RechargeOptionService.java` - [x] `crmeb-service/src/main/java/com/zbkj/service/service/impl/GiftServiceImpl.java` - [x] `crmeb-service/src/main/java/com/zbkj/service/service/impl/GiftRecordServiceImpl.java` - [x] `crmeb-service/src/main/java/com/zbkj/service/service/impl/RechargeOptionServiceImpl.java` **Controller层(1个):** - [x] `crmeb-front/src/main/java/com/zbkj/front/controller/GiftController.java` **Request/Response(7个):** - [x] `crmeb-front/src/main/java/com/zbkj/front/request/SendGiftRequest.java` - [x] `crmeb-front/src/main/java/com/zbkj/front/request/CreateRechargeRequest.java` - [x] `crmeb-front/src/main/java/com/zbkj/front/response/GiftResponse.java` - [x] `crmeb-front/src/main/java/com/zbkj/front/response/SendGiftResponse.java` - [x] `crmeb-front/src/main/java/com/zbkj/front/response/UserBalanceResponse.java` - [x] `crmeb-front/src/main/java/com/zbkj/front/response/RechargeOptionResponse.java` - [x] `crmeb-front/src/main/java/com/zbkj/front/response/CreateRechargeResponse.java` ## 🚀 部署步骤 ### 步骤1:编译项目 ```bash cd zhibo-h mvn clean compile -DskipTests ``` 或使用脚本: ```bash # Windows compile_check.bat ``` **预期结果**:编译成功,无错误 ### 步骤2:打包项目 ```bash mvn clean package -DskipTests ``` **预期结果**:在 `crmeb-admin/target/` 目录下生成jar包 ### 步骤3:启动服务 ```bash # 方式1:使用Maven cd crmeb-admin mvn spring-boot:run # 方式2:使用jar包 cd crmeb-admin/target java -jar crmeb-admin-0.0.1-SNAPSHOT.jar ``` **预期结果**:服务启动成功,监听8081端口 ### 步骤4:验证服务 ```bash # 检查服务是否启动 curl http://localhost:8081/api/front/gift/list ``` **预期结果**:返回JSON格式的礼物列表 ## 🧪 功能测试 ### 测试1:获取礼物列表 ```bash curl http://localhost:8081/api/front/gift/list ``` **预期结果**: ```json { "code": 200, "message": "success", "data": [...] } ``` ### 测试2:获取充值选项 ```bash curl http://localhost:8081/api/front/gift/recharge/options ``` **预期结果**:返回充值选项列表 ### 测试3:获取用户余额(需要登录) ```bash curl -H "Authorization: Bearer YOUR_TOKEN" http://localhost:8081/api/front/gift/balance ``` **预期结果**:返回用户余额 ### 测试4:赠送礼物(需要登录) ```bash curl -X POST http://localhost:8081/api/front/gift/send \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{ "roomId": 1, "streamerId": 2, "giftId": 1, "count": 1, "sceneType": 1 }' ``` **预期结果**:返回赠送成功,余额减少 ## 📊 数据验证 ### 验证1:检查礼物数据 ```sql SELECT * FROM eb_gift WHERE status = 1; ``` **预期结果**:至少有5条礼物记录 ### 验证2:检查充值选项 ```sql SELECT * FROM eb_gift_quantity WHERE status = 1; ``` **预期结果**:至少有6条充值选项 ### 验证3:检查打赏记录 ```sql SELECT * FROM eb_gift_reward_record ORDER BY reward_time DESC LIMIT 10; ``` **预期结果**:赠送礼物后应该有记录 ### 验证4:检查用户账单 ```sql SELECT * FROM eb_user_bill WHERE category = 'gift' ORDER BY create_time DESC LIMIT 10; ``` **预期结果**:赠送礼物后应该有两条记录(一条支出,一条收入) ## ⚠️ 常见问题 ### 问题1:编译失败 **原因**:依赖缺失或版本不兼容 **解决**: ```bash mvn clean install -DskipTests ``` ### 问题2:服务启动失败 **原因**:端口被占用或数据库连接失败 **解决**: 1. 检查8081端口是否被占用 2. 检查 `application.yml` 中的数据库配置 ### 问题3:接口返回401 **原因**:未登录或token无效 **解决**: 1. 先调用登录接口获取token 2. 在请求头中添加 `Authorization: Bearer YOUR_TOKEN` ### 问题4:余额不足 **原因**:用户余额为0 **解决**: ```sql UPDATE eb_user SET now_money = 1000.00 WHERE uid = 1; ``` ### 问题5:找不到礼物 **原因**:礼物数据未插入或状态为禁用 **解决**: ```sql -- 检查礼物数据 SELECT * FROM eb_gift WHERE id = 1; -- 启用礼物 UPDATE eb_gift SET status = 1 WHERE id = 1; ``` ## 📝 部署后检查清单 - [ ] 服务启动成功 - [ ] 可以访问Swagger文档(http://localhost:8081/doc.html) - [ ] 礼物列表接口正常返回 - [ ] 充值选项接口正常返回 - [ ] 用户余额接口正常返回(需要登录) - [ ] 赠送礼物功能正常(需要登录) - [ ] 数据库记录正确保存 - [ ] 用户余额正确扣除 - [ ] 主播收益正确增加 - [ ] 账单记录正确生成 ## 🎯 性能优化建议 ### 1. 数据库索引 ```sql -- 为常用查询字段添加索引 CREATE INDEX idx_gift_status ON eb_gift(status); CREATE INDEX idx_gift_reward_giver ON eb_gift_reward_record(giver_id); CREATE INDEX idx_gift_reward_receiver ON eb_gift_reward_record(receiver_id); CREATE INDEX idx_gift_reward_time ON eb_gift_reward_record(reward_time); ``` ### 2. Redis缓存 - 缓存礼物列表(过期时间:1小时) - 缓存充值选项(过期时间:1天) - 缓存用户余额(过期时间:5分钟) ### 3. 并发控制 - 使用Redis分布式锁防止重复扣款 - 使用乐观锁更新用户余额 ## 📞 技术支持 如遇到问题,请按以下顺序排查: 1. 检查服务日志 2. 检查数据库连接 3. 检查数据是否正确 4. 查看详细文档 --- **部署完成后,请在此打勾**:□ **部署人员**:___________ **部署时间**:___________ **备注**:___________