Commit 59fcd0766f6250962530ef7aa51841b1b2fecb16

Authored by guzijian
1 parent 63890800

feat: 生成二维码

trash-admin/src/main/resources/application-dev.yml
@@ -9,8 +9,9 @@ trash: @@ -9,8 +9,9 @@ trash:
9 # 实例演示开关 9 # 实例演示开关
10 demoEnabled: true 10 demoEnabled: true
11 # 文件路径 示例( Windows配置D:/trash/uploadPath,Linux配置 /home/trash/uploadPath,存储桶 trash/uploadPath,nginx配置 /trash/upload) 11 # 文件路径 示例( Windows配置D:/trash/uploadPath,Linux配置 /home/trash/uploadPath,存储桶 trash/uploadPath,nginx配置 /trash/upload)
  12 + profile: D:/trash/uploadPath
12 # profile: E:/trash/uploadPath 13 # profile: E:/trash/uploadPath
13 - profile: F:/work/project/Documents/uploadPath/trash 14 +# profile: F:/work/project/Documents/uploadPath/trash
14 # 获取ip地址开关 15 # 获取ip地址开关
15 addressEnabled: false 16 addressEnabled: false
16 # 验证码类型 math 数组计算 char 字符验证 17 # 验证码类型 math 数组计算 char 字符验证
@@ -127,4 +128,8 @@ huawei: @@ -127,4 +128,8 @@ huawei:
127 nginx: 128 nginx:
128 enabled: false 129 enabled: false
129 path: 130 path:
130 - url:  
131 \ No newline at end of file 131 \ No newline at end of file
  132 + url:
  133 +
  134 +# 生成二维码 前端地址
  135 +front:
  136 + url: "http://61.169.120.202:5173/pages/order/guest/index?orderId="
132 \ No newline at end of file 137 \ No newline at end of file
trash-framework/src/main/java/com/trash/framework/config/SecurityConfig.java
@@ -118,6 +118,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter @@ -118,6 +118,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
118 .antMatchers("/*/api-docs").anonymous() 118 .antMatchers("/*/api-docs").anonymous()
119 .antMatchers("/druid/**").anonymous() 119 .antMatchers("/druid/**").anonymous()
120 .antMatchers("/user/login").anonymous() 120 .antMatchers("/user/login").anonymous()
  121 + .antMatchers("/order/webDetail/**").anonymous()
121 .antMatchers("/user/send/verify").anonymous() 122 .antMatchers("/user/send/verify").anonymous()
122 // .antMatchers("/user/logout").anonymous() 123 // .antMatchers("/user/logout").anonymous()
123 .antMatchers("/system/post/all").anonymous() 124 .antMatchers("/system/post/all").anonymous()
trash-garbage/src/main/java/com/trash/garbage/controller/GarQRController.java 0 → 100644
  1 +package com.trash.garbage.controller;
  2 +
  3 +import com.trash.garbage.global.Result;
  4 +import com.trash.garbage.service.GarQRCodeService;
  5 +import org.springframework.beans.factory.annotation.Autowired;
  6 +import org.springframework.web.bind.annotation.GetMapping;
  7 +import org.springframework.web.bind.annotation.PathVariable;
  8 +import org.springframework.web.bind.annotation.RequestMapping;
  9 +import org.springframework.web.bind.annotation.RestController;
  10 +
  11 +import javax.servlet.http.HttpServletResponse;
  12 +
  13 +@RestController
  14 +@RequestMapping("/QRCode")
  15 +public class GarQRController {
  16 +
  17 + @Autowired
  18 + private GarQRCodeService qrCodeService;
  19 +
  20 + /**
  21 + * 生成订单详情二维码
  22 + */
  23 + @GetMapping("/create/{orderId}")
  24 + public Result<String> createQRCode(@PathVariable("orderId") String orderId, HttpServletResponse response){
  25 + return Result.OK(qrCodeService.createQRCode(orderId,response));
  26 + }
  27 +
  28 +
  29 +}
trash-garbage/src/main/java/com/trash/garbage/controller/GarbageOrderController.java
@@ -112,7 +112,6 @@ public class GarbageOrderController { @@ -112,7 +112,6 @@ public class GarbageOrderController {
112 return Result.OK(garOrderService.queryOrderListByGarOrderPage(dto)); 112 return Result.OK(garOrderService.queryOrderListByGarOrderPage(dto));
113 } 113 }
114 114
115 -  
116 @GetMapping("/webDetail/{id}") 115 @GetMapping("/webDetail/{id}")
117 public Result<OrderDetailVo> queryOrderWebDetail(@PathVariable("id") String id) { 116 public Result<OrderDetailVo> queryOrderWebDetail(@PathVariable("id") String id) {
118 return Result.OK(garOrderService.queryOrderWebDetail(id)); 117 return Result.OK(garOrderService.queryOrderWebDetail(id));
trash-garbage/src/main/java/com/trash/garbage/global/GlobalStatus.java
@@ -37,7 +37,7 @@ public class GlobalStatus { @@ -37,7 +37,7 @@ public class GlobalStatus {
37 */ 37 */
38 NORMAL_LOGIN(0, "普通登录"), 38 NORMAL_LOGIN(0, "普通登录"),
39 NORMAL_USER(0, "居民用户"), 39 NORMAL_USER(0, "居民用户"),
40 - DRIVER_USER(1, "管理负责人"); 40 + DRIVER_USER(1, "司机");
41 41
42 private Integer status; 42 private Integer status;
43 private String description; 43 private String description;
trash-garbage/src/main/java/com/trash/garbage/service/GarQRCodeService.java 0 → 100644
  1 +package com.trash.garbage.service;
  2 +
  3 +import javax.servlet.http.HttpServletResponse;
  4 +
  5 +public interface GarQRCodeService {
  6 +
  7 + String createQRCode(String orderId, HttpServletResponse response);
  8 +}
trash-garbage/src/main/java/com/trash/garbage/service/impl/GarQRCodeServiceImpl.java 0 → 100644
  1 +package com.trash.garbage.service.impl;
  2 +
  3 +import com.google.zxing.WriterException;
  4 +import com.trash.garbage.service.GarQRCodeService;
  5 +import com.trash.garbage.utils.QRCodeUtil;
  6 +import org.springframework.beans.factory.annotation.Value;
  7 +import org.springframework.stereotype.Service;
  8 +
  9 +import javax.imageio.ImageIO;
  10 +import javax.servlet.ServletOutputStream;
  11 +import javax.servlet.http.HttpServletResponse;
  12 +import java.awt.image.BufferedImage;
  13 +import java.io.ByteArrayOutputStream;
  14 +import java.io.IOException;
  15 +import java.io.OutputStream;
  16 +import java.util.Base64;
  17 +
  18 +
  19 +@Service
  20 +public class GarQRCodeServiceImpl implements GarQRCodeService {
  21 +
  22 + @Value("${front.url}")
  23 + private String url;
  24 +
  25 + @Override
  26 + public String createQRCode(String orderId, HttpServletResponse response) {
  27 + String base64 = "";
  28 + try {
  29 + BufferedImage image = QRCodeUtil.createQRCode(url + orderId, 200);
  30 + base64 = bufferedImageToBase64(image);
  31 + } catch (WriterException e) {
  32 + throw new RuntimeException(e);
  33 + } catch (IOException e) {
  34 + throw new RuntimeException(e);
  35 + }
  36 +
  37 + return base64;
  38 + }
  39 + private String bufferedImageToBase64(BufferedImage image) throws IOException {
  40 + // 创建一个字节数组输出流
  41 + ByteArrayOutputStream baos = new ByteArrayOutputStream();
  42 +
  43 + // 将BufferedImage写入字节数组输出流
  44 + ImageIO.write(image, "jpg", baos);
  45 +
  46 + // 转换为字节数组
  47 + byte[] imageBytes = baos.toByteArray();
  48 +
  49 + // 使用Base64编码
  50 + String base64String = Base64.getEncoder().encodeToString(imageBytes);
  51 +
  52 + // 关闭字节数组输出流
  53 + baos.close();
  54 +
  55 + return "data:image/jpg;base64," + base64String;
  56 + }
  57 +
  58 +}
trash-garbage/src/main/java/com/trash/garbage/utils/QRCodeUtil.java 0 → 100644
  1 +package com.trash.garbage.utils;
  2 +
  3 +import com.google.zxing.BarcodeFormat;
  4 +import com.google.zxing.EncodeHintType;
  5 +import com.google.zxing.WriterException;
  6 +import com.google.zxing.common.BitMatrix;
  7 +import com.google.zxing.qrcode.QRCodeWriter;
  8 +
  9 +import javax.imageio.ImageIO;
  10 +import java.awt.*;
  11 +import java.awt.image.BufferedImage;
  12 +import java.io.File;
  13 +import java.io.IOException;
  14 +import java.util.HashMap;
  15 +
  16 +public class QRCodeUtil {
  17 +
  18 + /**
  19 + * 生成指定网址大小及图片格式的二维码
  20 + *
  21 + * @param url 网址
  22 + * @param size 尺寸
  23 + */
  24 + public static BufferedImage createQRCode(String url, int size)
  25 + throws WriterException, IOException {
  26 +
  27 + HashMap<EncodeHintType, Object> hintMap = new HashMap<EncodeHintType, Object>();
  28 + hintMap.put(EncodeHintType.CHARACTER_SET, "UTF-8");
  29 +
  30 + QRCodeWriter qrCodeWriter = new QRCodeWriter();
  31 + BitMatrix bitMatrix = qrCodeWriter.encode(url, BarcodeFormat.QR_CODE, size, size, hintMap);
  32 +
  33 + int matrixWidth = bitMatrix.getWidth();
  34 + BufferedImage image = new BufferedImage(matrixWidth, matrixWidth, BufferedImage.TYPE_INT_RGB);
  35 + image.createGraphics();
  36 +
  37 + Graphics2D graphics = (Graphics2D) image.getGraphics();
  38 + graphics.setColor(Color.WHITE);
  39 + graphics.fillRect(0, 0, matrixWidth, matrixWidth);
  40 + graphics.setColor(Color.BLACK);
  41 +
  42 + for (int i = 0; i < matrixWidth; i++) {
  43 + for (int j = 0; j < matrixWidth; j++) {
  44 + if (bitMatrix.get(i, j)) {
  45 + graphics.fillRect(i, j, 1, 1);
  46 + }
  47 + }
  48 + }
  49 + return image;
  50 +// ImageIO.write(image, fileType, qrFile);
  51 + }
  52 +}
0 \ No newline at end of file 53 \ No newline at end of file