ホームページ  >  に質問  >  本文

javascript - 签到与连续签到

没有做过连续签到
求一个签到与连续签到的 逻辑

PHP中文网PHP中文网2772日前1138

全員に返信(6)返信します

  • 巴扎黑

    巴扎黑2017-04-11 10:36:57

    如果每次签到都存一条记录,那么这张表一定非常巨大。

    看看现在各方推出的签到和连续签到功能,基本上都是以月为单位,也有部分是在活动周期为单位,这样有一个好处——只需要用一个字段保存整月的签到情况就好,不需要拆成30条记录——因为不需要按签到的日期去查有哪些人,所以不需要精确记录每一天的签到用于查询。因为只需要在打开这个人的页面的时候显示他哪些天签到了,从一个字段里一次性读出来所有签到数据,前端显示即可。

    为了便于查询签到天数和连续签到天数,可以分别用一个字段来保存。签到的时候直接根据当前签到记录很容易算出来这两个数据。有了这两个数据字段,要查询符合条件的用户也就是一个SQL的事情。

    道理差不多就是这些了,自己想想试试吧。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-11 10:36:57

    刚好整理了一份签到数据统计的项目SQL语句。

    比如:
    1.统计每天的每小时用户签到情况?
    2.统计每天的用户签到数据和每天的增量数据?
    3.统计签到天数相同的用户数量?
    4.统计每个用户的连续签到时间?
    5.数据表如何设计?

    文章地址:Mysql 常用SQL语句集锦

    在文章的后半部分!

    返事
    0
  • PHP中文网

    PHP中文网2017-04-11 10:36:57

    如果只是连续签到的话可以考虑建一张表记录

     连续签到天数 上次签到时间 
    

    每次签到时根据上次签到时间判断是否连续,也可以加月份的判断

    返事
    0
  • PHP中文网

    PHP中文网2017-04-11 10:36:57

    首先从设计数据库开始,
    签到表应该有用户id,签到类型,签到积分,连续签到数,签到时间等字段。给签到时间字段加索引。
    用户点击签到后,你可以从数据库中按照时间降序,获取该用户最新的一条签到数据,首先这一条数据判断当天他是否已经签过到了,如果判断他当天已经签到了,那么不允许他再次签到,如果没有签过到,那么在判断是否是昨天的签到数据,如果是昨天的签到数据的话,我在插入新的数据时,连续签到数字段的值为昨天连续签到数+1,否则连续签到数为1插入到数据库中。

    对于显示连续签到数的时候呢,我们同样获取用户的最新一天签到记录,如果这天数据不是今天或者昨天的签到数据的话,我们现实连续签到0天,如果是今天或则昨天的签到数据的话就显示连续签到数字段的值。

    最后我没有做过签到功能,这些都是我自己的想法。如果有误还望大神们指点指点我,本菜鸟一名。大神求带。哈哈哈

    返事
    0
  • PHP中文网

    PHP中文网2017-04-11 10:36:57

    主要看你项目对签到和连续签到的要求
    针对这个签到和连续签到的问题,我觉得从两个方面去处理
    1、把每日签到,记录到数据库,考虑到量大的问题,可以分表兼容,因为这个都是简单的业务逻辑,不会链表操作,根据uid来分表就可以,这个可以实现签到和连续签到的查询
    2、使用redis计数实现连续签到;当用户签到的时间和当月天数时间一致的话,就是连续签到。在每个月1好,就可以重置数据

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-11 10:36:57

    redis 的bitmap 参考一下

    返事
    0
  • キャンセル返事