java 实现签到 数据库设计

前言:公司积分商城增加签到功能,如下:

每次签到+1分,连续签到7天,第7天多+1分。第8天+1,连续签到7天后,再多+1分。

若每个用户每天签到数据直接累计,数据库数据将成倍增加,故每个用户只维持一条签到数据。

判断是否是连续签到的话,根据continue_sign,连续签到最大值为6,第七天重置为0。

根据userId查询,判断是否是首次签到
select * from t_sign where user_id=’1111’;

若用户首次签到,直接插入数据,
insert into t_sign(id,user_id,mark,create_time,update_time,continue_sign,count) values (‘1’,’111’,’生日快乐’,’2018-09-10 10:20:41’,’2018-09-10 10:20:41’,1,1);

若非首次签到,每次签到更新签到时间(update_time字段)
update t_sign set update_time=’2018-09-10 10:20:41’ where id=’111’;

若不是第一次签到,还需判断签到时间是否间隔大于一天
若是连续签到,判断是否为连续七天签到,且将连续签到置为0。若不是连续签到,更新签到时间,将连续签到+1

public class Sign implements Serializable {
    private static final long serialVersionUID = 1L;
    //主键
    private String id;
    //用户id
    private String userId;
    //签到信息
    private String mark;
    //总签到数
    private int count;
    //七天连续签到
    private int continueSign;
    //创建时间
    private Date createTime;
    //更新时间
    private Date updateTime;
    //set/get方法
    ........
}

猜你喜欢

转载自blog.csdn.net/wfanking/article/details/82593249
今日推荐