浏览代码

二次获取登录数据,补充base64编码数据

刘立冬 1 月之前
父节点
当前提交
f0ccc52439

+ 28 - 0
risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/util/ImageUtils.java

@@ -0,0 +1,28 @@
+package com.tzld.piaoquan.risk.control.util;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLConnection;
+
+public class ImageUtils {
+    public static byte[] downloadImage(String urlString) throws IOException {
+        URL url = new URL(urlString);
+        URLConnection connection = url.openConnection();
+        connection.setConnectTimeout(5000); // 设置连接超时
+        connection.setReadTimeout(5000);     // 设置读取超时
+        // 模拟浏览器请求,避免被拒绝
+        connection.setRequestProperty("User-Agent", "Mozilla/5.0 (compatible; MyApp/1.0)");
+
+        try (InputStream in = connection.getInputStream();
+             ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            byte[] buffer = new byte[4096];
+            int bytesRead;
+            while ((bytesRead = in.read(buffer)) != -1) {
+                out.write(buffer, 0, bytesRead);
+            }
+            return out.toByteArray();
+        }
+    }
+}

+ 20 - 2
risk-control-server/src/main/java/com/tzld/piaoquan/risk/control/controller/QwLoginController.java

@@ -13,7 +13,9 @@ import com.tzld.piaoquan.risk.control.service.QwLoginService;
 import com.tzld.piaoquan.risk.control.service.qywx.Constant;
 import com.tzld.piaoquan.risk.control.util.HttpClientUtil;
 import com.tzld.piaoquan.risk.control.util.HttpPoolClient;
+import com.tzld.piaoquan.risk.control.util.ImageUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.http.util.TextUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -21,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Base64;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
@@ -61,8 +64,23 @@ public class QwLoginController {
         String uuid = request.get("uuid");
         QwCommonResModel<QwLoginQRCodeModel> loginModel = qwLoginService.secondaryValidation(uuid);
         if (loginModel != null && loginModel.getErrcode() == 0) {
-            loginModel.getData().setUuid(uuid);
-            return CommonResponse.success(loginModel.getData());
+            QwLoginQRCodeModel data = loginModel.getData();
+            data.setUuid(uuid);
+
+            String qrcodeUrl = data.getQrcode();
+            if (StringUtils.isNotBlank(qrcodeUrl)) {
+                try {
+                    byte[] imageBytes = ImageUtils.downloadImage(qrcodeUrl);
+                    String base64Image = Base64.getEncoder().encodeToString(imageBytes);
+                    // 添加 Data URL 前缀,假设图片类型为 PNG
+                    data.setQrcode_data(base64Image);
+                } catch (Exception e) {
+                    log.error("二维码下载或转换失败,URL: {}, 错误: {}", qrcodeUrl, e.getMessage());
+                    return CommonResponse.error(null);
+                }
+            }
+
+            return CommonResponse.success(data);
         } else {
             return CommonResponse.error(null);
         }