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.

97 lines
3.0 KiB

4 weeks ago
  1. # 抽奖逻辑修改完成总结
  2. ## 修改完成情况
  3. **已完成所有必要的修改**
  4. ## 修改文件清单
  5. ### 1. API接口层 (`src/api/API.js`)
  6. - ✅ 新增 `drawLottery` 接口
  7. - ✅ 支持传递奖项信息和轮次参数
  8. ### 2. 抽奖引擎 (`src/views/choujiang/lottery/lotteryEngine.js`)
  9. - ✅ 修改 `executeLottery` 函数,每轮抽奖请求后端
  10. - ✅ 添加错误处理机制,支持回退到前端随机抽奖
  11. - ✅ 适配新的数据格式 `{ jwcode: "xxx", username: "xxx" }`
  12. ### 3. 数据管理器 (`src/views/choujiang/lottery/dataManager.js`)
  13. - ✅ 使用真实用户数据替代假数据
  14. - ✅ 确保数据格式与后端返回格式兼容
  15. - ✅ 支持新旧两种数据格式
  16. ### 4. 3D显示组件 (`src/views/choujiang/lottery/Lottery3D.vue`)
  17. - ✅ 修改 `changeCard` 函数,适配新的数据格式
  18. - ✅ 支持显示 `jwcode``username` 字段
  19. - ✅ 保持向后兼容性
  20. ### 5. 主抽奖页面 (`src/views/choujiang/index.vue`)
  21. - ✅ 修改气泡提示逻辑,支持新的数据格式
  22. - ✅ 确保中奖用户信息正确显示
  23. ## 核心功能
  24. ### 1. 后端抽奖接口
  25. ```javascript
  26. // 请求参数
  27. {
  28. gradeName: "一等奖",
  29. prizeName: "iPhone 15",
  30. perWin: 5,
  31. round: 1
  32. }
  33. // 返回数据
  34. {
  35. data: [
  36. { jwcode: "5412", username: "猪八戒22" },
  37. { jwcode: "45125", username: "宝玉" }
  38. ]
  39. }
  40. ```
  41. ### 2. 错误处理机制
  42. - 后端请求失败时自动回退到前端随机抽奖
  43. - 确保抽奖功能不中断
  44. - 提供详细的错误日志
  45. ### 3. 数据格式兼容性
  46. - 支持新格式:`{ jwcode: "5412", username: "猪八戒22" }`
  47. - 支持旧格式:`["5412", "猪八戒22", "PSST"]`
  48. - 自动识别和适配不同格式
  49. ## 工作流程
  50. 1. **页面初始化** → 获取奖品列表和用户列表
  51. 2. **开始抽奖** → 用户点击抽奖按钮
  52. 3. **请求后端** → 发送抽奖请求,包含奖项信息和轮次
  53. 4. **获取结果** → 后端返回中奖用户列表
  54. 5. **显示动画** → 前端根据返回的中奖用户显示3D抽奖动画
  55. 6. **保存结果** → 将中奖用户保存到本地状态
  56. ## 测试建议
  57. 1. **正常流程测试**:验证完整的抽奖流程
  58. 2. **异常处理测试**:模拟后端接口异常
  59. 3. **数据格式测试**:验证新旧数据格式兼容性
  60. 4. **多轮抽奖测试**:验证轮次管理和奖品切换
  61. 5. **性能测试**:验证大量用户数据下的表现
  62. ## 部署注意事项
  63. 1. **后端接口**:确保实现 `/lottery/draw` 接口
  64. 2. **数据格式**:确保返回的数据格式符合要求
  65. 3. **错误处理**:建议后端提供详细的错误信息
  66. 4. **性能优化**:考虑大量并发抽奖请求的处理
  67. ## 后续优化建议
  68. 1. **缓存机制**:可以考虑缓存用户数据,减少重复请求
  69. 2. **实时更新**:可以考虑WebSocket实时更新中奖结果
  70. 3. **数据统计**:可以添加抽奖统计和分析功能
  71. 4. **界面优化**:可以根据实际需求优化3D动画效果
  72. ---
  73. **修改完成时间**:2024年12月19日
  74. **修改状态**:✅ 已完成
  75. **测试状态**:🔄 待测试