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

抽奖逻辑修改完成总结

修改完成情况

已完成所有必要的修改

修改文件清单

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 函数,适配新的数据格式
  • 支持显示 jwcodeusername 字段
  • 保持向后兼容性

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"]
  • 自动识别和适配不同格式

工作流程

  1. 页面初始化 → 获取奖品列表和用户列表
  2. 开始抽奖 → 用户点击抽奖按钮
  3. 请求后端 → 发送抽奖请求,包含奖项信息和轮次
  4. 获取结果 → 后端返回中奖用户列表
  5. 显示动画 → 前端根据返回的中奖用户显示3D抽奖动画
  6. 保存结果 → 将中奖用户保存到本地状态

测试建议

  1. 正常流程测试:验证完整的抽奖流程
  2. 异常处理测试:模拟后端接口异常
  3. 数据格式测试:验证新旧数据格式兼容性
  4. 多轮抽奖测试:验证轮次管理和奖品切换
  5. 性能测试:验证大量用户数据下的表现

部署注意事项

  1. 后端接口:确保实现 /lottery/draw 接口
  2. 数据格式:确保返回的数据格式符合要求
  3. 错误处理:建议后端提供详细的错误信息
  4. 性能优化:考虑大量并发抽奖请求的处理

后续优化建议

  1. 缓存机制:可以考虑缓存用户数据,减少重复请求
  2. 实时更新:可以考虑WebSocket实时更新中奖结果
  3. 数据统计:可以添加抽奖统计和分析功能
  4. 界面优化:可以根据实际需求优化3D动画效果

修改完成时间:2024年12月19日
修改状态 已完成
测试状态🔄 待测试