From 74c698fb0f094d7d322cfe6a218cf7c86e82a43f Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期五, 30 九月 2022 11:26:18 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/service/data/TokenService.java |   48 ++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 42 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/lf/server/service/data/TokenService.java b/src/main/java/com/lf/server/service/data/TokenService.java
index 2800557..a186211 100644
--- a/src/main/java/com/lf/server/service/data/TokenService.java
+++ b/src/main/java/com/lf/server/service/data/TokenService.java
@@ -29,6 +29,9 @@
     @Autowired
     TokenMapper tokenMapper;
 
+    @Autowired
+    UsersService usersService;
+
     @Override
     public Integer selectCount(String token) {
         return tokenMapper.selectCount(token);
@@ -70,6 +73,11 @@
     }
 
     @Override
+    public TokenEntity selectOneByToken(String token) {
+        return tokenMapper.selectOneByToken(token);
+    }
+
+    @Override
     public List<TokenEntity> selectTokenAll() {
         return tokenMapper.selectTokenAll();
     }
@@ -97,7 +105,7 @@
     }
 
     /**
-     * 鏄惁鐧诲綍
+     * 鏄�/鍚︾櫥褰�
      *
      * @param req
      * @param res
@@ -110,7 +118,15 @@
         }
 
         // redis
-        if (redisService.hasKey(RedisCacheKey.signTokenKey(token))) {
+        String tokenKey = RedisCacheKey.signTokenKey(token);
+        if (redisService.hasKey(tokenKey)) {
+            return true;
+        }
+
+        // db
+        TokenEntity te = selectOneByToken(token);
+        if (te != null) {
+            redisService.put(tokenKey, te, te.getDuration(), TimeUnit.MINUTES);
             return true;
         }
 
@@ -128,13 +144,21 @@
             return null;
         }
 
-        String key = RedisCacheKey.signTokenKey(token);
-        Object obj = redisService.get(key);
+        String tokenKey = RedisCacheKey.signTokenKey(token);
+
+        // redis
+        Object obj = redisService.get(tokenKey);
         if (obj != null && obj instanceof TokenEntity) {
             return (TokenEntity) obj;
         }
 
-        return null;
+        // db
+        TokenEntity te = selectOneByToken(token);
+        if (te != null) {
+            redisService.put(tokenKey, te, te.getDuration(), TimeUnit.MINUTES);
+        }
+
+        return te;
     }
 
     /**
@@ -158,6 +182,7 @@
 
     /**
      * 鑾峰彇褰撳墠鐢ㄦ埛
+     *
      * @param req
      * @return
      */
@@ -168,11 +193,22 @@
         }
 
         String userKey = RedisCacheKey.signUserKey(token);
+
+        // redis
         Object obj = redisService.get(userKey);
         if (obj != null && obj instanceof UsersEntity) {
             return (UsersEntity) obj;
         }
 
-        return null;
+        // db
+        UsersEntity ue = usersService.selectByToken(token);
+        if (ue != null) {
+            TokenEntity te = getEntityByToken(token);
+            if (te != null) {
+                redisService.put(userKey, ue, te.getDuration(), TimeUnit.MINUTES);
+            }
+        }
+
+        return ue;
     }
 }

--
Gitblit v1.9.3