Java 實現簡單的簽到領金幣功能

Java實現簡單的簽到領金幣功能

簡介

現在很多APP上都會有簽到的功能,簽到領金幣或者領積分等等。最近也正好遇到了一個這樣的業務,並且規則是連續簽到每天的金幣不一樣,要是斷了,再簽到的話重新從第一天金幣數開始。並且有個補籤功能,一星期只能補籤一次,假如中斷了兩天,補了第二個補籤那天,而後面是有連續簽到記錄的,則金幣爲一週期內第一天的金幣數補上,如果補了中斷兩天裏的第一天,那就按一週期裏那是第幾天的金幣加。

思路

既然這樣,解決方案就需要兩張表,一張是數據字典表,告訴我七天裏每天的金幣數是多少;另一張是用戶簽到表;而前端傳參的話需要兩個參數,一個是補籤天數,如果是補籤就傳補籤當天的時間參數;另一個參數是當前週期七天裏的第幾天。然後每點擊簽到一次,在簽到表裏新增一條記錄,並且保存狀態是否補籤,根據傳參的天數用代碼判斷前一天是否有簽到記錄。

如果前一天有簽到記錄,計算出前面簽了幾天,那今天就是該領這個天數金幣;如果前面沒有簽到記錄,那就是第一天的金幣數,就正好符合了需求:正常簽到,根據天數領取相應金幣;補籤規則如果12345五天,23中斷了,145簽到了,假設補簽了3,那就領取1的金幣數,假設補簽了2,因1已經簽過,領取2的金幣數

代碼

有了以上的解決思路,那就上代碼,先看數據字典表
數據字典
順序依次是:主鍵,金幣數,描述,用來查詢條件的value,根據這個value獲取金幣數

簽到表就不貼圖了,設計公司業務,大致的字段就是:主鍵,簽到用戶,簽到時間,簽到狀態(是否補籤)

上重點,貼代碼
在這裏插入圖片描述
解說一下,代碼很簡單,這是個Service方法,再Controller層已經做了今天是否簽到過的判斷,如果簽到過進不來這個方法的。

這個定義了一個status,用來判斷前端是否傳入了時間參數,上面說到,要是傳了就是補籤,補籤狀態是1,正常是2,正常的話取當天時間存入簽到表,不然就是傳入的時間存入。重點在於循環,根據前端傳入的週期裏的某一天作爲循環次數,再根據傳入的時間或者當前時間以及用戶ID去簽到表裏查記錄,並且是查詢過一次之後時間設置爲前一天,連續簽到數 + 1來計算出前面簽到過多少天。這樣的話天數已經拿到了,就可以把天數傳入數據字典表裏value進行查詢金幣,然後更新用戶賬戶金幣數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章