论坛首页 Java企业应用论坛

关于积分的系统设计

浏览 6407 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2015-10-30  
需求是这样的:后台可以设置一系列的积分规则,比如用户注册在这段时间内送200积分,过段时间只送100积分,再过段时间可能就不送积分了,然后针对用户下单购买,也送一定的积分,想请教这样一个需求,从数据库设计到系统实现,分别该怎么设计呢?
我目前想的是:
1)数据库设计:数据库表包含:id,方法名,积分规则这三个字段,id是主键唯一标示,方法名是我拦截规则对应的标示,积分规则里面存放的是json格式数据,因为针对注册和下单的积分规则不一样,将不同的规则json格式化后存储,然后在不同的逻辑中解析判断;
2)系统实现:系统使用的是springmvc+mybatis,使用spring的aop对service进行拦截,根据拦截的service方法名取对应的规则解析,给予一定的积分

这里面还涉及到一个问题,针对积分规则的设置,我是单独放到了一个系统A中,而前台用户注册,购买等是在另外一个系统B中,为了提高效率,我可能会把积分规则放到缓存中,那这样的话,A中修改了积分规则,B中就要及时更新缓存中的数据,A、B通过接口进行交互?亦或者有没有更好的解决方案?
   发表时间:2015-10-30  
你已基本实现系统解耦
系统A负责积分规则管理
系统B负责拦截方法
缓存负责存储积分规则

可以打断A-B的接口交互,既然已经有缓存机制了,读取缓存的速度比接口交互快,让B直接读取缓存,并做错误判断,当A更新缓存时可能读取不到数据时,隔1秒再读取。
0 请登录后投票
   发表时间:2015-10-30  
superdemon 写道
你已基本实现系统解耦
系统A负责积分规则管理
系统B负责拦截方法
缓存负责存储积分规则

可以打断A-B的接口交互,既然已经有缓存机制了,读取缓存的速度比接口交互快,让B直接读取缓存,并做错误判断,当A更新缓存时可能读取不到数据时,隔1秒再读取。


在数据库表结构设计方面,你有什么好的想法么?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics