FastGPT实习:扫描二维码实现自动兑换积分
扫描二维码实现自动兑换积分的完整流程
需求分析:在 FastGPT 平台实现用户扫描二维码自动兑换积分功能
用户扫描包含兑换码信息的二维码,自动跳转到门户网站登录页,登录成功后,自动兑换兑换码,增加账号积分
实现用户无需手动输入兑换码,提升用户体验
需求分析
二维码的本质
二维码的本质是用二维图形存储二进制数据的信息载体
扫描一次二维码的本质是通过光学识别将图形转化为二进制数据,再解码出二维码中包含的数据,并执行
二维码需要包含的信息
- 重定向地址
- 兑换码
- 兑换码是否被使用
实现登录后自动兑换的方案
方案A:携带查询参数到登录页
扫描二维码后, 会重定向到登录页, 同时url中会携带兑换码信息作为查询参数
登录接口会接收查询参数中的兑换码信息, 并在登录成功后再传递给兑换接口
兑换接口在收到兑换码信息后执行, 即可兑换积分
方案B:使用本地存储
扫码跳转登录页后,将兑换码存储在本地存储
登录后检测本地存储,符合条件则执行兑换API,并删除存储
具体实现
技术选型
选择方案B
原因:
- 登录接口有多种, 微信登录, 账密登录等等, 选择方案A的话每个接口都需要修改
- 修改底层登录接口这种行为, 入侵性太强, 不适合
实现步骤
- 拼接门户网站URL和查询参数为一个重定向地址,用重定向地址生成二维码
- 跳转登录页后,检测URL查询参数包含兑换码,取出并存在本地存储
- 新写一个hook,挂载在layout文件中,实现登录成功后,从本地存储中取出兑换码,并执行兑换API,删除存储
优点
- 登录成功,进入页面后自动执行,同时不破坏代码原有的逻辑结构,未来还可以拓展
- 符合React的钩子设计哲学(声明式而不是命令式)
- 实现登录与兑换解耦
实现效果
用户扫描二维码后,整个兑换流程自动化完成,无需手动操作,大大提升了用户体验
优点
- 用户体验流畅,无需手动输入兑换码
- 代码侵入性小,不破坏原有架构
- 可扩展性强,未来可以支持更多功能
后续优化方向
- 增加兑换码的有效期验证
- 支持批量兑换码处理
- 添加兑换记录和日志功能
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Fish's Blog!