Przeglądaj źródła

1.引入 cn.reghao.jutil.auth 依赖提供的 JwtUtil
2.account-service 添加一个 AuthConverter 用于转换 JwtPayload 和 AccountAuthToken
3.使用 cn.reghao.jutil.tool.json.JsonConverter 替换原有的 cn.reghao.jutil.jdk.serializer.JsonConverter

reghao 6 miesięcy temu
rodzic
commit
6875f2d6ca
47 zmienionych plików z 140 dodań i 245 usunięć
  1. 6 21
      account/account-service/pom.xml
  2. 1 1
      account/account-service/src/main/java/cn/reghao/tnb/account/app/controller/AccountAuthController.java
  3. 4 4
      account/account-service/src/main/java/cn/reghao/tnb/account/app/security/form/AccountAuthToken.java
  4. 19 9
      account/account-service/src/main/java/cn/reghao/tnb/account/app/service/impl/AccountTokenServiceImpl.java
  5. 39 0
      account/account-service/src/main/java/cn/reghao/tnb/account/app/util/AuthConverter.java
  6. 0 131
      account/account-service/src/main/java/cn/reghao/tnb/account/app/util/JwtUtil.java
  7. 1 1
      account/account-service/src/main/java/cn/reghao/tnb/account/app/util/RabbitProducer.java
  8. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/data/spider/task/GetNewsIndexTask.java
  9. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/geo/service/ChartMapService.java
  10. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/mall/service/ProductService.java
  11. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/util/rabbit/MessageListeners.java
  12. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/util/rabbit/RabbitAppender.java
  13. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/rpc/AdminVideoServiceImpl.java
  14. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/service/AdminVodService.java
  15. 1 1
      content/content-service/src/test/java/cn/reghao/tnb/content/app/exam/service/ExamTest.java
  16. 1 1
      content/content-service/src/test/java/cn/reghao/tnb/content/app/geo/service/GeoTest.java
  17. 1 1
      content/content-service/src/test/java/cn/reghao/tnb/content/app/vod/service/VideoPostTest.java
  18. 6 0
      file/file-service/pom.xml
  19. 4 4
      file/file-service/src/main/java/cn/reghao/tnb/file/app/service/UserKeyService.java
  20. 1 1
      file/file-service/src/main/java/cn/reghao/tnb/file/app/service/UserNodeService.java
  21. 6 21
      gateway/pom.xml
  22. 1 1
      gateway/src/main/java/cn/reghao/tnb/gateway/admin/db/RedisRouteDefinitionRepository.java
  23. 1 1
      gateway/src/main/java/cn/reghao/tnb/gateway/log/RabbitProducer.java
  24. 17 17
      gateway/src/main/java/cn/reghao/tnb/gateway/token/GlobalTokenFilter.java
  25. 1 1
      message/message-service/src/main/java/cn/reghao/tnb/message/app/rabbit/RabbitListeners.java
  26. 1 1
      message/message-service/src/main/java/cn/reghao/tnb/message/app/rabbit/RabbitProducer.java
  27. 1 1
      message/message-service/src/main/java/cn/reghao/tnb/message/app/rabbit/c/RabbitProducers.java
  28. 1 1
      message/message-service/src/main/java/cn/reghao/tnb/message/app/rabbit/c/RpcListenerCallback.java
  29. 1 1
      message/message-service/src/main/java/cn/reghao/tnb/message/app/service/MessageConsumer.java
  30. 1 1
      message/message-service/src/main/java/cn/reghao/tnb/message/app/service/notifier/ding/DingNotify.java
  31. 1 1
      message/message-service/src/main/java/cn/reghao/tnb/message/app/soa/service/RouteService.java
  32. 1 1
      message/message-service/src/main/java/cn/reghao/tnb/message/app/soa/service/TnbZkService.java
  33. 1 1
      message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/chat/ChatConnection.java
  34. 1 1
      message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/chat/ChatHandler.java
  35. 1 1
      message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/chat/ChatService.java
  36. 1 1
      message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/device/DeviceHandler.java
  37. 1 1
      message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/device/DeviceService.java
  38. 1 1
      message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/media/MediaHandler.java
  39. 1 1
      message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/media/MediaService.java
  40. 1 1
      search/search-service/src/main/java/cn/reghao/tnb/search/app/log/NginxLogService.java
  41. 1 1
      search/search-service/src/main/java/cn/reghao/tnb/search/app/log/consumer/RabbitListeners.java
  42. 1 1
      search/search-service/src/main/java/cn/reghao/tnb/search/app/ws/WsSender.java
  43. 1 1
      search/search-service/src/main/java/cn/reghao/tnb/search/app/ws/handler/LogHandler.java
  44. 1 1
      search/search-service/src/test/java/NginxLogTest.java
  45. 1 1
      user/user-service/src/main/java/cn/reghao/tnb/user/app/controller/UserControllerHystrix.java
  46. 2 1
      user/user-service/src/main/java/cn/reghao/tnb/user/app/controller/UserRelationController.java
  47. 1 1
      user/user-service/src/main/java/cn/reghao/tnb/user/app/service/UserServiceHystrix.java

+ 6 - 21
account/account-service/pom.xml

@@ -17,6 +17,12 @@
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>cn.reghao.jutil</groupId>
+            <artifactId>auth</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
+
         <dependency>
             <groupId>cn.reghao.tnb</groupId>
             <artifactId>common</artifactId>
@@ -53,27 +59,6 @@
             <version>2.5.0.RELEASE</version>
         </dependency>
 
-        <dependency>
-            <groupId>javax.xml.bind</groupId>
-            <artifactId>jaxb-api</artifactId>
-            <version>2.3.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.xml.bind</groupId>
-            <artifactId>jaxb-impl</artifactId>
-            <version>2.3.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.xml.bind</groupId>
-            <artifactId>jaxb-core</artifactId>
-            <version>2.3.0</version>
-        </dependency>
-        <dependency>
-            <groupId>javax.activation</groupId>
-            <artifactId>activation</artifactId>
-            <version>1.1.1</version>
-        </dependency>
-
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-redis</artifactId>

+ 1 - 1
account/account-service/src/main/java/cn/reghao/tnb/account/app/controller/AccountAuthController.java

@@ -1,7 +1,7 @@
 package cn.reghao.tnb.account.app.controller;
 
 import cn.reghao.jutil.web.WebResult;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.account.app.model.vo.AccountToken;
 import cn.reghao.tnb.account.app.service.AccountTokenService;
 import com.google.gson.JsonObject;

+ 4 - 4
account/account-service/src/main/java/cn/reghao/tnb/account/app/security/form/AccountAuthToken.java

@@ -59,7 +59,7 @@ public class AccountAuthToken extends AbstractAuthenticationToken {
      * authentication token.
      *
      * @param authToken
-     * @param accountDetail
+     * @param userDetail
      */
     public AccountAuthToken(AccountAuthToken authToken, UserAccount userDetail) {
         super(userDetail.getAuthorities());
@@ -81,15 +81,15 @@ public class AccountAuthToken extends AbstractAuthenticationToken {
      * @return
      * @date 2023-02-17 17:42:27
      */
-    public AccountAuthToken(int plat, String loginId, int loginType, Object principal, List<GrantedAuthority> authorities) {
+    public AccountAuthToken(int plat, String loginId, int loginType, long userId, List<GrantedAuthority> authorities) {
         super(authorities);
         super.setAuthenticated(true);
         this.plat = plat;
         this.loginId = loginId;
         this.loginType = loginType;
         this.rememberMe = false;
-        this.userId = Long.parseLong((String) principal);
-        this.principal = principal;
+        this.userId = userId;
+        this.principal = userId;
         this.credentials = null;
     }
 

+ 19 - 9
account/account-service/src/main/java/cn/reghao/tnb/account/app/service/impl/AccountTokenServiceImpl.java

@@ -12,11 +12,13 @@ import cn.reghao.jutil.web.ServletUtil;
 import cn.reghao.tnb.account.app.model.vo.AccountToken;
 import cn.reghao.tnb.account.app.security.form.AccountAuthToken;
 import cn.reghao.tnb.account.app.service.PubkeyService;
-import cn.reghao.tnb.account.app.util.JwtUtil;
+import cn.reghao.tnb.account.app.util.AuthConverter;
+import cn.reghao.jutil.auth.JwtUtil;
 import cn.reghao.tnb.account.app.redis.RedisKeys;
-import cn.reghao.tnb.account.app.model.vo.RefreshPayload;
+import cn.reghao.jutil.auth.model.RefreshPayload;
 import cn.reghao.tnb.account.app.redis.ds.RedisString;
 import cn.reghao.tnb.account.app.redis.ds.RedisStringObject;
+import cn.reghao.jutil.auth.model.JwtPayload;
 import cn.reghao.tnb.common.util.ConstantId;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.autoconfigure.web.ServerProperties;
@@ -30,6 +32,7 @@ import org.springframework.stereotype.Service;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
 import java.security.interfaces.RSAPrivateKey;
 import java.security.interfaces.RSAPublicKey;
 import java.util.List;
@@ -77,15 +80,16 @@ public class AccountTokenServiceImpl implements AccountTokenService {
         long accessExpireIn = 1000L*3600*24*7;
         long accessExpireAt = System.currentTimeMillis() + accessExpireIn;
         String accessToken = "";
+        JwtPayload jwtPayload = AuthConverter.getJwtPayload(authToken);
         if (signKeyPrivate != null) {
-            accessToken = JwtUtil.createAccessToken(authToken, userId, accessExpireAt, signKeyPrivate);
+            accessToken = JwtUtil.createAccessToken(jwtPayload, accessExpireAt, signKeyPrivate);
         } else {
-            accessToken = JwtUtil.createAccessToken(authToken, userId, accessExpireAt, signKeyRandom);
+            accessToken = JwtUtil.createAccessToken(jwtPayload, accessExpireAt, signKeyRandom);
         }
 
         long refreshExpireIn = accessExpireIn*4;
         long refreshExpireAt = System.currentTimeMillis() + refreshExpireIn;
-        String refreshToken = JwtUtil.createRefreshToken(authToken, refreshExpireAt, signKeyRandom);
+        String refreshToken = JwtUtil.createRefreshToken(jwtPayload, refreshExpireAt, signKeyRandom);
 
         if (signKeyPrivate == null) {
             redisString.setWithTimeout(RedisKeys.getAccessSignKeyKey(accessToken), signKeyRandom, accessExpireIn);
@@ -99,6 +103,10 @@ public class AccountTokenServiceImpl implements AccountTokenService {
         return new AccountToken(accessToken, accessExpireAt, refreshToken, refreshExpireAt);
     }
 
+    private JwtPayload getJwtPayload(AccountAuthToken accountAuthToken, String signKey, PrivateKey privateKey) {
+        return null;
+    }
+
     public void refreshToken(long userId, String loginId) {
         log.info("令牌刷新尚未实现");
     }
@@ -292,15 +300,17 @@ public class AccountTokenServiceImpl implements AccountTokenService {
         String savedSignKey = redisString.get(RedisKeys.getJwtSignKey("pubkey"));
         RSAPublicKey rsaPublicKey = RsaCryptor.getRSAPublicKey(savedSignKey);
         try {
-            AccountAuthToken userAuthToken = JwtUtil.getAuthentication(token, rsaPublicKey);
-            if (userAuthToken != null) {
+            JwtPayload jwtPayload = JwtUtil.getJwtPayload(token, rsaPublicKey);
+            if (jwtPayload != null) {
+                AccountAuthToken userAuthToken = AuthConverter.getAccountAuthToken(jwtPayload);
                 long userId = userAuthToken.getUserId();
                 String loginId = userAuthToken.getLoginId();
                 String redisKey = RedisKeys.getAuthTokenKey(userId, loginId);
                 boolean online = redisOps.exists(redisKey);
                 return online ? userAuthToken : null;
             }
-        } catch (Exception ignore) {
+        } catch (Exception e) {
+            e.printStackTrace();
         }
 
         return null;
@@ -313,7 +323,7 @@ public class AccountTokenServiceImpl implements AccountTokenService {
             throw new Exception("refresh-token 已过期");
         }
 
-        RefreshPayload refreshPayload = JwtUtil.parseRefreshToken(refreshToken, signKey);
+        RefreshPayload refreshPayload = JwtUtil.getRefreshPayload(refreshToken, signKey);
         int plat = refreshPayload.getPlat();
         String loginId = refreshPayload.getLoginId();
         long userId = refreshPayload.getUserId();

+ 39 - 0
account/account-service/src/main/java/cn/reghao/tnb/account/app/util/AuthConverter.java

@@ -0,0 +1,39 @@
+package cn.reghao.tnb.account.app.util;
+
+import cn.reghao.tnb.account.app.security.form.AccountAuthToken;
+import cn.reghao.jutil.auth.model.JwtPayload;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.AuthorityUtils;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author reghao
+ * @date 2025-10-24 20:37:59
+ */
+public class AuthConverter {
+    public static JwtPayload getJwtPayload(AccountAuthToken accountAuthToken) {
+        int plat = accountAuthToken.getPlat();
+        String loginId = accountAuthToken.getLoginId();
+        long userId = accountAuthToken.getUserId();
+        int loginType = accountAuthToken.getLoginType();
+        String authorities = accountAuthToken.getAuthorities().stream()
+                .map(GrantedAuthority::getAuthority)
+                .collect(Collectors.toList())
+                .toString();
+        String jti = "";
+        return new JwtPayload(plat, loginId, userId, loginType, authorities, jti);
+    }
+
+    public static AccountAuthToken getAccountAuthToken(JwtPayload jwtPayload) {
+        Integer plat = jwtPayload.getPlat();
+        String loginId = jwtPayload.getLoginId();
+        long userId = jwtPayload.getUserId();
+        int loginType = jwtPayload.getLoginType();
+        String authoritiesStr = jwtPayload.getAuthorities();
+        String authoritiesStr0 = authoritiesStr.replace("[", "").replace("]", "");
+        List<GrantedAuthority> authorities = AuthorityUtils.commaSeparatedStringToAuthorityList(authoritiesStr0);
+        return new AccountAuthToken(plat, loginId, loginType, userId, authorities);
+    }
+}

+ 0 - 131
account/account-service/src/main/java/cn/reghao/tnb/account/app/util/JwtUtil.java

@@ -1,131 +0,0 @@
-package cn.reghao.tnb.account.app.util;
-
-import cn.reghao.tnb.account.app.model.vo.RefreshPayload;
-import cn.reghao.tnb.account.app.security.form.AccountAuthToken;
-import io.jsonwebtoken.Claims;
-import io.jsonwebtoken.Jwts;
-import io.jsonwebtoken.SignatureAlgorithm;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.AuthorityUtils;
-
-import java.security.interfaces.RSAPrivateKey;
-import java.security.interfaces.RSAPublicKey;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
-import java.util.stream.Collectors;
-
-/**
- * JWT 令牌
- *
- * @author reghao
- * @date 2019-11-17 23:10:58
- */
-public class JwtUtil {
-    public static final String JWT_PREFIX = "Bearer ";
-    public static final String AUTH_HEADER = "Authorization";
-
-    /**
-     * 生成一个 token
-     *
-     * @param
-     * @return
-     * @date 2019-11-21 下午4:39
-     */
-    public static String createAccessToken(AccountAuthToken authToken, long userId, long expireAt, String signKey) {
-        String jti = UUID.randomUUID().toString().replace("-", "");
-        return Jwts.builder()
-                .claim("plat", authToken.getPlat())
-                .claim("loginId", authToken.getLoginId())
-                .claim("loginType", authToken.getLoginType())
-                .claim("authorities", authToken.getAuthorities().stream()
-                        .map(GrantedAuthority::getAuthority)
-                        .collect(Collectors.toList())
-                        .toString())
-                .setSubject(userId+"")
-                .setExpiration(new Date(expireAt))
-                .signWith(SignatureAlgorithm.HS256, signKey)
-                .setId(jti)
-                .compact();
-    }
-
-    public static String createAccessToken(AccountAuthToken authToken, long userId, long expireAt, RSAPrivateKey privateKey) {
-        // 根据 org.springframework.security.oauth2.server.resource.authentication.JwtGrantedAuthoritiesConverter 中的 WELL_KNOWN_AUTHORITIES_CLAIM_NAMES 字段
-        // 将用户的 authorities 设置到 scope claim
-        // TODO authorities claim 待删除
-        String jti = UUID.randomUUID().toString().replace("-", "");
-        return Jwts.builder()
-                .claim("plat", authToken.getPlat())
-                .claim("loginId", authToken.getLoginId())
-                .claim("loginType", authToken.getLoginType())
-                .claim("scope", authToken.getAuthorities().stream()
-                        .map(GrantedAuthority::getAuthority)
-                        .collect(Collectors.toList()))
-                .claim("authorities", authToken.getAuthorities().stream()
-                        .map(GrantedAuthority::getAuthority)
-                        .collect(Collectors.toList())
-                        .toString())
-                .setSubject(userId+"")
-                .setExpiration(new Date(expireAt))
-                .signWith(SignatureAlgorithm.RS256, privateKey)
-                .setId(jti)
-                .compact();
-    }
-
-    /**
-     * 从 jwt token 中解析出已认证的 Authentication 对象
-     * 过期的 token 会抛出 ExpiredJwtException 异常
-     *
-     * @param
-     * @return
-     * @date 2023-02-17 17:36:34
-     */
-    public static AccountAuthToken getAuthentication(String token, RSAPublicKey signKey) {
-        Claims claims = Jwts.parser().setSigningKey(signKey).parseClaimsJws(token).getBody();
-        Integer plat = (Integer) claims.get("plat");
-        String loginId = (String) claims.get("loginId");
-        int loginType = (int) claims.get("loginType");
-        String userId = claims.getSubject();
-        // TODO userId 是系统分配且固定的,但需要检查用户的 roles 是否发生变化
-        String roles = (String) claims.get("authorities");
-        long expireAt = claims.getExpiration().getTime();
-        if (plat == null || loginId == null || userId == null || roles == null) {
-            return null;
-        }
-
-        List<GrantedAuthority> authorities = AuthorityUtils.commaSeparatedStringToAuthorityList(roles);
-        return new AccountAuthToken(plat, loginId, loginType, userId, authorities);
-    }
-
-    /**
-     * 创建刷新令牌
-     *
-     * @param
-     * @return
-     * @date 2023-02-17 15:20:33
-     */
-    public static String createRefreshToken(AccountAuthToken authToken, long expireAt, String signKey) {
-        return Jwts.builder()
-                .claim("plat", authToken.getPlat())
-                .claim("loginId", authToken.getLoginId())
-                .setSubject(String.valueOf(authToken.getUserId()))
-                .setExpiration(new Date(expireAt))
-                .signWith(SignatureAlgorithm.HS256, signKey)
-                .compact();
-    }
-
-    /**
-     * 解析刷新令牌
-     *
-     * @param
-     * @return
-     * @date 2023-02-17 15:22:54
-     */
-    public static RefreshPayload parseRefreshToken(String token, String signKey) {
-        Claims claims = Jwts.parser().setSigningKey(signKey).parseClaimsJws(token).getBody();
-        long userId = Long.parseLong(claims.getSubject());
-        int plat = (Integer) claims.get("plat");
-        String loginId = (String) claims.get("loginId");
-        return new RefreshPayload(userId, plat, loginId);
-    }
-}

+ 1 - 1
account/account-service/src/main/java/cn/reghao/tnb/account/app/util/RabbitProducer.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.account.app.util;
 
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.account.app.model.vo.RtmpPlay;
 import cn.reghao.tnb.message.api.dto.msg.LoginMessage;
 import cn.reghao.tnb.message.api.dto.msg.RtmpMessage;

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/data/spider/task/GetNewsIndexTask.java

@@ -3,7 +3,7 @@ package cn.reghao.tnb.content.app.data.spider.task;
 import cn.reghao.jutil.jdk.converter.DateTimeConverter;
 import cn.reghao.jutil.jdk.http.WebRequest;
 import cn.reghao.jutil.jdk.http.WebResponse;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.jutil.tool.id.SnowFlake;
 import cn.reghao.tnb.content.app.data.db.mongo.RichTextMongo;
 import cn.reghao.tnb.content.app.data.model.po.RichText;

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/geo/service/ChartMapService.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.content.app.geo.service;
 
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.jutil.jdk.text.TextFile;
 import cn.reghao.tnb.common.db.SelectOption;
 import cn.reghao.tnb.content.app.geo.db.mapper.CameraPhotoMapper;

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/mall/service/ProductService.java

@@ -3,7 +3,7 @@ package cn.reghao.tnb.content.app.mall.service;
 import cn.reghao.file.api.iface.OssService;
 import cn.reghao.jutil.jdk.db.PageList;
 import cn.reghao.jutil.jdk.result.Result;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.jutil.tool.id.SnowFlake;
 import cn.reghao.oss.api.dto.media.ImageInfo;
 import cn.reghao.tnb.account.api.iface.AccountQuery;

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/util/rabbit/MessageListeners.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.content.app.util.rabbit;
 
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.content.app.vod.service.VideoPlayService;
 import cn.reghao.tnb.message.api.dto.MediaProgress;
 import lombok.extern.slf4j.Slf4j;

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/util/rabbit/RabbitAppender.java

@@ -2,7 +2,7 @@ package cn.reghao.tnb.content.app.util.rabbit;
 
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.UnsynchronizedAppenderBase;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
 
 /**

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/rpc/AdminVideoServiceImpl.java

@@ -4,7 +4,7 @@ import cn.reghao.file.api.iface.OssService;
 import cn.reghao.jutil.jdk.db.Page;
 import cn.reghao.jutil.jdk.db.PageList;
 import cn.reghao.jutil.jdk.result.Result;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.common.db.GroupCount;
 import cn.reghao.tnb.content.api.dto.*;
 import cn.reghao.tnb.content.api.iface.AdminVideoService;

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/service/AdminVodService.java

@@ -4,7 +4,7 @@ import cn.reghao.file.api.dto.JobInfo;
 import cn.reghao.file.api.iface.FileService;
 import cn.reghao.file.api.iface.OssService;
 import cn.reghao.jutil.jdk.db.PageList;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.oss.api.dto.media.VideoUrlDto;
 import cn.reghao.tnb.content.api.constant.PostScope;
 import cn.reghao.tnb.content.api.dto.*;

+ 1 - 1
content/content-service/src/test/java/cn/reghao/tnb/content/app/exam/service/ExamTest.java

@@ -1,7 +1,7 @@
 package cn.reghao.tnb.content.app.exam.service;
 
 import cn.reghao.jutil.jdk.db.Page;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.jutil.jdk.text.TextFile;
 import cn.reghao.jutil.tool.id.SnowFlake;
 import cn.reghao.tnb.common.auth.UserContext;

+ 1 - 1
content/content-service/src/test/java/cn/reghao/tnb/content/app/geo/service/GeoTest.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.content.app.geo.service;
 
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.jutil.jdk.text.TextFile;
 //import cn.reghao.oss.sdk.OssConsoleClient;
 //import cn.reghao.oss.sdk.model.OssConsoleConfig;

+ 1 - 1
content/content-service/src/test/java/cn/reghao/tnb/content/app/vod/service/VideoPostTest.java

@@ -2,7 +2,7 @@ package cn.reghao.tnb.content.app.vod.service;
 
 import cn.reghao.jutil.jdk.converter.DateTimeConverter;
 import cn.reghao.jutil.jdk.db.PageList;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.jutil.jdk.text.TextFile;
 import cn.reghao.jutil.jdk.thread.ThreadPoolWrapper;
 import cn.reghao.tnb.content.api.constant.PostScope;

+ 6 - 0
file/file-service/pom.xml

@@ -18,6 +18,12 @@
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>cn.reghao.jutil</groupId>
+            <artifactId>auth</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
+
         <dependency>
             <groupId>cn.reghao.tnb</groupId>
             <artifactId>common</artifactId>

+ 4 - 4
file/file-service/src/main/java/cn/reghao/tnb/file/app/service/UserKeyService.java

@@ -3,9 +3,9 @@ package cn.reghao.tnb.file.app.service;
 import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.jutil.jdk.security.RandomString;
 import cn.reghao.oss.api.constant.ChannelAction;
-import cn.reghao.oss.api.dto.OssPayload;
-import cn.reghao.oss.api.util.JwtUtil;
+import cn.reghao.jutil.auth.model.OssPayload;
 import cn.reghao.tnb.common.auth.LoginUser;
+import cn.reghao.jutil.auth.JwtUtil;
 import cn.reghao.tnb.file.app.db.mapper.UserKeyMapper;
 import cn.reghao.tnb.file.app.model.dto.KeyAuthDto;
 import cn.reghao.tnb.file.app.model.po.UserKey;
@@ -47,8 +47,8 @@ public class UserKeyService {
         long timestamp = System.currentTimeMillis() + 3600*24*365*1000L;
         String action = ChannelAction.all.getName();
         int channelCode = 1;
-        OssPayload ossPayload = new OssPayload(action, channelCode, (int) loginUser);
-        return JwtUtil.createToken(ossPayload, timestamp, secretKey);
+        OssPayload ossPayload = new OssPayload(channelCode, action, (int) loginUser);
+        return JwtUtil.createOssToken(ossPayload, timestamp, secretKey);
     }
 
     public LoginUser getUserFromToken(String token) {

+ 1 - 1
file/file-service/src/main/java/cn/reghao/tnb/file/app/service/UserNodeService.java

@@ -64,7 +64,7 @@ public class UserNodeService {
      */
     public void initUserNode(int storeNodeId) {
         int ossUser = storeConfigService.getLocalOssUser();
-        if (ossUser == -1) {
+        if (ossUser == ConstantId.ANONYMOUS_USER_ID) {
             log.error("ossUser not exist, initUserNode failed...");
             return;
         }

+ 6 - 21
gateway/pom.xml

@@ -17,6 +17,12 @@
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>cn.reghao.jutil</groupId>
+            <artifactId>auth</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-webflux</artifactId>
@@ -42,27 +48,6 @@
             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>javax.xml.bind</groupId>
-            <artifactId>jaxb-api</artifactId>
-            <version>2.3.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.xml.bind</groupId>
-            <artifactId>jaxb-impl</artifactId>
-            <version>2.3.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.xml.bind</groupId>
-            <artifactId>jaxb-core</artifactId>
-            <version>2.3.0</version>
-        </dependency>
-        <dependency>
-            <groupId>javax.activation</groupId>
-            <artifactId>activation</artifactId>
-            <version>1.1.1</version>
-        </dependency>
-
         <dependency>
             <groupId>commons-lang</groupId>
             <artifactId>commons-lang</artifactId>

+ 1 - 1
gateway/src/main/java/cn/reghao/tnb/gateway/admin/db/RedisRouteDefinitionRepository.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.gateway.admin.db;
 
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.gateway.admin.model.RouteDefinitionInfo;
 import org.springframework.beans.BeanUtils;
 import org.springframework.cloud.gateway.event.RefreshRoutesEvent;

+ 1 - 1
gateway/src/main/java/cn/reghao/tnb/gateway/log/RabbitProducer.java

@@ -1,7 +1,7 @@
 package cn.reghao.tnb.gateway.log;
 
 import cn.reghao.jutil.jdk.result.GatewayLog;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.stereotype.Component;
 

+ 17 - 17
gateway/src/main/java/cn/reghao/tnb/gateway/token/GlobalTokenFilter.java

@@ -2,15 +2,13 @@ package cn.reghao.tnb.gateway.token;
 
 import cn.reghao.jutil.jdk.result.WebResult;
 import cn.reghao.jutil.jdk.security.RsaCryptor;
-import cn.reghao.jutil.tool.jwt.Jwt;
+import cn.reghao.jutil.auth.JwtUtil;
+import cn.reghao.jutil.auth.model.JwtPayload;
 import cn.reghao.tnb.gateway.config.AppProperties;
 import cn.reghao.tnb.gateway.token.model.UserData;
 import cn.reghao.tnb.gateway.token.model.UserLogin;
 import cn.reghao.tnb.gateway.config.RedisKeys;
-import io.jsonwebtoken.Claims;
 import io.jsonwebtoken.ExpiredJwtException;
-import io.jsonwebtoken.JwtException;
-import io.jsonwebtoken.Jwts;
 import org.springframework.cloud.gateway.filter.GatewayFilterChain;
 import org.springframework.cloud.gateway.filter.GlobalFilter;
 import org.springframework.core.Ordered;
@@ -114,11 +112,11 @@ public class GlobalTokenFilter implements GlobalFilter, Ordered {
     }
 
     private UserData getUserData(ServerHttpRequest request) {
-        List<String> headerValues = request.getHeaders().get(Jwt.AUTH_HEADER);
+        List<String> headerValues = request.getHeaders().get(JwtUtil.AUTH_HEADER);
         if (headerValues != null && headerValues.size() == 1) {
             String headerValue = headerValues.get(0);
-            if (headerValue != null && headerValue.startsWith(Jwt.JWT_PREFIX)) {
-                String jwtToken = headerValue.replace(Jwt.JWT_PREFIX, "");
+            if (headerValue != null && headerValue.startsWith(JwtUtil.JWT_PREFIX)) {
+                String jwtToken = headerValue.replace(JwtUtil.JWT_PREFIX, "");
                 return new UserData("token", jwtToken);
             }
         }
@@ -141,16 +139,18 @@ public class GlobalTokenFilter implements GlobalFilter, Ordered {
 
     private UserLogin getUserLoginByToken(String jwtToken) {
         RSAPublicKey signKeyPublic = getPublicKey();
-        Claims claims = Jwts.parser().setSigningKey(signKeyPublic).parseClaimsJws(jwtToken).getBody();
-        // TODO 帐号登出后, 已颁发 token 的 jti 会放到 blacklist 中, 需要判断当前 token 是否在 blacklist 中
-        String jti = (String) claims.get("jti");
-        long userId = Long.parseLong(claims.getSubject());
-        String loginId = (String) claims.get("loginId");
-        String roles = (String) claims.get("authorities");
-        String rolesStr = roles.replace("[", "").replace("]", "").replace(" ", "");
-        Boolean exist = redisTemplate.hasKey(RedisKeys.getAuthTokenKey(userId, loginId));
-        if (exist != null && exist) {
-            return new UserLogin(userId, loginId, rolesStr);
+        JwtPayload jwtPayload = JwtUtil.getJwtPayload(jwtToken, signKeyPublic);
+        if (jwtPayload != null) {
+            // TODO 帐号登出后, 已颁发 token 的 jti 会放到 blacklist 中, 需要判断当前 token 是否在 blacklist 中
+            String jti = jwtPayload.getJti();
+            long userId = jwtPayload.getUserId();
+            String loginId = jwtPayload.getLoginId();
+            String roles = jwtPayload.getAuthorities();
+            String rolesStr = roles.replace("[", "").replace("]", "").replace(" ", "");
+            Boolean exist = redisTemplate.hasKey(RedisKeys.getAuthTokenKey(userId, loginId));
+            if (exist != null && exist) {
+                return new UserLogin(userId, loginId, rolesStr);
+            }
         }
 
         return new UserLogin();

+ 1 - 1
message/message-service/src/main/java/cn/reghao/tnb/message/app/rabbit/RabbitListeners.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.message.app.rabbit;
 
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.message.app.config.SpringLifecycle;
 import cn.reghao.tnb.message.app.service.MessageConsumer;
 import cn.reghao.tnb.message.app.ws.media.MediaService;

+ 1 - 1
message/message-service/src/main/java/cn/reghao/tnb/message/app/rabbit/RabbitProducer.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.message.app.rabbit;
 
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.message.api.dto.MediaProgress;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.stereotype.Component;

+ 1 - 1
message/message-service/src/main/java/cn/reghao/tnb/message/app/rabbit/c/RabbitProducers.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.message.app.rabbit.c;
 
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import com.rabbitmq.client.Channel;
 import com.rabbitmq.client.Connection;
 import com.rabbitmq.client.ConnectionFactory;

+ 1 - 1
message/message-service/src/main/java/cn/reghao/tnb/message/app/rabbit/c/RpcListenerCallback.java

@@ -1,7 +1,7 @@
 package cn.reghao.tnb.message.app.rabbit.c;
 
 import cn.reghao.jutil.jdk.result.Result;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import com.rabbitmq.client.AMQP;
 import com.rabbitmq.client.Channel;
 import com.rabbitmq.client.DeliverCallback;

+ 1 - 1
message/message-service/src/main/java/cn/reghao/tnb/message/app/service/MessageConsumer.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.message.app.service;
 
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.common.util.ConstantId;
 import cn.reghao.tnb.message.api.constant.MsgType;
 import cn.reghao.tnb.message.api.dto.UserMessageDto;

+ 1 - 1
message/message-service/src/main/java/cn/reghao/tnb/message/app/service/notifier/ding/DingNotify.java

@@ -2,7 +2,7 @@ package cn.reghao.tnb.message.app.service.notifier.ding;
 
 import cn.reghao.jutil.jdk.http.WebRequest;
 import cn.reghao.jutil.jdk.http.WebResponse;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.message.app.db.mapper.WebhookMapper;
 import cn.reghao.tnb.message.app.model.po.Webhook;
 import cn.reghao.tnb.message.app.service.notifier.Notify;

+ 1 - 1
message/message-service/src/main/java/cn/reghao/tnb/message/app/soa/service/RouteService.java

@@ -6,7 +6,7 @@ import cn.reghao.tnb.message.app.soa.model.route.RouteDefinition;
 import cn.reghao.tnb.message.app.soa.model.vo.RouteDefinitionInfo;
 import cn.reghao.jutil.jdk.http.WebRequest;
 import cn.reghao.jutil.jdk.http.WebResponse;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.jutil.tool.http.DefaultWebRequest;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;

+ 1 - 1
message/message-service/src/main/java/cn/reghao/tnb/message/app/soa/service/TnbZkService.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.message.app.soa.service;
 
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.message.app.soa.model.po.DubboSrv;
 import cn.reghao.tnb.message.app.soa.model.po.SpringCloudService;
 import cn.reghao.tnb.message.app.soa.model.vo.ServiceInfo;

+ 1 - 1
message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/chat/ChatConnection.java

@@ -1,7 +1,7 @@
 package cn.reghao.tnb.message.app.ws.chat;
 
 import cn.reghao.jutil.jdk.serializer.JdkSerializer;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.account.api.constant.TokenType;
 import cn.reghao.tnb.account.api.dto.AuthedAccount;
 import cn.reghao.tnb.account.api.iface.AccountQuery;

+ 1 - 1
message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/chat/ChatHandler.java

@@ -1,7 +1,7 @@
 package cn.reghao.tnb.message.app.ws.chat;
 
 import cn.reghao.jutil.jdk.serializer.JdkSerializer;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.message.api.model.EventType;
 import cn.reghao.tnb.message.app.ws.chat.msg.EventReq;
 import lombok.extern.slf4j.Slf4j;

+ 1 - 1
message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/chat/ChatService.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.message.app.ws.chat;
 
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.account.api.iface.AccountQuery;
 import cn.reghao.tnb.message.api.model.EventType;
 import cn.reghao.tnb.message.api.model.resp.EventMessageResp;

+ 1 - 1
message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/device/DeviceHandler.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.message.app.ws.device;
 
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.message.api.dto.MediaProgress;
 import cn.reghao.tnb.message.app.ws.device.msg.DeviceEvent;
 import cn.reghao.tnb.message.app.ws.device.msg.DeviceEventType;

+ 1 - 1
message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/device/DeviceService.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.message.app.ws.device;
 
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.message.api.model.EventType;
 import cn.reghao.tnb.message.api.model.resp.EventMessageResp;
 import cn.reghao.tnb.message.app.rabbit.RabbitProducer;

+ 1 - 1
message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/media/MediaHandler.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.message.app.ws.media;
 
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.message.api.dto.MediaProgress;
 import cn.reghao.tnb.message.app.ws.media.msg.MediaEvent;
 import cn.reghao.tnb.message.app.ws.media.msg.MediaEventType;

+ 1 - 1
message/message-service/src/main/java/cn/reghao/tnb/message/app/ws/media/MediaService.java

@@ -1,7 +1,7 @@
 package cn.reghao.tnb.message.app.ws.media;
 
 import cn.reghao.jutil.jdk.serializer.JdkSerializer;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.account.api.constant.TokenType;
 import cn.reghao.tnb.account.api.dto.AuthedAccount;
 import cn.reghao.tnb.account.api.iface.AccountQuery;

+ 1 - 1
search/search-service/src/main/java/cn/reghao/tnb/search/app/log/NginxLogService.java

@@ -4,7 +4,7 @@ import cn.reghao.tnb.search.app.config.ElasticProperties;
 import cn.reghao.tnb.search.app.es.*;
 import cn.reghao.tnb.search.app.log.model.NginxLog;
 import cn.reghao.jutil.jdk.converter.DateTimeConverter;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.jutil.jdk.text.TextFile;
 import co.elastic.clients.elasticsearch._types.mapping.Property;
 import lombok.extern.slf4j.Slf4j;

+ 1 - 1
search/search-service/src/main/java/cn/reghao/tnb/search/app/log/consumer/RabbitListeners.java

@@ -2,7 +2,7 @@ package cn.reghao.tnb.search.app.log.consumer;
 
 import cn.reghao.jutil.jdk.result.AppLog;
 import cn.reghao.jutil.jdk.result.GatewayLog;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.search.app.log.db.AccessLogMongo;
 import cn.reghao.tnb.search.app.log.model.po.AccessLog;
 import cn.reghao.tnb.search.app.ws.handler.LogHandler;

+ 1 - 1
search/search-service/src/main/java/cn/reghao/tnb/search/app/ws/WsSender.java

@@ -1,7 +1,7 @@
 package cn.reghao.tnb.search.app.ws;
 
 import cn.reghao.jutil.jdk.serializer.JdkSerializer;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import org.springframework.stereotype.Component;
 import org.springframework.web.socket.BinaryMessage;
 import org.springframework.web.socket.TextMessage;

+ 1 - 1
search/search-service/src/main/java/cn/reghao/tnb/search/app/ws/handler/LogHandler.java

@@ -4,7 +4,7 @@ import cn.reghao.jutil.jdk.result.AppLog;
 import cn.reghao.jutil.jdk.result.GatewayLog;
 import cn.reghao.jutil.jdk.converter.DateTimeConverter;
 import cn.reghao.jutil.jdk.serializer.JdkSerializer;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 import org.springframework.web.socket.*;

+ 1 - 1
search/search-service/src/test/java/NginxLogTest.java

@@ -1,4 +1,4 @@
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.jutil.tool.id.SnowFlake;
 import cn.reghao.tnb.search.app.SearchApplication;
 import cn.reghao.tnb.search.app.es.DocumentService;

+ 1 - 1
user/user-service/src/main/java/cn/reghao/tnb/user/app/controller/UserControllerHystrix.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.user.app.controller;
 
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.user.api.dto.UserInfo;
 import cn.reghao.tnb.user.app.hystrix.SimpleHystrixCommand;
 import cn.reghao.tnb.user.app.hystrix.observable.HaloSemaphoreIsolationCommand;

+ 2 - 1
user/user-service/src/main/java/cn/reghao/tnb/user/app/controller/UserRelationController.java

@@ -2,6 +2,7 @@ package cn.reghao.tnb.user.app.controller;
 
 import cn.reghao.jutil.web.WebResult;
 import cn.reghao.tnb.account.api.iface.AccountQuery;
+import cn.reghao.tnb.common.util.ConstantId;
 import cn.reghao.tnb.user.api.dto.UserCard;
 import cn.reghao.tnb.common.auth.AuthUser;
 import cn.reghao.tnb.common.auth.UserContext;
@@ -55,7 +56,7 @@ public class UserRelationController {
         long userId1 = accountQuery.getUserIdLong(userId);
         long loginUser = UserContext.getUserId();
         boolean followed;
-        if (loginUser == -1) {
+        if (loginUser == ConstantId.ANONYMOUS_USER_ID) {
             followed = false;
         } else {
             followed = userRelationService.isFollowing(loginUser, userId1);

+ 1 - 1
user/user-service/src/main/java/cn/reghao/tnb/user/app/service/UserServiceHystrix.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.user.app.service;
 
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
+import cn.reghao.jutil.tool.json.JsonConverter;
 import cn.reghao.tnb.user.api.dto.UserInfo;
 import cn.reghao.tnb.user.app.controller.UserControllerHystrix;
 import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;