评论

节能知识竞赛微信小程序复盘-累计连续签到设计和实现

节能知识竞赛微信小程序复盘-累计连续签到设计和实现

节能知识竞赛微信小程序复盘-累计连续签到设计和实现

近期由于太忙了,没时间整理,现在抽空复盘一下我前段时间承接的节能知识竞赛活动小程序。


一、程序功能

(一) 主要功能

1.每日答题:每日10道题目,每道题目限时15秒作答,参赛者每天可答题一次。

2.每日签到:设置7日登录奖励,参赛者每日登录活动界面进行签到,按照连续签到的天数可领取不同天数的节能币。

(二)辅助功能 

1.排行榜:从高到底显示每日用户排名。 

2.数据统计:活动结束后导出所有用户排名。 


二、问题难点

需求:用户登陆之后,连续签到7天之后,能领取到额外的奖励 。

难点:

  • 怎么用比较好方式去统计连续打卡天数
  • 怎么实现补卡功能以达到连续签到的效果
  • 怎么实现补签后连续天数的统计功能


前端实现思路:

这里可以用循环出来五天的数据,分三种状态:未签到的,已签到,待签到的三种情况。

1.进入页面获取初始数据(初始数据和后端协商,应该包括:是否可领取奖励的字段,总共签到的天数,是否完成连续签到,签到记录(是数组类型))

2.根据签到记录来处理 渲染设计图上的签到记录列表

如果记录的数组为空,未签到。用连续签到的总天数7-已签到的天数=未签到的天数

未签到几天,就循环向 数组中添加几天的初始数据。组成已签到的和未签到在一起的数组,渲染到界面

根据最后签到的时间和今天的时间相对比,判断今天是否已签到。再根据 签到记录中返回的数据记录中其属性time是否存在的,存在就添加新属性status==2,用于判断是哪种状态

部分逻辑代码:

            // 处理返回的数据
            handerResult(res) {
                res.record = JSON.parse(res.record || '[]');
                // status 代表签到状态 0待签  1签到 2 签到成功
                this.signInfo = res;
                // 还剩几天没签到
                let len = 7 - this.signInfo.record.length;


                if (len > 0) {
                    for (let i = 0; i < len; i++) {
                        this.signInfo.record.push({
                            face: '//img.xx.cn/FmiPRe4NWIKV-XDlvMLLtBqFTuUk'
                        });
                    }
                }
                let status = 0;
                let last_time = this.signInfo.last_time || 0;
                let now = moment().format('YYYY-MM-DD');
                let l_t = moment(last_time).format('YYYY-MM-DD');
                let today = now == l_t;


                this.signInfo.record.forEach((i, index) => {
                    if (i.time) {
                        i.status = 2;
                    } else {
                        if (today) {
                            i.status = 0;
                        } else {
                            i.status = 1;
                            today = true;
                        }
                    }
                });
                return this.signInfo;
            },


最后一次编辑于  2022-10-18  
点赞 0
收藏
评论
登录 后发表内容