Browse Source

更新在线qrcode bug

xiewj 1 year ago
parent
commit
ac79c18f9a

+ 21 - 0
720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/dto/GerQrcodeDto.java

@@ -0,0 +1,21 @@
+package com.gis.domain.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by owen on 2022/10/31 0031 18:31
+ * 四维看看后端使用
+ */
+@Data
+public class GerQrcodeDto {
+
+    @ApiModelProperty(value = "logo")
+    private String logo;
+
+    @ApiModelProperty(value = "文本内容")
+    private String text;
+
+    @ApiModelProperty(value = "图片内容")
+    private String imgData;
+}

+ 50 - 9
720yun_fd_manage/gis_oss/src/main/java/com/gis/oss/util/QrCodeUtils.java

@@ -3,19 +3,27 @@ package com.gis.oss.util;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.img.ImgUtil;
 import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.lang.UUID;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.URLUtil;
 import cn.hutool.extra.qrcode.QrCodeUtil;
 import cn.hutool.extra.qrcode.QrConfig;
+import cn.hutool.http.HttpUtil;
 import com.amazonaws.services.dynamodbv2.xspec.S;
+import com.gis.common.constant.ConfigConstant;
 import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
 import lombok.extern.slf4j.Slf4j;
 import org.iherus.codegen.qrcode.SimpleQrcodeGenerator;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import sun.misc.BASE64Encoder;
 
 import javax.imageio.ImageIO;
 import java.awt.*;
 import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -32,7 +40,8 @@ public class QrCodeUtils {
 
     @Autowired
     FileAndOssUtil fileAndOssUtil;
-
+    @Autowired
+    ConfigConstant configConstant;
 
     @Test
     public void test(){
@@ -109,7 +118,6 @@ public class QrCodeUtils {
     }
 
 
-
     /**
      * 自定义logo小图标二维码
      * @param url 二维码内容url
@@ -144,18 +152,51 @@ public class QrCodeUtils {
 
         return ossUrl;
     }
+    /**
+     * 附带logo小图标二维码
+     */
+    public String generateLogoQrCodeBase64(String logo,String text){
+        String serverBasePath=configConstant.serverBasePath;
 
-
+        String savePath =  serverBasePath +File.separator+"gerQrcode"+File.separator+ IdUtil.getSnowflakeNextId()+File.separator;
+        // 创建目录
+        if (!FileUtil.isDirectory(savePath)) {
+            FileUtil.mkdir(savePath);
+        }
+        String logoPath = serverBasePath + "img/kankan_icon.png";
+        if (StrUtil.isNotEmpty(logo)){
+            File file = HttpUtil.downloadFileFromUrl(logo, logoPath);
+                 logoPath=file.getPath();
+        }else {
+             if (!FileUtil.isFile(logoPath)) {
+                InputStream resource = FileUtils.getResource("img/kankan_icon.png");
+                FileUtil.writeFromStream(resource, logoPath);
+                log.info("logo写入完成");
+            }
+        }
+        log.info("logoPath: {}", logoPath);
+        BufferedImage test = new SimpleQrcodeGenerator().setLogo(logoPath).generate(text).getImage();
+        System.out.println(test);
+        String png = ImgUtil.toBase64(test, "jpg");
+        png = "data:image/jpg;base64," + png;
+        if (StrUtil.isNotEmpty(logo)&&!logoPath.contains("kankan_icon.png")){
+            boolean del = FileUtil.del(logoPath);
+            log.info("删除logo:{}",del);
+        }
+        return png;
+    }
     /**
      * 附带logo小图标二维码
      */
     public static void main(String[] args) {
-        String logoPath="C:\\Users\\4DAGE\\Downloads\\20230728_100814888.jpg";
-        String savePath="C:\\Users\\4DAGE\\Downloads\\123123.jpg";
-        try {
-            new SimpleQrcodeGenerator().setLogo(logoPath).generate("test").toFile(savePath);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
+        String logoPath = "C:\\Users\\4DAGE\\Downloads\\img"+File.separator+ IdUtil.getSnowflakeNextId()+File.separator;
+        String logo="https://ossxiaoan.4dage.com/720yun_fd_manage/fd720_gxqoc32gt/vtour/panos/fd720_gxqoc32gt.tiles/thumb.jpg";
+        if (StrUtil.isNotEmpty(logo)) {
+            if (!FileUtil.isDirectory(logoPath)) {
+                FileUtil.mkdir(logoPath);
+            }
+            File file = HttpUtil.downloadFileFromUrl(logo, logoPath);
+            System.out.println(file.getPath());
         }
     }
 

+ 53 - 0
720yun_fd_manage/gis_web/src/main/java/com/gis/web/controller/LogoController.java

@@ -0,0 +1,53 @@
+package com.gis.web.controller;
+
+import com.gis.common.util.Result;
+import com.gis.domain.dto.AgePageDto;
+import com.gis.domain.dto.GerQrcodeDto;
+import com.gis.domain.dto.ReportDto;
+import com.gis.domain.dto.UserTrentDto;
+import com.gis.domain.entity.WorkEntity;
+import com.gis.domain.po.ReportPo;
+import com.gis.oss.util.QrCodeUtils;
+import com.gis.service.ReportService;
+import com.gis.service.WorkService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.iherus.codegen.qrcode.SimpleQrcodeGenerator;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by owen on 2022/6/28 0028 16:56
+ *
+ */
+@Slf4j
+@Api(tags = "生成二维码")
+@RestController
+@RequestMapping("/api/logo")
+public class LogoController {
+
+    @Autowired
+    QrCodeUtils qrCodeUtils;
+
+    /*
+     * 获取所有场景
+     * 使用超级管理员权限的
+     * @param param
+     * @return
+     */
+    @ApiOperation(value = "生成二维码")
+    @PostMapping("/gerQrCode")
+    public Result<WorkEntity> gerQrCode(@RequestBody GerQrcodeDto param)
+    {
+        String data = qrCodeUtils.generateLogoQrCodeBase64(param.getLogo(), param.getText());
+        Map<String,Object> res=new HashMap<>();
+        res.put("img",data);
+        return Result.success(res);
+    }
+}