You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.0 KiB
3.0 KiB
抽奖逻辑修改完成总结
修改完成情况
✅ 已完成所有必要的修改
修改文件清单
1. API接口层 (src/api/API.js
)
- ✅ 新增
drawLottery
接口 - ✅ 支持传递奖项信息和轮次参数
2. 抽奖引擎 (src/views/choujiang/lottery/lotteryEngine.js
)
- ✅ 修改
executeLottery
函数,每轮抽奖请求后端 - ✅ 添加错误处理机制,支持回退到前端随机抽奖
- ✅ 适配新的数据格式
{ jwcode: "xxx", username: "xxx" }
3. 数据管理器 (src/views/choujiang/lottery/dataManager.js
)
- ✅ 使用真实用户数据替代假数据
- ✅ 确保数据格式与后端返回格式兼容
- ✅ 支持新旧两种数据格式
4. 3D显示组件 (src/views/choujiang/lottery/Lottery3D.vue
)
- ✅ 修改
changeCard
函数,适配新的数据格式 - ✅ 支持显示
jwcode
和username
字段 - ✅ 保持向后兼容性
5. 主抽奖页面 (src/views/choujiang/index.vue
)
- ✅ 修改气泡提示逻辑,支持新的数据格式
- ✅ 确保中奖用户信息正确显示
核心功能
1. 后端抽奖接口
// 请求参数
{
gradeName: "一等奖",
prizeName: "iPhone 15",
perWin: 5,
round: 1
}
// 返回数据
{
data: [
{ jwcode: "5412", username: "猪八戒22" },
{ jwcode: "45125", username: "宝玉" }
]
}
2. 错误处理机制
- 后端请求失败时自动回退到前端随机抽奖
- 确保抽奖功能不中断
- 提供详细的错误日志
3. 数据格式兼容性
- 支持新格式:
{ jwcode: "5412", username: "猪八戒22" }
- 支持旧格式:
["5412", "猪八戒22", "PSST"]
- 自动识别和适配不同格式
工作流程
- 页面初始化 → 获取奖品列表和用户列表
- 开始抽奖 → 用户点击抽奖按钮
- 请求后端 → 发送抽奖请求,包含奖项信息和轮次
- 获取结果 → 后端返回中奖用户列表
- 显示动画 → 前端根据返回的中奖用户显示3D抽奖动画
- 保存结果 → 将中奖用户保存到本地状态
测试建议
- 正常流程测试:验证完整的抽奖流程
- 异常处理测试:模拟后端接口异常
- 数据格式测试:验证新旧数据格式兼容性
- 多轮抽奖测试:验证轮次管理和奖品切换
- 性能测试:验证大量用户数据下的表现
部署注意事项
- 后端接口:确保实现
/lottery/draw
接口 - 数据格式:确保返回的数据格式符合要求
- 错误处理:建议后端提供详细的错误信息
- 性能优化:考虑大量并发抽奖请求的处理
后续优化建议
- 缓存机制:可以考虑缓存用户数据,减少重复请求
- 实时更新:可以考虑WebSocket实时更新中奖结果
- 数据统计:可以添加抽奖统计和分析功能
- 界面优化:可以根据实际需求优化3D动画效果
修改完成时间:2024年12月19日
修改状态:✅ 已完成
测试状态:🔄 待测试