簽到模塊


一、簽到模塊效果圖

產品設計:

  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,?)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM