ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java
@@ -89,4 +89,7 @@ @ApiModelProperty(value = "预约单id") private String technicianSubscribeId; @ApiModelProperty("核销码BASE64") private String writeOffCode; } ruoyi-common/pom.xml
@@ -31,6 +31,17 @@ <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.4.1</version> </dependency> </dependencies> </project> ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/QRCodeGenerator.java
New file @@ -0,0 +1,44 @@ package com.ruoyi.common.core.utils.uuid; import com.google.zxing.BarcodeFormat; import com.google.zxing.WriterException; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Base64; public class QRCodeGenerator { /** * 生成二维码图片的base64编码 * @param text * @param width * @param height * @return * @throws WriterException * @throws IOException */ public static String generateQRCodeBase64(String text, int width, int height) throws WriterException, IOException { QRCodeWriter qrCodeWriter = new QRCodeWriter(); BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height); ByteArrayOutputStream pngOutputStream = new ByteArrayOutputStream(); MatrixToImageWriter.writeToStream(bitMatrix, "PNG", pngOutputStream); byte[] pngData = pngOutputStream.toByteArray(); return Base64.getEncoder().encodeToString(pngData); } public static void main(String[] args) { try { String text = "Hello, World!"; String base64QRCode = generateQRCodeBase64(text, 200, 200); System.out.println("Base64 QR Code: " + base64QRCode); } catch (WriterException | IOException e) { e.printStackTrace(); } } } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -897,6 +897,7 @@ .collect(Collectors.toList()); } /** * 上传图片 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -14,6 +14,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.uuid.QRCodeGenerator; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.enums.OrderStatus; @@ -41,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; @@ -216,6 +218,14 @@ orderDetailVO.setTechnicianSubscribeId(id.toString()); } } // 生成核销码BASE64 try { String base64 = QRCodeGenerator.generateQRCodeBase64(order.getOrderNumber(), 124, 124); orderDetailVO.setWriteOffCode(base64); } catch (Exception e) { e.printStackTrace(); throw new ServiceException("生成核销码失败"); } return orderDetailVO; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVo.java
@@ -71,5 +71,7 @@ private String afterSaleTime; @ApiModelProperty("活动名称") private String activityName; @ApiModelProperty("核销码BASE64") private String writeOffCode; }