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(); }