签到模块

一、签到模块效果图

产品设计:

  1、用户当日登录后,首先能够看到:当前“累计签到”的总次数及该次数在所有用户中的排名情况;当月已签到日期(蓝色)

  2、签到功能,签到后提示连续签到的天数,并提示已签到

二、签到模块数据库设计

  一张签到流水表,所有用户的每次签到都在该表中生成记录。

三、业务sql

1、用户登录后看到用户“累计签到”的总次数及该次数在所有用户中的排名情况;当月已签到日期(蓝色)

   1.0判断用户当日是否已签到

select count(1) 
from MIC_TD_EXERCISE_SIGNIN s where to_char(s.SIGN_TIME,'yyyy-mm-dd') = to_char(sysdate,'yyyy-mm-dd') and s.user_id = 4

   1.1获取用户累计签到的次数及排名

select userid,dense_rank() over(order by cou desc) 
from (select count(1) cou,s.USER_ID userid 
        from MIC_TD_EXERCISE_SIGNIN s
    group by s.USER_ID) tmp
where tmp.userid = ?

  注:oracle排序:

    不连续排序:rank()over(order by column)

    连续排序:dense_rank()over(order by column)

  1.2获取当月已签到的所有日期(仅需包含日即可)

select SIGN_TIME
from MIC_TD_EXERCISE_SIGNIN t
where to_char(t.sign_time,'MM')=?
and to_char(t.sign_time,'yyyy')=? and user_id=?

2、用户签到

  获取前一天的签到记录,如果没有,说明没有连续签到,此时sustain_day设置为1;如果有,获取前一天记录的sustain_day记录加一设置为新记录的sustain_day字段值。

select * 
from MIC_TD_EXERCISE_SIGNIN s where to_char(s.SIGN_TIME,'yyyy-MM-dd') = to_char(sysdate-1,'yyyy-MM-dd') and s.USER_ID = ?;

  插入数据

insert into MIC_TD_EXERCISE_SIGNIN values(?,?,sysdate,?)

 

转载于:https://www.cnblogs.com/brolanda/p/4519718.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值