From 09e6dc3fb7266620fafb5e341808a8eb36e080a1 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 13 十二月 2025 22:51:52 +0800
Subject: [PATCH] feat:增加企业微信消息提醒
---
ruoyi-common/src/main/java/com/ruoyi/common/utils/QRCodeUtils.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 52 insertions(+), 0 deletions(-)
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/QRCodeUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/QRCodeUtils.java
index 5a28d53..cb983db 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/QRCodeUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/QRCodeUtils.java
@@ -9,6 +9,7 @@
import org.slf4j.LoggerFactory;
import javax.imageio.ImageIO;
+import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -95,4 +96,55 @@
}
return null;
}
+
+ /**
+ * 鐢熸垚甯﹁溅鐗屽彿鐨凚ase64缂栫爜浜岀淮鐮�
+ *
+ * @param content 浜岀淮鐮佸唴瀹�
+ * @param vehicleNo 杞︾墝鍙�
+ * @return Base64缂栫爜鐨勪簩缁寸爜
+ */
+ public static String generateQRCodeWithVehicleNoToBase64(String content, String vehicleNo) {
+ try {
+ Map<EncodeHintType, Object> hints = new HashMap<>();
+ hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
+ hints.put(EncodeHintType.MARGIN, 1);
+
+ BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints);
+ BufferedImage qrImage = MatrixToImageWriter.toBufferedImage(bitMatrix);
+
+ // 鍒涘缓甯︽枃瀛楃殑鍥剧墖
+ int textHeight = 40; // 鏂囧瓧鍖哄煙楂樺害
+ int totalHeight = HEIGHT + textHeight;
+ BufferedImage finalImage = new BufferedImage(WIDTH, totalHeight, BufferedImage.TYPE_INT_RGB);
+ Graphics2D g2d = finalImage.createGraphics();
+
+ // 璁剧疆鑳屾櫙涓虹櫧鑹�
+ g2d.setColor(Color.WHITE);
+ g2d.fillRect(0, 0, WIDTH, totalHeight);
+
+ // 缁樺埗浜岀淮鐮�
+ g2d.drawImage(qrImage, 0, 0, null);
+
+ // 缁樺埗杞︾墝鍙锋枃瀛�
+ g2d.setColor(Color.BLACK);
+ g2d.setFont(new Font("寰蒋闆呴粦", Font.BOLD, 16));
+ FontMetrics fm = g2d.getFontMetrics();
+ int textWidth = fm.stringWidth(vehicleNo);
+ int x = (WIDTH - textWidth) / 2;
+ int y = HEIGHT + (textHeight + fm.getAscent()) / 2;
+ g2d.drawString(vehicleNo, x, y);
+
+ g2d.dispose();
+
+ // 杞崲涓築ase64
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ImageIO.write(finalImage, FORMAT, baos);
+ return "data:image/png;base64," + java.util.Base64.getEncoder().encodeToString(baos.toByteArray());
+
+ } catch (Exception e) {
+ log.error("鐢熸垚甯﹁溅鐗屽彿鐨勪簩缁寸爜澶辫触: {}", e.getMessage());
+ return null;
+ }
+ }
}
--
Gitblit v1.9.1