日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java签到程序设计_java redis 实现简单的用户签到功能

發布時間:2024/1/1 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java签到程序设计_java redis 实现简单的用户签到功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

業務需求是用戶每天只能簽到一次,而且簽到后用戶增加積分,所以把用戶每次簽到時放到redis 緩存里面,然后每天凌晨時再清除緩存,大概簡單思想是這樣的

直接看代碼吧如下

@Transactional

@Override

public void signIn(Integer memberId) throws BizException {

if(memberId==null){

throw new BizException(ErrorCode.BIZ_EXCEPTION.getErrcode(), "簽到用戶id 不能為null");

}

String day = DateFormatUtils.format(new Date(), "yyyyMMdd");

String key = "signin:"+day;

Boolean sismember = redisClient.sismember(key, memberId.toString());

if(sismember){

throw new BizException(ErrorCode.BIZ_EXCEPTION.getErrcode(), "今天已經簽到了");

}else{

redisClient.sadd(key, memberId.toString());

redisClient.expire(key, getRefreshTime());

addPointsRecord(memberId,IntegralType.SIGN_IN);//給用戶增加積分

}

}

獲取離凌晨 還有多久

/**

* 獲取當前時間離明天凌晨還有多少小時

* @return

*/

public static int getRefreshTime(){

Calendar calendar = Calendar.getInstance();

int now = (int) (calendar.getTimeInMillis()/1000);

calendar.add(Calendar.DATE, 1);

calendar.set(Calendar.SECOND, 0);

calendar.set(Calendar.MINUTE, 0);

calendar.set(Calendar.HOUR_OF_DAY , 0);

return (int) (calendar.getTimeInMillis()/1000-now);

}

Controller

/**

* 簽到

* @return

*/

@WeiXinLogin

@RequestMapping("/signIn")

public ResponseModel signIn(){

try {

Integer memberId = RequestContext.getContext().getUser().getMemberId();

memberApi.signIn(memberId);

return new ResponseModel();

} catch (BizException e) {

LOGGER.error("signIn error");

return new ResponseModel(e.getErrcode(), e.getErrm(), null);

}

}

以上就是java redis 實現簡單的用戶簽到功能的詳細內容,更多關于Java 實現用戶簽到功能的資料請關注自學編程網其它相關文章!

總結

以上是生活随笔為你收集整理的java签到程序设计_java redis 实现简单的用户签到功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。