求算法!加急!!!

ivan_070 2014-10-22 11:40:27
业务比较简单,用户可以做任务获得积分,然后用积分兑换礼物。
现在需要对积分做过期的控制,比如超过3个月仍然不使用的积分就过期。
用一个后台服务每天计算一次过期积分。
举例:
假设今天是10月1日,
用户在6月30日获得10个积分
用户在7月1日获得10个积分

如果用户没有使用过积分,那6月30日获得的10个积分就要过期。
如果用户花了15个积分,那6月30日的10个积分就不能过期,因为已经花掉了。

求各位给一个思路!
...全文
233 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
小nana 2014-10-24
  • 打赏
  • 举报
回复
引用 6 楼 ivan_070 的回复:
[quote=引用 3 楼 xiaoxiao0826 的回复:] 兑换积分默认从时间最早的开始,然后每天计算两个时间之间差,如果时间相差快到三个月,就提醒用户,即将到期,如果离三个月相差时间很多,就不需要提醒,时间差计算,找个现成的算法,在积分中可以添加一个字段,字段为可用和不可用,这样从数据库取值比较好
不好意思,我没明白什么意思。 能不能再解释清楚一些。 [/quote]在积分表中添加一个字段,可用和不可用,每次提取分数的时候只提取可用的,然后计算可用积分中最早的时间到现在的时间差
bw555 2014-10-22
  • 打赏
  • 举报
回复
当前积分减去近3个月获得的积分,如果大于0,将超出部分扣除即可
Defonds 2014-10-22
  • 打赏
  • 举报
回复
花的时候控制一下,从最早的扣起
  • 打赏
  • 举报
回复
这。。。。。。。。。
ivan_070 2014-10-22
  • 打赏
  • 举报
回复
引用 11 楼 bw555 的回复:
[quote=引用 5 楼 ivan_070 的回复:] [quote=引用 2 楼 bw555 的回复:] 当前积分减去近3个月获得的积分,如果大于0,将超出部分扣除即可
貌似逻辑很简单。问题是用户量比较大,而且过期的时间可能是3个月也可能是1年,每天都要遍历一次所有的数据,时间太长。 请问还有没有简单的办法。[/quote] 2#的方法基础上优化,利用前一天的汇总结果,进行计算的汇总 首次执行时,获取近3个月获取积分的总和,进行当天的处理,同时将汇总结果进行存储 之后每次执行,取出前一天的数据,加上今天获取积分,减去3个月前最后一天的积分,即为近3个月积分,进行当天处理并存储[/quote] 先直接计算了,等以后遇到性能问题再来优化。 谢谢了。
  • 打赏
  • 举报
回复
你所描述的积分是有实际价值的,所以遵从安全第一原则,用到积分的地方请务必实时计算。 计算方面可以直接给数据库,视图过程触发器,快速切安全。
bw555 2014-10-22
  • 打赏
  • 举报
回复
引用 5 楼 ivan_070 的回复:
[quote=引用 2 楼 bw555 的回复:] 当前积分减去近3个月获得的积分,如果大于0,将超出部分扣除即可
貌似逻辑很简单。问题是用户量比较大,而且过期的时间可能是3个月也可能是1年,每天都要遍历一次所有的数据,时间太长。 请问还有没有简单的办法。[/quote] 2#的方法基础上优化,利用前一天的汇总结果,进行计算的汇总 首次执行时,获取近3个月获取积分的总和,进行当天的处理,同时将汇总结果进行存储 之后每次执行,取出前一天的数据,加上今天获取积分,减去3个月前最后一天的积分,即为近3个月积分,进行当天处理并存储
verdiRequiem 2014-10-22
  • 打赏
  • 举报
回复
引用 8 楼 ivan_070 的回复:
[quote=引用 7 楼 verdiRequiem 的回复:] 不太明白, 尽然已经花掉了, 那为什么还要设置过期那~???
已经花掉的就不用过期了。[/quote] 积分单独相加, 每次获得的金币和日期每次做一个记录, 只做显示用, 当前日期 - 记录日期 > 设定天数的时候总积分减去记录日期所记录的金币.总积分 = 每次获得积分 - 消费积分没什么矛盾的嘛.
skgary 2014-10-22
  • 打赏
  • 举报
回复
引用 楼主 ivan_070 的回复:
业务比较简单,用户可以做任务获得积分,然后用积分兑换礼物。 现在需要对积分做过期的控制,比如超过3个月仍然不使用的积分就过期。 用一个后台服务每天计算一次过期积分。 举例: 假设今天是10月1日, 用户在6月30日获得10个积分 用户在7月1日获得10个积分 如果用户没有使用过积分,那6月30日获得的10个积分就要过期。 如果用户花了15个积分,那6月30日的10个积分就不能过期,因为已经花掉了。 求各位给一个思路!
建议换一个思路来实现,以自然月来做计算周期。6月1号的,最多可以到10月1过期,但6月31号的,也是10月1号过程 。 你可以用4个字段来计积分,分别对应于1,2,3,4//5, 6,7,8//9,10,11,12月,这样子,你做起来就简单了。每个月月初的时候,找到相应的月份,把积份清零。 总积分等于四个月积份的总和。
ivan_070 2014-10-22
  • 打赏
  • 举报
回复
引用 7 楼 verdiRequiem 的回复:
不太明白, 尽然已经花掉了, 那为什么还要设置过期那~???
已经花掉的就不用过期了。
verdiRequiem 2014-10-22
  • 打赏
  • 举报
回复
不太明白, 尽然已经花掉了, 那为什么还要设置过期那~???
ivan_070 2014-10-22
  • 打赏
  • 举报
回复
引用 3 楼 xiaoxiao0826 的回复:
兑换积分默认从时间最早的开始,然后每天计算两个时间之间差,如果时间相差快到三个月,就提醒用户,即将到期,如果离三个月相差时间很多,就不需要提醒,时间差计算,找个现成的算法,在积分中可以添加一个字段,字段为可用和不可用,这样从数据库取值比较好
不好意思,我没明白什么意思。 能不能再解释清楚一些。
ivan_070 2014-10-22
  • 打赏
  • 举报
回复
引用 2 楼 bw555 的回复:
当前积分减去近3个月获得的积分,如果大于0,将超出部分扣除即可
貌似逻辑很简单。问题是用户量比较大,而且过期的时间可能是3个月也可能是1年,每天都要遍历一次所有的数据,时间太长。 请问还有没有简单的办法。
ivan_070 2014-10-22
  • 打赏
  • 举报
回复
引用 1 楼 defonds 的回复:
花的时候控制一下,从最早的扣起
我是这么想,但是这意味着用户操作的时候需要频分读写数据库。 想看看还有没有简单的办法。
小nana 2014-10-22
  • 打赏
  • 举报
回复
兑换积分默认从时间最早的开始,然后每天计算两个时间之间差,如果时间相差快到三个月,就提醒用户,即将到期,如果离三个月相差时间很多,就不需要提醒,时间差计算,找个现成的算法,在积分中可以添加一个字段,字段为可用和不可用,这样从数据库取值比较好
单城市生活分类信息系统是邳州天目网络科技公司开发的一款地方性的模块。基于天目MVC网站管理系统 T2.0或天目MVC网站管理系统Home版,请自行搜索下载。如果您的PHP版本>=8.0,核心板框架必须>=2.12 功能类似于58同城,百姓网,可用于本地二手、租房、兼职工作等信息的发布。 程序支持微信公众号、小程序、APP.用户可免登陆发布或管理信息(需要后台开启)。 可设置增值服务:  人民币功能:置顶,加急,预约刷新  积分功能:标题加红,标题加粗 可后台设置,每天每条信息的免费刷新次数 程序有触发审核此设置,只要设置了该项功能。凡是触发的词都会转到人工审核 分类/栏目功能:  可设置一级伪静态目录,后期会支持域名绑定  可绑定搜索字段  可设置SEO标题,SEO关键字,SEO描述。方便优化  可自行设置列表模板,内容模板输出  可单独设置增值服务人民币功能  可设置发布权限  可单独设置触发审核词 安装方法: 如果你是全新安装,只要把本模块复制到APP/PLUGIN目录下。然后在安装时勾选本模块即可,如果你是后期安装,把本模块复制到APP/PLUGIN目录下,然后后台-》模块管理-》未安装模块。按需安装即可 天目MVC网站管理系统 T2.0或天目MVC网站管理系统Home版是一款优秀的软件,可卸载式安装、管理方便。使用mvc架构极易二次开发,整合钩子,后期会有碎片化可视管理插件。如果你有什么功能上的建议,请联系我们。 此版本功能限制: 免费版本无任何限制。可以允许企业和个人免费商用。 功能更新: 支持PHP8.0版本 修复一些BUG 优化算法

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧