Ver Fonte

fix 清除用户token缓存

zoujiajian há 2 anos atrás
pai
commit
9708eb2c71

+ 16 - 7
netflix-service/src/main/java/com/cyksj/service/authorization/impl/AuthorizationServiceImpl.java

@@ -1,9 +1,9 @@
 package com.cyksj.service.authorization.impl;
 
 import cn.hutool.core.util.StrUtil;
+import com.cyksj.common.EnvCommonService;
 import com.cyksj.common.util.Codec;
 import com.cyksj.config.WeChatConfig;
-import com.cyksj.config.wxlogin.WxOpenPlatYHLXLoginConfig;
 import com.cyksj.enums.WeChatAuthRedirectUrl;
 import com.cyksj.model.dto.JsSdkTicket;
 import com.cyksj.service.authorization.AuthorizationService;
@@ -16,6 +16,7 @@ import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
+import java.util.Optional;
 
 /**
  * @author chan
@@ -32,13 +33,14 @@ public class AuthorizationServiceImpl implements AuthorizationService {
 
     private final WeChatConfig weChatConfig;
 
-    private final WxOpenPlatYHLXLoginConfig wxOpenPlatYHLXLoginConfig;
+    private final EnvCommonService envCommonService;
 
 
     @Override
     public String createUrl(String url, String state, String authType) throws MalformedURLException {
-        String domain = gerUrlDomain(url);
-        return weChatService.createUrl(state, (domain != null ? domain : weChatConfig.getDomain()) + WeChatAuthRedirectUrl.get(authType).getUrl()
+        String preUrl = Optional.ofNullable(gerUrlDomain(url)).orElse(weChatConfig.getDomain());
+        log.info("回调url:{}", preUrl);
+        return weChatService.createUrl(state, preUrl + WeChatAuthRedirectUrl.get(authType).getUrl()
                 , weChatConfig.getAppid(), WeChatAuthRedirectUrl.get(authType).getScope());
     }
     @Override
@@ -69,15 +71,22 @@ public class AuthorizationServiceImpl implements AuthorizationService {
         return weChatService.createWxAuthLoginUrl(state, appId, URLEncoder.encode(redirectUrl, StandardCharsets.UTF_8));
     }
 
-    public static String gerUrlDomain(String url) {
+    public String gerUrlDomain(String url) {
         try {
-            if (StrUtil.isNotBlank(url) && !url.contains("nf.video")) {
+            if (StrUtil.isNotBlank(url) && !url.contains("https://nf.video")) {
                 if (!url.contains("http")) {
                     url = "https://" + url;
                 }
                 URL questUrl = new URL(url);
                 String domain = questUrl.getAuthority();
-                return "https://" + domain + "/";
+                StringBuilder sb = new StringBuilder();
+                sb.append("https://").append(domain).append("/");
+                if (envCommonService.isPreEnv()) {
+                    sb.append("8082/api/");
+                } else {
+                    sb.append("8081/api/");
+                }
+                return sb.toString();
             }
         } catch (MalformedURLException e) {
         }

+ 15 - 0
netflix-web/src/main/java/com/cyksj/web/controller/user/AuthorizationController.java

@@ -53,6 +53,7 @@ import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
+import java.util.Set;
 
 /**
  * @author chan
@@ -510,6 +511,10 @@ public class AuthorizationController {
         }
 
         log.info("微信授权转跳.url: {}", url);
+        if (registerEnv == User.RegisterEnv.pc) {
+            response.sendRedirect(url.contains("?") ? url + "&t=" + StpUserUtil.getTokenValue() : url + "?t=" + StpUserUtil.getTokenValue());
+            return;
+        }
         response.sendRedirect(url);
     }
 
@@ -536,6 +541,16 @@ public class AuthorizationController {
         return GatewayResponse.SUCCESS.newBuilder().toResult(loginPhoneRep);
     }
 
+    @GetMapping("/clear/token")
+    public void clearUserToken() {
+        long userId = StpUserUtil.getLoginIdAsLong();
+        if (userId != 55075) {
+            return;
+        }
+        Set<String> keys = redisService.keys("satoken:user:*");
+        redisService.del(keys.toArray(String[]::new));
+    }
+
     private String appendCorpAcquistion(GzhOAuth2UserInfo userinfo, String url) throws Exception {
         if (StringUtils.isNotBlank(userinfo.getUnionid())){
             //获客助手投放链路根据unionId查询redis缓存中是否存在广告平台的clickId