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}