From 5f3cf501f9f6c216df17ee8af6618b55b537d21a Mon Sep 17 00:00:00 2001
From: yanghui <2536613402@qq.com>
Date: 星期五, 21 十月 2022 16:57:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/huacheng_test' into local_20221014

---
 flower_city/src/main/java/com/dg/core/manager/RedisTokenManager.java |   63 ++++++++++++++++++++++++++++---
 1 files changed, 56 insertions(+), 7 deletions(-)

diff --git a/flower_city/src/main/java/com/dg/core/manager/RedisTokenManager.java b/flower_city/src/main/java/com/dg/core/manager/RedisTokenManager.java
index fd6a87c..e5e39ef 100644
--- a/flower_city/src/main/java/com/dg/core/manager/RedisTokenManager.java
+++ b/flower_city/src/main/java/com/dg/core/manager/RedisTokenManager.java
@@ -1,12 +1,15 @@
 package com.dg.core.manager;
 
 import com.dg.core.Constant;
+import io.jsonwebtoken.Claims;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.core.script.DigestUtils;
 import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
 import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
 
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
@@ -15,8 +18,8 @@
  * 通过Redis存储和验证token的实现类
  */
 @Component
-public class RedisTokenManager implements TokenManager {
-
+public class RedisTokenManager implements TokenManager
+{
     private RedisTemplate<String, String> redis;
 
     @Qualifier("redisTemplate")
@@ -28,7 +31,7 @@
     }
 
     @Override
-    public String createToken(long userId, long userRole) {
+    public String createToken(String userId, String userRole) {
         //使用uuid作为源token
         String uuid = UUID.randomUUID().toString().replace("-", "");
         String token = DigestUtils.sha1DigestAsHex(uuid + userId + "e23ktjsdf") + "-" + userRole;
@@ -38,9 +41,8 @@
         return token;
     }
 
-
     public boolean checkToken(String token) {
-        if (token == null) {
+        if (StringUtils.isEmpty(token)) {
             return false;
         }
         String userId = redis.boundValueOps(token).get();
@@ -49,6 +51,30 @@
         }
         //如果验证成功,说明此用户进行了一次有效操作,延长token的过期时间
         redis.boundValueOps(token).expire(Constant.TOKEN_EXPIRES_HOUR, TimeUnit.HOURS);
+        return true;
+    }
+
+
+    /**
+     * 验证花城token
+     * @param token
+     * @return
+     */
+    @Override
+    public boolean checkHCToken(String token) {
+        if (StringUtils.isEmpty(token)) {
+            return false;
+        }
+        // token解析
+        Claims claims = JWTTokenUtil.getClaimsFromToken(token);
+        if (ObjectUtils.isEmpty(claims)) {
+            return false;
+        }
+        String userId = claims.getSubject();
+        if (ObjectUtils.isEmpty(userId))
+        {
+            return false;
+        }
         return true;
     }
 
@@ -62,13 +88,36 @@
         return Long.parseLong(userId);
     }
 
+    /**
+     * 获取花城e+的 UserId
+     * @param token
+     * @return
+     */
+    @Override
+    public long getHCUserId(String token) {
+        if (token == null) {
+            return -1;
+        }
+        // token解析
+        Claims claims = JWTTokenUtil.getClaimsFromToken(token);
+        if (ObjectUtils.isEmpty(claims)) {
+            return -1;
+        }
+        String userId = claims.getSubject();
+        if (ObjectUtils.isEmpty(userId))
+        {
+            return -1;
+        }
+        return Long.parseLong(userId);
+    }
+
     public void deleteToken(String token) {
         redis.delete(token);
     }
 
     @Override
-    public String getTokenByUserId(long userId) {
-        return redis.boundValueOps(String.valueOf(userId)).get();
+    public String getTokenByUserId(String userId) {
+        return redis.boundValueOps(userId).get();
     }
 
 }

--
Gitblit v1.7.1