文章置顶收费功能?过期时间如何处理?

问题描述

项目今天增加了一个置顶收费功能,设计思路是这样的

  1. 发布文章时,添加一个置顶按钮,如果用户选择 然后发布成功会跳转到支付页让用户选择置顶时间和支付金额
  2. 在文章表中添加了两个字段 一个置顶位置(目前只有首页,后期扩展性才多加了这个字段) 一个是置顶结束时间
  3. 置顶订单表

文章排序是按 是否置顶 置顶结束时间 文章发布时间 排序

现在遇到一个置顶到期如何处理?

我想到的是做定时任务,读取所有置顶文章检查是否有到期的 如果有 就清空文章的置顶位置和置顶结束时间的这两个字段? 如果数据量大了 怎么处理?

不知道各位大神们有什么好的方案? 像58同城类的信息置顶是如何实现的?

阅读 481
评论
    3 个回答

    不用跑定时任务,只需要每次页面加载时,才判断置顶任务列表中,有哪些是正在进行的(当前时间大于等于任务开始时间,且小于结束时间),把这些置顶任务展示出来就行了。如果需要的话,同时也把置顶已结束的任务从表中提取出来放到已结束的列表中。

    用户每次刷新页面,你这里都会拿当前时间重新判断,无需定时任务

      谢邀。
      大致是这样:
      select id, if(置顶时间 > 当前时间, 1, 0) as 置顶状态 from 文章表 order by 置顶状态 desc;

        通过sql来判断是否过期就可以。如果非要有点技术性,可以将每个付费放到redis内,设置过期时间,每次查询redis key是否存在,其实与sql直接查询没有区别,具体sql参考 上官大佬的回复即可

          撰写回答

          登录后参与交流、获取后续更新提醒

          相似问题
          推荐文章