1. 背景
在2020年春节前夕,项目组规划了一个微信小程序。该项目是一个红包抽奖活动,用户通过完成小程序中的任务获取抽奖次数,然后选择自己喜欢款式的红包进行抽奖,再根据抽奖情况发放奖品。该项目在开发过程中遇到了一些技术问题,在此对其中较复杂的问题进行复盘总结。
2. 功能点
该图大致列出了项目包含的几个主要的功能点,以及功能点之间的相关逻辑
主流程为:用户进入微信小程序后,获取配置页的奖品数据,关注公众号后获取抽奖次数前往抽奖界面进行抽奖。
3. 技术点
3.1 数据库设计
项目使用redis
对数据进行存储,为加快开发进度,未设计锁来解决并发读写造成的数据异常。为尽量减少该问题带来的影响,本项目通过设计数据库的表结构来进行规避。
数据整体分三层:
- 奖池:集合了所有的奖品数据
- 专题:拥有独立属性,并集合了该专题下的所有红包数据
- 红包:拥有独立属性,并存储了该红包的所有可用链接
// 奖池
"Prize-Pool": {
{
// 专题列表
"themeList": [
"b29369b5-e475-4bc3-9ce1-ddfd93486301",
"b29369b5-e475-4bc3-9ce1-ddfd93486302"
],
"otherData": {
"xxx": "xxx"
}
}
}
// 专题(Theme + 专题key)
"Theme-b29369b5-e475-4bc3-9ce1-ddfd93486301": {
// 红包列