From f751d17771d985fcb54e1db71968a8be4dfd73a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Mon, 31 Aug 2026 18:20:32 +0800 Subject: [PATCH] =?UTF-8?q?feat(system):=20=E4=BC=98=E5=8C=96=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E5=B0=8F=E7=A8=8B=E5=BA=8F=E7=A0=81=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E7=9B=B4=E6=8E=A5=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E5=AD=97=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改getOrderQRCodeUnlimited接口,支持直接返回图片字节流 - 移除保存二维码图片到服务器文件的逻辑 - 在未登录时,通过响应码401返回错误提示 - 设置响应内容类型为image/png,禁用缓存,直接输出二维码图片数据 - 简化接口实现,提升性能与用户体验 --- .../system/controller/WxLoginController.java | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java b/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java index 634a4bc..06eacda 100644 --- a/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java +++ b/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java @@ -35,7 +35,9 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.File; +import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.concurrent.TimeUnit; @@ -965,14 +967,16 @@ public class WxLoginController extends BaseController { return fail("获取失败", null); } - @Operation(summary = "获取微信小程序码-数量极多的业务场景(支持自定义页面与场景值)") + @Operation(summary = "获取微信小程序码-数量极多的业务场景(直接返回图片字节,支持自定义页面与场景值)") @GetMapping("/getOrderQRCodeUnlimited/{orderNo}") - public ApiResult getOrderQRCodeUnlimited(@PathVariable("orderNo") String orderNo, - @RequestParam(required = false) String page, - @RequestParam(required = false) String scene) { + public void getOrderQRCodeUnlimited(@PathVariable("orderNo") String orderNo, + @RequestParam(required = false) String page, + @RequestParam(required = false) String scene, + HttpServletResponse response) throws IOException { final User loginUser = getLoginUser(); if(loginUser == null){ - return fail("请先登录"); + response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "请先登录"); + return; } String apiUrl = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + getAccessToken(loginUser.getTenantId()); final HashMap map = new HashMap<>(); @@ -985,17 +989,12 @@ public class WxLoginController extends BaseController { byte[] qrCode = HttpRequest.post(apiUrl) .body(JSON.toJSONString(map)) .execute().bodyBytes(); - System.out.println("qrCode = " + qrCode); - // 保存的文件名称 - final String fileName = CommonUtil.randomUUID8().concat(".png"); - // 保存路径 - String filePath = getUploadDir().concat("qrcode/") + fileName; - File file = FileUtil.writeBytes(qrCode, filePath); - if (file != null) { - return success(config.getFileServer().concat("/qrcode/").concat(fileName)); - } - return fail("获取失败", null); + // 直接将小程序码图片字节写回响应,不依赖 file.websoft.top 文件服务器 + response.setContentType("image/png"); + response.setHeader("Cache-Control", "no-cache"); + response.getOutputStream().write(qrCode); + response.getOutputStream().flush(); }