积分系统在项目中的设计

一、概述

        为了提高系统中用户的活跃度,我们可以考虑将用户的一些操作与积分的获取进行关联,比如点赞、评论、签到等,又或者是用户的充值消费,再为用户提供积分的使用途径或者是展示一个积分的排行榜,这样用户就会更加积极主动的去进行互动,这便是积分系统在项目中的作用,像积分、排行榜等功能在很多项目中都存在,因此这套方案适用性很广,可以给大家以后实现相关功能提供思路 。

二、设计思路

        要实现一个积分系统,我们首先要考虑的是要将用户的哪些操作与积分的获取挂钩,也就是对积分的获取规则进行制定,我们首先可以考虑签到操作,将签到与积分挂钩可以很好的提高用户登录的积极性,可以设置签到1天给1分,连续7天额外奖励10分,连续14天额外奖励20分 ,连续30天额外奖励40分,最后设置每月签到进度在下月第一天重置即可;还有就是评论加10分、点赞加5分等等,可以结合积分可以兑换的奖励进行灵活设计,同时要注意的是为每种积分获取方式设置每日获取上限,防止有人故意刷分使用。

        要保存积分信息,我们首选的实现方式就是使用MYSQL,我们只需要单独设置一张积分表,表中存放包括本次得到积分值、获取积分的方式、获取积分的时间、获取积分的人等字段,就可以满足保存积分记录的各项需求,最终设计出的建表语句如下:

        设计完表结构之后,我们只需要在那些可以获取到积分的操作代码后,追加一部分代码,即在判断此用户当日还可以通过此种方式获取积分的前提下,向积分表中插入一条数据,后续统计时只需要根据用户id从该表中查询即可。

        由积分规则可知,获取积分的行为多种多样,而且每一种行为都有自己的独立业务。而这些行为产生的时候需要保存一条积分明细到数据库。我们显然不能要求其它业务的开发者在开发时帮我们新增一条积分记录,这样会导致原有业务与积分业务耦合。因此必须采用异步方式,将原有业务与积分业务解耦。如果有必要,甚至可以将积分业务抽离,作为独立微服务。

        最终我们选用的方案是在用户各项操作完成之后,发送一条消息到MQ中,交换机会根基路由Key决定将该条消息转发到哪个队列中,最后设置监听器获取消息写入数据库即可,消息流程如下图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值