1.需求分析
积分功能在我们大部分的系统中都可以使用,积分功能的存在,是为了激励用户更多的在网站上进行交互行为,以此来提高网站的访问量。
同时对于积分的设计我们一般要有一套规则,比如每日签到,或者每日点赞一定数量等等这些行为我们都可以为用户添加积分。同时当积分达到一定的数量时,我们可以为用户添加一个独特的称号作为鼓励,并且可以让用户消耗积分换取礼品,以这种奖品的方式对用户获取积分进行一个吸引,从而达到我们增加网站访问量这一目的,当然我们也应该对我们用户的每日获取积分数量做一个限制,避免有人恶意刷取积分。
2.数据库设计
根据我们的分析可以确定,数据库需要的字段有:本次得到的积分值、获取积分的方式、获取积分的时间、获取积分的人。
3.具体实现
积分可通过多个业务功能获得,每个业务获取积分都有不同的规则,并且每一种业务都有着独特的业务,我们显然不可以将积分功能与其他业务放到一起耦合,因此我们要采用异步的方式,将原有业务与积分业务分离,进行解耦。具体实现可以参考下图:
在新增时,我们要注意是否存在积分上限,当存在积分上限,我们要先查询今日获取的积分,查看是否超出上限,或没有,用当前积分加上本次获取的积分,判断是否超出上限,当没有超出上限时,直接保存,若超出上限,则保存上线数减去当前积分数量的积分,具体实现可以参考下图: