From 4d4eb6e9addc4ce148e05f470beb016e507975ba Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期一, 27 四月 2026 17:21:06 +0800
Subject: [PATCH] 小程序二维码 支持改价 自主行程查询

---
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 50 insertions(+), 10 deletions(-)

diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java
index a4e3e7f..353a243 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java
@@ -1,21 +1,27 @@
 package com.stylefeng.guns.modular.system.util;
 
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.*;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
+import org.springframework.util.StringUtils;
 
 import java.io.ByteArrayInputStream;
+import java.io.File;
 import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.UUID;
 
 /**
  * 微信工具类
@@ -23,12 +29,21 @@
 @Component
 public class WeChatUtil {
 
-    private String wxAppletsAppid="wxccaecee088db18d5";
+    private String wxAppletsAppid="wx20301e30167d920e";
 
-    private String wxAppletsAppSecret="c02390b36817fae7ccd27f084dfbd294";
+    private String wxAppletsAppSecret="4b8fe5cea20c4309fa996caa06ac9b4c";
 
     @Autowired
     private RestTemplate restTemplate;
+
+    @Value("${spring.profiles.active}")
+    private String activeProfile;
+
+    @Value("${filePath}")
+    private String filePath;
+
+    @Value("${qyt.admin_url}")
+    private String adminUrl;
 
 
     /**
@@ -135,7 +150,7 @@
      * @param page      跳转页 例如 pages/index/index
      * @param scene     参数 a=1&b=2
      */
-    public InputStream getwxacodeunlimit(String page, String scene, String envVersion) throws Exception{
+    public InputStream getwxacodeunlimit(String page, String scene, String envVersion){
         try {
             //String wxAppletsAccessToken = redisUtil.getValue("wxAppletsAccessToken");
             String wxAppletsAccessToken = getAccessToken2();
@@ -148,17 +163,42 @@
             MediaType type=MediaType.parseMediaType("application/json;charset=UTF-8");
             httpHeaders.setContentType(type);
             HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(param, httpHeaders);
-            ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class, new Object[0]);
-            String body1 = exchange.getBody();
+//            ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class, new Object[0]);
+//            String body1 = exchange.getBody();
 //            System.err.println(body1);
             ResponseEntity<byte[]> entity  = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]);
-            byte[] body = entity.getBody();
-            System.err.println(JSON.toJSON(entity));
-            System.err.println(Base64.encodeBase64String(body));
-            return new ByteArrayInputStream(body);
+            byte[] result = entity.getBody();
+            if (result == null || result.length == 0) {
+                return null;
+            }
+            MediaType contentType = entity.getHeaders().getContentType();
+            // 微信成功返回image/*;失败通常返回application/json
+            if (contentType != null && !StringUtils.startsWithIgnoreCase(contentType.toString(), "image/")) {
+                String errorBody = new String(result, "UTF-8");
+                System.err.println("getwxacodeunlimit返回非图片内容: " + errorBody);
+                return null;
+            }
+            return new ByteArrayInputStream(result);
         }catch (Exception e){
             e.printStackTrace();
         }
         return null;
     }
+
+    public String getUnlimitQrcode(String appletPath, String scene){
+        InputStream inputStream = getwxacodeunlimit(appletPath, scene, activeProfile.equals("prod") ? "release" : "trial");
+        if (inputStream != null) {
+            File file = FileUtil.writeFromStream(inputStream, new File(filePath + "/" + UUID.randomUUID().toString() + ".png"));
+            HttpRequest post = HttpUtil.createPost(adminUrl + "/upload/image");
+            post.form("file", file);
+            try (HttpResponse execute = post.execute()) {
+                int status = execute.getStatus();
+                if (200 != status) {
+                    throw new RuntimeException("上传图片异常");
+                }
+                return execute.body();
+            }
+        }
+        return null;
+    }
 }

--
Gitblit v1.7.1