From 3fd1c135a7817010f17237263f4cc7793e783006 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期日, 08 十月 2023 11:22:18 +0800
Subject: [PATCH] 修改令牌管理接口:添加根据id或token设置令牌失效,根据id或token查询有效的令牌

---
 src/main/java/com/moon/server/mapper/sys/TokenMapper.java         |   10 +++
 src/main/java/com/moon/server/service/sys/LoginService.java       |    3 
 src/main/java/com/moon/server/controller/sys/TokenController.java |  114 ++++++++++++++++++++++++++++++-------
 src/main/java/com/moon/server/controller/all/SignController.java  |    2 
 src/main/java/com/moon/server/service/sys/TokenService.java       |   22 +++++--
 src/main/resources/mapper/sys/TokenMapper.xml                     |    6 ++
 6 files changed, 125 insertions(+), 32 deletions(-)

diff --git a/src/main/java/com/moon/server/controller/all/SignController.java b/src/main/java/com/moon/server/controller/all/SignController.java
index 9f4e9b5..08ec53b 100644
--- a/src/main/java/com/moon/server/controller/all/SignController.java
+++ b/src/main/java/com/moon/server/controller/all/SignController.java
@@ -177,7 +177,7 @@
         try {
             String token = WebHelper.getToken(req);
             if (StringHelper.isEmpty(token)) {
-                return fail("娌℃湁妫�娴嬪埌浠ょ墝", false);
+                return fail("娌℃湁妫�娴嬪埌浠ょ墝鎴栨棤鏁�", false);
             }
 
             Boolean flag = tokenService.logout(token, req, res);
diff --git a/src/main/java/com/moon/server/controller/sys/TokenController.java b/src/main/java/com/moon/server/controller/sys/TokenController.java
index f92b3de..6aa8bec 100644
--- a/src/main/java/com/moon/server/controller/sys/TokenController.java
+++ b/src/main/java/com/moon/server/controller/sys/TokenController.java
@@ -5,6 +5,7 @@
 import com.moon.server.entity.all.ResponseMsg;
 import com.moon.server.entity.sys.TokenEntity;
 import com.moon.server.entity.sys.UserEntity;
+import com.moon.server.helper.StringHelper;
 import com.moon.server.service.sys.TokenService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -76,29 +77,6 @@
     }
 
     @SysLog()
-    @ApiOperation(value = "鎻掑叆澶氭潯")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "list", value = "瀹炰綋绫婚泦鍚�", dataType = "List<TokenEntity>", paramType = "body", example = "")
-    })
-    @PostMapping(value = "/insertTokens", produces = "application/json; charset=UTF-8")
-    public ResponseMsg<Integer> insertTokens(@RequestBody List<TokenEntity> list, HttpServletRequest req) {
-        try {
-            UserEntity ue = tokenService.getCurrentUser(req);
-            if (ue != null) {
-                for (TokenEntity entity : list) {
-                    entity.setCreateUser(ue.getId());
-                }
-            }
-
-            int count = tokenService.insertTokens(list);
-
-            return success(count);
-        } catch (Exception ex) {
-            return fail(ex, -1);
-        }
-    }
-
-    @SysLog()
     @ApiOperation(value = "鍒犻櫎涓�鏉�")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "ID", dataType = "Integer", paramType = "query", example = "1")
@@ -155,6 +133,58 @@
     }
 
     @SysLog()
+    @ApiOperation(value = "鏍规嵁ID鏇存柊浠ょ墝涓哄け鏁�")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "浠ょ墝ID", dataType = "Integer", paramType = "query", example = "6563")
+    })
+    @GetMapping(value = "/updateExpireById")
+    public ResponseMsg<Integer> updateExpireById(Integer id, HttpServletRequest req) {
+        try {
+            if (null == id || id < 0) {
+                return fail("id鍙傛暟鏃犳晥", 0);
+            }
+            TokenEntity entity = tokenService.selectOneById(id);
+            if (null == entity) {
+                return fail("璇d涓嶅瓨鍦�", 0);
+            }
+
+            UserEntity ue = tokenService.getCurrentUser(req);
+            entity.setUpdateUser(ue.getId());
+            int count = tokenService.updateTokenExpire(entity);
+
+            return success(count);
+        } catch (Exception ex) {
+            return fail(ex, -1);
+        }
+    }
+
+    @SysLog()
+    @ApiOperation(value = "鏍规嵁Token鏇存柊浠ょ墝涓哄け鏁�")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "tk", value = "浠ょ墝", dataType = "String", paramType = "query", example = "2edea2a2-e307-4baa-992c-b477ce0566dd")
+    })
+    @GetMapping(value = "/updateExpireByToken")
+    public ResponseMsg<Integer> updateExpireByToken(String tk, HttpServletRequest req) {
+        try {
+            if (StringHelper.isEmpty(tk)) {
+                return fail("token鍙傛暟鏃犳晥", 0);
+            }
+            TokenEntity entity = tokenService.selectOneByToken(tk);
+            if (null == entity) {
+                return fail("璇oken涓嶅瓨鍦ㄦ垨宸插け鏁�", 0);
+            }
+
+            UserEntity ue = tokenService.getCurrentUser(req);
+            entity.setUpdateUser(ue.getId());
+            int count = tokenService.updateTokenExpire(entity);
+
+            return success(count);
+        } catch (Exception ex) {
+            return fail(ex, -1);
+        }
+    }
+
+    @SysLog()
     @ApiOperation(value = "鏍规嵁ID鏌ヨ")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "ID", dataType = "Integer", paramType = "query", example = "1658")
@@ -169,4 +199,42 @@
             return fail(ex, null);
         }
     }
+
+    @SysLog()
+    @ApiOperation(value = "鏍规嵁ID鏌ヨ(鏈夋晥鏈熷唴鐨�)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "ID", dataType = "Integer", paramType = "query", example = "6563")
+    })
+    @GetMapping(value = "/selectOneById")
+    public ResponseMsg<TokenEntity> selectOneById(Integer id) {
+        try {
+            if (null == id || id < 0) {
+                return fail("id鍙傛暟鏃犳晥", null);
+            }
+            TokenEntity tokenEntity = tokenService.selectOneById(id);
+
+            return success(tokenEntity);
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    @SysLog()
+    @ApiOperation(value = "鏍规嵁token鏌ヨ(鏈夋晥鏈熷唴鐨�)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "tk", value = "浠ょ墝", dataType = "String", paramType = "query", example = "2edea2a2-e307-4baa-992c-b477ce0566dd")
+    })
+    @GetMapping(value = "/selectOneByToken")
+    public ResponseMsg<TokenEntity> selectOneByToken(String tk) {
+        try {
+            if (StringHelper.isEmpty(tk)) {
+                return fail("token鍙傛暟鏃犳晥", null);
+            }
+            TokenEntity tokenEntity = tokenService.selectOneByToken(tk);
+
+            return success(tokenEntity);
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
 }
diff --git a/src/main/java/com/moon/server/mapper/sys/TokenMapper.java b/src/main/java/com/moon/server/mapper/sys/TokenMapper.java
index 69bc776..74657da 100644
--- a/src/main/java/com/moon/server/mapper/sys/TokenMapper.java
+++ b/src/main/java/com/moon/server/mapper/sys/TokenMapper.java
@@ -44,7 +44,15 @@
     public TokenEntity selectToken(int id);
 
     /**
-     * 鏍规嵁token鍊兼煡璇竴鏉¤褰�
+     * 鏍规嵁id鏌ヨ涓�鏉¤褰�
+     *
+     * @param id
+     * @return
+     */
+    public TokenEntity selectOneById(Integer id);
+
+    /**
+     * 鏍规嵁token鏌ヨ涓�鏉¤褰�
      *
      * @param token
      * @return
diff --git a/src/main/java/com/moon/server/service/sys/LoginService.java b/src/main/java/com/moon/server/service/sys/LoginService.java
index 176b98d..c0cfe73 100644
--- a/src/main/java/com/moon/server/service/sys/LoginService.java
+++ b/src/main/java/com/moon/server/service/sys/LoginService.java
@@ -87,10 +87,11 @@
 
     /**
      * 鐢ㄦ埛鐧诲綍鐘舵��
+     *
      * @return
      */
     @Override
-    public List<LoginEntity> selectLoginCounts(){
+    public List<LoginEntity> selectLoginCounts() {
         return loginMapper.selectLoginCounts();
     }
 }
diff --git a/src/main/java/com/moon/server/service/sys/TokenService.java b/src/main/java/com/moon/server/service/sys/TokenService.java
index 44cdf3d..99d6378 100644
--- a/src/main/java/com/moon/server/service/sys/TokenService.java
+++ b/src/main/java/com/moon/server/service/sys/TokenService.java
@@ -58,6 +58,11 @@
     }
 
     @Override
+    public TokenEntity selectOneById(Integer id) {
+        return tokenMapper.selectOneById(id);
+    }
+
+    @Override
     public TokenEntity selectOneByToken(String token) {
         return tokenMapper.selectOneByToken(token);
     }
@@ -94,6 +99,7 @@
 
     @Override
     public Integer updateTokenExpire(TokenEntity tokenEntity) {
+        clearCache(tokenEntity.getToken());
         return tokenMapper.updateTokenExpire(tokenEntity);
     }
 
@@ -156,12 +162,6 @@
             return false;
         }
 
-        // 娓呴櫎缂撳瓨
-        String tokenKey = RedisCacheKey.signTokenKey(token);
-        redisService.delete(tokenKey);
-        String userKey = RedisCacheKey.signUserKey(te.getToken());
-        redisService.delete(userKey);
-
         // db锛岃缃护鐗岃繃鏈�
         te.setUpdateUser(ue.getId());
         Integer rows = updateTokenExpire(te);
@@ -177,6 +177,16 @@
     }
 
     /**
+     * 娓呴櫎缂撳瓨
+     */
+    public void clearCache(String token) {
+        String tokenKey = RedisCacheKey.signTokenKey(token);
+        redisService.delete(tokenKey);
+        String userKey = RedisCacheKey.signUserKey(token);
+        redisService.delete(userKey);
+    }
+
+    /**
      * 鏍规嵁浠ょ墝鑾峰彇瀹炰綋
      */
     public TokenEntity getEntityByToken(String token) {
diff --git a/src/main/resources/mapper/sys/TokenMapper.xml b/src/main/resources/mapper/sys/TokenMapper.xml
index 2a89c58..8de9510 100644
--- a/src/main/resources/mapper/sys/TokenMapper.xml
+++ b/src/main/resources/mapper/sys/TokenMapper.xml
@@ -47,6 +47,12 @@
         where id = #{id}
     </select>
 
+    <select id="selectOneById" resultType="com.moon.server.entity.sys.TokenEntity">
+        select a.*, fn_uname(create_user) createName, fn_uname(update_user) updateName
+        from lf.sys_token a
+        where id = #{id} and expire > now() limit 1
+    </select>
+
     <select id="selectOneByToken" resultType="com.moon.server.entity.sys.TokenEntity">
         select a.*, fn_uname(create_user) createName, fn_uname(update_user) updateName
         from lf.sys_token a

--
Gitblit v1.9.3