簽到模組的簡單設計思路

2022-01-26 06:16:03 字數 1390 閱讀 8675

什麼是簽到功能?

為什麼要做簽到功能?

簽到規則

設計思路

七天累計簽到

按月累計簽到

借助redis

總結參考

toc和上班打卡一樣,使用者每天可以在應用內進行一次「簽到」,用來表明使用者今天已經登入且使用了該應用,同時簽到後很能獲取一定的獎勵。

以上2中的簽到方式中,可以考慮增加簽到提醒功能,特別是需要連續簽到,目的是培養使用者養成簽到習慣,減少漏簽的意外。當使用者當天忘記簽到時進行訊息推送的提醒。

我們以實際應用中的案例為例。

這裡我們其實只需要一張【簽到表】即可,裡面包括6個必要的字段(id,使用者id,簽到情況,起始簽到日期,上一次簽到日期,簽到次數),其中:

簽到步驟:

上一次簽到日期 如果等於 當前日期 那麼返回已簽到。

日期間隔 = 當前日期 - 起始簽到日期。

日期間隔 >= 7天,那麼就需要重新開始簽到,起始簽到日期 = 當前日期。

日期間隔 < 7天,可以簽到,將【簽到情況】中下標為日期間隔的值設為1,簽到次數累加。

上一次簽到日期 = 當前日期

簽到操作:

上一次簽到日期 如果等於 當前日期 那麼返回已簽到。

上一次簽到日期不在當前月份,重新開始計算。

日期間隔 = 當前日期 - 1。

將【簽到情況】中下標為日期間隔的值設為1,簽到次數累加。

上一次簽到日期 = 當前日期

至於補簽操作:

判斷是否有補簽卡。

補簽次數+1,累計次數+1,補簽卡數-1

基於redis的bitmap,我們可以快捷高效的儲存【簽到情況】。

redis給bitmap資料結構提供了三個方法

bitcount key [start] [end]

計算給定字串中,被設定為 1 的位元位的數量。

getbit key offset

對 key 所儲存的字串值,獲取指定偏移量上的位(bit)。

setbit key offset value

對 key 所儲存的字串值,設定或清除指定偏移量上的位(bit)。

具體就不展開介紹了,有興趣的同學可以看看redis官方文件。

至此,我們基於一張簽到表設計了乙個簡單的簽到模組,在實際場景中,我們還需要根據業務需求進一步設計,例如簽到日誌,簽到配置,獎勵設定等等。更進一步的,還可以提煉出一套高度自定義的簽到服務,提供外部接入。

模組簡單設計 設計簡單的賬號系統

下面考慮 乙個簡化版使用者賬戶系統,從註冊,登入,使用,登出四個方面做個簡單的設計 account表包含下面三個字段 id 乙個表唯一的id,標識使用者 user 使用者名稱 passwd 使用者密碼 為了防止資料庫被侵入洩露密碼,需要如md5 passwd 或者crypt單向加密 1,使用者註冊 ...

簡單設計模式

簡單工廠模式屬於類的建立型模式,又叫做靜態工廠方法模式。通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。1.工廠 creator 角色 簡單工廠模式的核心,它負責實現建立所有例項的內部邏輯。工廠類可以被外界直接呼叫,建立所需的產品物件。2.抽象 product 角色 簡單...

簡單設計類

package com.qidai 1 假如我們在開發乙個系統時需要對員工進行建模,員工包含 3 個屬性 姓名 工號以及工資。經理也是員工,除了含有員工的屬性外,另為還有乙個獎金屬性。請使用繼承的思想設計出員工類和經理類。要求類中提供必要的方法進行屬性訪問。員工類 public class test...