zoukankan      html  css  js  c++  java
  • 签到模块

    一、签到模块效果图

    产品设计:

      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,?)
  • 相关阅读:
    Oracle(PLSQL)入门学习五
    visual studio 调试 不进断点 断点失效 提示当前不会命中该断点等问题解决
    java maven项目 导入jar包注意
    sql语句 like 条件查询
    sql语句 查询分组后的每组的第一条或最后一条数据
    文件上传的一些验证(文件类型)
    图片上传回显
    oracle数据库建表设置自增主键
    bootstrap时时提醒填入数据是否与数据库数据重复
    Oracle分析函数列表分享
  • 原文地址:https://www.cnblogs.com/brolanda/p/4519718.html
Copyright © 2011-2022 走看看