shfs的gravatar头像
shfs 2014-10-22 11:13:38

含有效期的后台积分算法问题,求好的计算思路

积分计算:
1、用户有好多条积分记录
2、每条积分记录包括 积分事件编号、积分值、录入时间。
3、根据积分事件编号可以得到该积分记录的有效期 amount(Long 1)unit(天、季度、年)
4、积分值可能是负的(消费积分,它的有效期就是永久(1000年),优先消费先过期的积分)
5、需要得到当天可用积分(未过期的) 已用积分(已消费) 已经过期(没有及时消费的过期积分)

注:不管8月1日何时获得,有效期1天就是到8月3日凌晨失效。(1季度可以看做90天,1年可以看做365天)

例如:

8月1日 +5 有效期3天

8月5日 +10 有效期6天

8月6日 +5 有效期6天

8月7日 -8 有效期永久(消费8分)

8月8日 +5 有效期2天

问:8月12日看的时候 可用积分 已用积分 失效积分  

求好的计算思路  可否消费也是根据这个的计算结果来判断的

所有回答列表(1)
kokosang的gravatar头像
kokosang  LV1 2014年11月4日

大概是这样的,木有拼接


//已用积分(已消费)
select sum(积分字段) from table where 积分字段<0 and 录入时间字段 < '2014-08-12'

//当天可用积分(未过期的)
select sum(积分字段)  from table 
where  DATE_ADD(录入时间字段,INTERVAL 有效期字段 DAY) >= '2014-08-12' and name>0

//已经过期(没有及时消费的过期积分)
select sum(积分字段)  from table 
where  DATE_ADD(录入时间字段,INTERVAL 有效期字段 DAY) < '2014-08-12' and name>0

 

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友