最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java redis 實現(xiàn)簡單的用戶簽到功能

 更新時間:2020年12月14日 11:46:34   作者:阿若蜜意  
這篇文章主要介紹了java redis 實現(xiàn)簡單的用戶簽到功能,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下

業(yè)務(wù)需求是用戶每天只能簽到一次,而且簽到后用戶增加積分,所以把用戶每次簽到時放到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(), "今天已經(jīng)簽到了");
  }else{
   redisClient.sadd(key, memberId.toString());
   redisClient.expire(key, getRefreshTime());
   addPointsRecord(memberId,IntegralType.SIGN_IN);//給用戶增加積分
  }
  
 }

獲取離凌晨 還有多久

/**
  * 獲取當(dāng)前時間離明天凌晨還有多少小時
  * @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 實現(xiàn)簡單的用戶簽到功能的詳細內(nèi)容,更多關(guān)于Java 實現(xiàn)用戶簽到功能的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot如何處理@KafkaListener消息

    SpringBoot如何處理@KafkaListener消息

    Spring通過KafkaMessageListenerContainer、ConcurrentMessageListenerContainer等組件實現(xiàn)Kafka消息的監(jiān)聽和處理,并通過@KafkaListener注解將業(yè)務(wù)邏輯與Kafka消費者連接起來,Spring?Boot自動配置Kafka相關(guān)組件,簡化了Kafka的使用
    2024-12-12
  • 一篇文章帶你從java字節(jié)碼層理解i++和++i

    一篇文章帶你從java字節(jié)碼層理解i++和++i

    這篇文章帶你從java字節(jié)碼層理解i++和++i,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • Jackson序列化丟失泛型的解決

    Jackson序列化丟失泛型的解決

    這篇文章主要介紹了Jackson序列化丟失泛型的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中Klass模型與類加載的詳細機制

    Java中Klass模型與類加載的詳細機制

    這篇文章主要介紹了Java中Klass模型與類加載的詳細機制,java語言是在jvm中運行而jvm是不認識java代碼的我們使用javac編譯的class文件jvm是不認識的 所以有一個類加載的動作 這個動作就是把class字節(jié)碼拼裝成一個klass類型,需要的朋友可以參考下
    2023-08-08
  • 詳解如何將Spring Boot應(yīng)用跑在Docker容器中

    詳解如何將Spring Boot應(yīng)用跑在Docker容器中

    這篇文章主要介紹了詳解如何將Spring Boot應(yīng)用跑在Docker容器中,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Spring MVC框架配置方法詳解

    Spring MVC框架配置方法詳解

    這篇文章主要為大家詳細介紹了Spring MVC框架的配置方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Mybatis配置映射文件中parameterType的用法講解

    Mybatis配置映射文件中parameterType的用法講解

    這篇文章主要介紹了Mybatis配置映射文件中parameterType的用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java使用Request獲取請求參數(shù)的通用方式詳解

    Java使用Request獲取請求參數(shù)的通用方式詳解

    這篇文章主要給大家介紹了關(guān)于Java使用Request獲取請求參數(shù)的通用方式,在Java后端開發(fā)中第一步就是獲取前端傳過來的請求參數(shù),文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • Spring MVC請求參數(shù)接收的全面總結(jié)教程

    Spring MVC請求參數(shù)接收的全面總結(jié)教程

    這篇文章主要給大家總結(jié)介紹了關(guān)于Spring MVC請求參數(shù)接收的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • Jsoup解析html實現(xiàn)招聘信息查詢功能

    Jsoup解析html實現(xiàn)招聘信息查詢功能

    這篇文章主要為大家詳細介紹了Jsoup解析html實現(xiàn)招聘信息查詢功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04

最新評論

临汾市| 监利县| 托克逊县| 普安县| 海晏县| 中方县| 伽师县| 开化县| 元阳县| 司法| 汤阴县| 威宁| 读书| 沙洋县| 临洮县| 聂荣县| 阿克苏市| 永仁县| 阿克陶县| 五河县| 曲阳县| 西乌珠穆沁旗| 尉氏县| 柳林县| 沈阳市| 普洱| 柳州市| 华安县| 乌兰浩特市| 遂平县| 望江县| 石阡县| 晋中市| 赫章县| 香河县| 登封市| 兴仁县| 金坛市| 崇阳县| 五指山市| 若羌县|