一、新增积分
用户签到、学习、参与互动问答、提交学习笔记等行为都可以产生积分,并基于积分形成排行榜。积分当月有效,月底清零。
由积分规则可知,获取积分的行为多种多样,而且每一种行为都有自己的独立业务。而这些行为产生的时候需要保存一条积分明细到数据库。
我们显然不能要求其它业务的开发者在开发时帮我们新增一条积分记录,这样会导致原有业务与积分业务耦合。
因此必须采用异步方式,将原有业务与积分业务解耦。如果有必要,甚至可以将积分业务抽离,作为独立微服务。
要实现服务之间的解耦,可以使用MQ,实现流程如下:
当完成某个业务新增积分后,用户积分发生变化,我们就发送MQ通知
在RabbitMQ中,结合不同的RoutingKey,发送消息到不同的队列中,然后我们编写不同的消息监听器,让不同的业务方监听不同的RoutingKey,并进行消费(积分的新增)。
二、查询积分
在个人中心,用户可以查看当天各种不同类型的已获得的积分和积分上限:
可以看到,页面需要的数据:
• 积分类型描述
• 今日已获取积分值
• 积分上限