diff --git a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/scene/manage.html b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/scene/manage.html
index 34599bfe..1c0f2f88 100644
--- a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/scene/manage.html
+++ b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/scene/manage.html
@@ -209,12 +209,21 @@
function generateQRCode() {
table.set();
var rows = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
- if (rows.length == 0) {
+ if (rows.length === 0) {
$.modal.alertWarning("请选择一条记录");
return;
}
- $.post(ctx + "small/scene/manage/generateQRCode/", {"guid": rows.join()}, function (req,status ) {
-
+ if (rows.length > 1) {
+ $.modal.alertWarning("请选择一条记录");
+ return;
+ }
+ $.post(ctx + "small/scene/manage/createQrCode/", {"guid": rows.join()}, function (req,status ) {
+ if (req.success) {
+ $.table.refresh();
+ $.modal.alertSuccess("生成二维码成功");
+ }else{
+ $.modal.alertWarning(req.message);
+ }
})
}
diff --git a/lib/EmergencyService/zdxtEmergencyKnowledgeService/pom.xml b/lib/EmergencyService/zdxtEmergencyKnowledgeService/pom.xml
index 3c914fb3..e1ee88c6 100644
--- a/lib/EmergencyService/zdxtEmergencyKnowledgeService/pom.xml
+++ b/lib/EmergencyService/zdxtEmergencyKnowledgeService/pom.xml
@@ -36,6 +36,17 @@
1.0
compile
+
+
+ com.google.zxing
+ core
+ 3.3.0
+
+
+ com.google.zxing
+ javase
+ 3.3.0
+
\ No newline at end of file
diff --git a/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/SceneManageController.java b/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/SceneManageController.java
index ec67778f..61a6d2d5 100755
--- a/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/SceneManageController.java
+++ b/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/SceneManageController.java
@@ -17,7 +17,6 @@ import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
-import javax.servlet.http.HttpServletResponse;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -72,8 +71,17 @@ public class SceneManageController extends BaseController {
*/
@PostMapping("/generateQRCode")
@ResponseBody
- public ZDResponse generateQRCode(SceneManage sceneManage) throws Exception{
- return sceneManageService.generateQRCode(sceneManage);
+ public ZDResponse generateQRCode(SceneManage sceneManage) throws Exception {
+ return sceneManageService.generateQRCode(sceneManage);
+ }
+
+ /**
+ * 生成动态二维码
+ */
+ @PostMapping(value = "/createQrCode")
+ @ResponseBody
+ public ZDResponse createQrCode(SceneManage sceneManage) {
+ return sceneManageService.createQrCode(sceneManage);
}
/**
diff --git a/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/ISceneManageService.java b/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/ISceneManageService.java
index 5b7f7903..b6713ffe 100755
--- a/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/ISceneManageService.java
+++ b/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/ISceneManageService.java
@@ -45,6 +45,8 @@ public interface ISceneManageService {
public ZDResponse generateQRCode(SceneManage sceneManage) throws Exception;
+ public ZDResponse createQrCode(SceneManage sceneManage);
+
/**
* 新增【请填写功能名称】
*
diff --git a/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/SceneManageServiceImpl.java b/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/SceneManageServiceImpl.java
index 2794bcd4..6e3afafa 100755
--- a/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/SceneManageServiceImpl.java
+++ b/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/SceneManageServiceImpl.java
@@ -2,7 +2,6 @@ package com.zdxt.knowledge.service.impl;
import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
@@ -28,22 +27,18 @@ import com.zdxt.knowledge.domain.SceneManage;
import com.zdxt.knowledge.mapper.SceneManageMapper;
import com.zdxt.knowledge.service.ISceneManageService;
import com.zdxt.knowledge.utils.ExcelUtil;
+import com.zdxt.knowledge.utils.QRCodeGeneratorUtil;
import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.io.FileUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
-import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.multipart.commons.CommonsMultipartFile;
-import javax.activation.MimetypesFileTypeMap;
-import javax.servlet.http.HttpServletResponse;
-import java.io.*;
+import java.io.File;
+import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -90,7 +85,6 @@ public class SceneManageServiceImpl implements ISceneManageService {
}
-
/**
* 查询列表
*
@@ -101,6 +95,7 @@ public class SceneManageServiceImpl implements ISceneManageService {
public List selectSceneManageListAll(SceneManage sceneManage) {
return sceneManageMapper.selectSceneManageListAll(sceneManage);
}
+
/**
* 查询【请填写功能名称】列表
*
@@ -119,13 +114,15 @@ public class SceneManageServiceImpl implements ISceneManageService {
public ZDResponse generateQRCode(SceneManage sceneManage) throws Exception {
String accessToken = getAccessToken();
- String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken;
+ String url = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=" + accessToken;
// 发送请求参数
JSONObject paramJson = new JSONObject();
- paramJson.set("page", "subpkg/role/role");
- paramJson.set("check_path", false);
+ paramJson.set("path", "subpkg/role/role");
+ //paramJson.set("check_path", false);
paramJson.set("width", 280);
+ //paramJson.set("auto_color", false);
+ //paramJson.set("is_hyaline", false);
//scene数据不能中文
paramJson.set("scene", sceneManage.getGuid());
//设置小程序码版本
@@ -136,7 +133,7 @@ public class SceneManageServiceImpl implements ISceneManageService {
InputStream inputStream = HttpUtils.postInputStream(url, paramJson);
//存入本地数据库
File file = File.createTempFile("temp", ".png");
- FileUtils.copyInputStreamToFile(inputStream,file);
+ FileUtils.copyInputStreamToFile(inputStream, file);
MultipartFile multipartFile = new LocalFileMultipartFile(file);
String uploadPath = fileUploadApi.upload(multipartFile);
zdxtFileCommonApi.deleteZdxtFileByIds(sceneManage.getGuid() + "0000");
@@ -145,12 +142,39 @@ public class SceneManageServiceImpl implements ISceneManageService {
sceneManage.setUrl(uploadPath);
int result = sceneManageMapper.updateSceneManage(sceneManage);
file.deleteOnExit();
- if (result>0) {
+ if (result > 0) {
return ZDResponse.success("生成二维码成功");
}
return ZDResponse.error("生成二维码失败");
}
+ @Override
+ public ZDResponse createQrCode(SceneManage sceneManage) {
+ try {
+ if (Objects.nonNull(sceneManage.getGuid())) {
+ //这个地方则是调用了工具类第二个方法
+ byte[] qrcode = QRCodeGeneratorUtil.getQRCodeImage(sceneManage.getGuid(), 350, 350);
+ //存入本地数据库
+ File file = File.createTempFile("temp", ".png");
+ FileUtils.writeByteArrayToFile(file, qrcode);
+
+ MultipartFile multipartFile = new LocalFileMultipartFile(file);
+ String uploadPath = fileUploadApi.upload(multipartFile);
+ zdxtFileCommonApi.deleteZdxtFileByIds(sceneManage.getGuid() + "0000");
+ zdxtFileCommonApi.insertZdxtFile(multipartFile, sceneManage.getGuid() + "0000", uploadPath);
+ sceneManage.setUpdateTime(DateUtils.getNowDate());
+ sceneManage.setUrl(uploadPath);
+ sceneManageMapper.updateSceneManage(sceneManage);
+ file.deleteOnExit();
+ } else {
+ return ZDResponse.error("二维码参数不能为空");
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return ZDResponse.success("生成二维码成功");
+ }
+
public String getAccessToken() {
String appid = APPID;
String secret = SECRET;
@@ -232,7 +256,7 @@ public class SceneManageServiceImpl implements ISceneManageService {
public ZDResponse deleteSceneManageByIds(String guids) {
List sceneManageList = sceneManageMapper.selectSceneManageByIds(Convert.toStrArray(guids));
if (CollectionUtils.isNotEmpty(sceneManageList)) {
- //由于工作流还没实现,暂时注释此段代码
+ //由于工作流还没实现,暂时注释此段代码
// long count = sceneManageList.stream().filter(item -> !Objects.equals(item.getStatus(), 4)).count();
// if (count > 0) {
// return ZDResponse.error("仅支持已下架的场景进行删除操作");
diff --git a/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/utils/QRCodeGeneratorUtil.java b/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/utils/QRCodeGeneratorUtil.java
new file mode 100644
index 00000000..3eade4b9
--- /dev/null
+++ b/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/utils/QRCodeGeneratorUtil.java
@@ -0,0 +1,45 @@
+package com.zdxt.knowledge.utils;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.nio.file.FileSystems;
+import java.nio.file.Path;
+
+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;
+
+public class QRCodeGeneratorUtil {
+
+ /* 高度——height,
+ 宽度——width,
+ 二维码内容——text(url需要自动跳转前面加上https://)
+ 背景图片的路径——filePath*/
+ public static void generateQRCodeImage(String text, int width, int height, String filePath) throws WriterException, IOException {
+ QRCodeWriter qrCodeWriter = new QRCodeWriter();
+
+ BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);
+
+ Path path = FileSystems.getDefault().getPath(filePath);
+
+ MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
+
+ }
+ /* 高度——height,
+ 宽度——width,
+ 二维码内容——text(url需要自动跳转前面加上https://)
+ */
+ public static byte[] getQRCodeImage(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, "JPG", pngOutputStream);
+ byte[] pngData = pngOutputStream.toByteArray();
+ return pngData;
+ }
+
+}
+
diff --git a/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/resources/mapper/SceneManageMapper.xml b/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/resources/mapper/SceneManageMapper.xml
index 7c09aab7..14e99611 100755
--- a/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/resources/mapper/SceneManageMapper.xml
+++ b/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/resources/mapper/SceneManageMapper.xml
@@ -147,6 +147,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
inner join zdxt_file as zd
on cu.guid = zd.business_id
+ and cu.guid = #{guid}
and cu.name like concat('%', #{name}, '%')
and cu.status = #{status}