From 836c07d95fec19037e11c2d45a232c50b565fd55 Mon Sep 17 00:00:00 2001 From: zhangye <654600784@qq.com> Date: Sat, 14 Mar 2020 14:45:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=93=E5=8C=85=E4=B8=8B=E8=BD=BD=E4=BA=8C?= =?UTF-8?q?=E7=BB=B4=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ccsens/ct/service/SiteService.java | 41 +++++++++++++------ .../main/java/com/ccsens/util/CodeEnum.java | 1 + .../main/java/com/ccsens/util/QrCodeUtil.java | 15 +++++-- .../test/java/com/ccsens/util/TestQrCord.java | 16 ++++++++ 4 files changed, 58 insertions(+), 15 deletions(-) diff --git a/ct/src/main/java/com/ccsens/ct/service/SiteService.java b/ct/src/main/java/com/ccsens/ct/service/SiteService.java index f96ac2e7..f7939bab 100644 --- a/ct/src/main/java/com/ccsens/ct/service/SiteService.java +++ b/ct/src/main/java/com/ccsens/ct/service/SiteService.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.core.util.ZipUtil; import com.ccsens.ct.bean.dto.BusinessDto; import com.ccsens.ct.bean.dto.SiteDto; import com.ccsens.ct.bean.po.*; @@ -63,6 +64,13 @@ public class SiteService implements ISiteService { } //添加场所 for (SiteDto.SiteInfo siteInfo : siteInfoDto.getSiteInfo()) { + SiteExample siteName = new SiteExample(); + siteName.createCriteria().andBusinessIdEqualTo(siteInfoDto.getId()).andSiteNameEqualTo(siteInfo.getSiteName()); + List sites = siteDao.selectByExample(siteName); + if(CollectionUtil.isNotEmpty(sites)){ + throw new BaseException(CodeEnum.SITE_NAME_REPETITION); + } + Site site = new Site(); site.setId(snowflake.nextId()); site.setBusinessId(siteInfoDto.getId()); @@ -71,28 +79,28 @@ public class SiteService implements ISiteService { site.setLatitude(siteInfo.getLatitude()); siteDao.insertSelective(site); - String path = WebConstant.UPLOAD_PATH_BASE + "/"; + String path = WebConstant.UPLOAD_PATH_BASE + "/business/" + siteInfoDto.getId() + "/siteqrcode/" + site.getSiteName(); //生成进二维码 SiteQrcode inSiteQrcode = new SiteQrcode(); inSiteQrcode.setId(snowflake.nextId()); inSiteQrcode.setSiteId(site.getId()); inSiteQrcode.setOutOrIn((byte) 0); - String inFileName = QrCodeUtil.urlToQRCodeWithSize("https://test.tall.wiki/ct-dev?id=" + inSiteQrcode.getId(), path,200); - String bigInFileName = QrCodeUtil.urlToQRCodeWithSize("https://test.tall.wiki/ct-dev?id=" + inSiteQrcode.getId(), path,1000); + String inFileName = QrCodeUtil.urlToQRCodeWithSize("https://test.tall.wiki/ct-dev?id=" + inSiteQrcode.getId(), path + "/in/",0); + String bigInFileName = QrCodeUtil.urlToQRCodeWithSize("https://test.tall.wiki/ct-dev?id=" + inSiteQrcode.getId(), path + "/in/",1); - inSiteQrcode.setQrcodePath(WebConstant.TEST_URL_BASE_CT + inFileName); - inSiteQrcode.setBigQrcodePath(WebConstant.TEST_URL_BASE_CT + bigInFileName); + inSiteQrcode.setQrcodePath(WebConstant.TEST_URL_BASE_CT +"/business/" + siteInfoDto.getId() + "/siteqrcode/" + site.getSiteName() + "/in/" + inFileName); + inSiteQrcode.setBigQrcodePath(WebConstant.TEST_URL_BASE_CT + "/business/" + siteInfoDto.getId() + "/siteqrcode/" + site.getSiteName() + "/in" + bigInFileName); siteQrcodeDao.insertSelective(inSiteQrcode); //生成出二维码 SiteQrcode outSiteQrcode = new SiteQrcode(); outSiteQrcode.setId(snowflake.nextId()); outSiteQrcode.setSiteId(site.getId()); - outSiteQrcode.setOutOrIn((byte) 0); - String outFileName = QrCodeUtil.urlToQRCodeWithSize("https://test.tall.wiki/ct-dev/sign?id=" + outSiteQrcode.getId(), path,200); - String bigOutFileName = QrCodeUtil.urlToQRCodeWithSize("https://test.tall.wiki/ct-dev/sign?id=" + outSiteQrcode.getId(), path,1000); + outSiteQrcode.setOutOrIn((byte) 1); + String outFileName = QrCodeUtil.urlToQRCodeWithSize("https://test.tall.wiki/ct-dev/sign?id=" + outSiteQrcode.getId(), path + "/out/",0); + String bigOutFileName = QrCodeUtil.urlToQRCodeWithSize("https://test.tall.wiki/ct-dev/sign?id=" + outSiteQrcode.getId(), path + "/out/",1); - outSiteQrcode.setQrcodePath(WebConstant.TEST_URL_BASE_CT + outFileName); - outSiteQrcode.setBigQrcodePath(WebConstant.TEST_URL_BASE_CT + bigOutFileName); + outSiteQrcode.setQrcodePath(WebConstant.TEST_URL_BASE_CT +"/business/" + siteInfoDto.getId() + "/siteqrcode/" + site.getSiteName() + "/out/" + outFileName); + outSiteQrcode.setBigQrcodePath(WebConstant.TEST_URL_BASE_CT + "/business/" + siteInfoDto.getId() + "/siteqrcode/" + site.getSiteName() + "/out/" + bigOutFileName); siteQrcodeDao.insertSelective(outSiteQrcode); //获取返回的场所信息 SiteVo.SiteInfo siteInfo1 = new SiteVo.SiteInfo(); @@ -106,12 +114,16 @@ public class SiteService implements ISiteService { } } + //生成场所二维码压缩包并返回下载路径 + ZipUtil.zip(WebConstant.UPLOAD_PATH_BASE + "/business/" + siteInfoDto.getId() + "/siteqrcode",WebConstant.UPLOAD_PATH_BASE + "/business/" + siteInfoDto.getId() + "/QrCode.zip"); + + //查找商户信息 Business business = businessDao.selectByPrimaryKey(siteInfoDto.getId()); siteInfoVo.setBusinessId(business.getId()); siteInfoVo.setBusinessName(business.getName()); siteInfoVo.setSite(siteInfos); - //TODO + siteInfoVo.setDownloadPath(WebConstant.TEST_URL_BASE_CT + "/business/" + siteInfoDto.getId() + "/QrCode.zip"); siteInfoVo.setPath("http://test.tall.wiki/ct-dev/sign-history"); return siteInfoVo; @@ -170,6 +182,12 @@ public class SiteService implements ISiteService { } //修改场所信息 if (StrUtil.isNotEmpty(updateSite.getSiteName())) { + SiteExample siteName = new SiteExample(); + siteName.createCriteria().andBusinessIdEqualTo(updateSite.getId()).andSiteNameEqualTo(updateSite.getSiteName()); + List sites = siteDao.selectByExample(siteName); + if(CollectionUtil.isNotEmpty(sites)){ + throw new BaseException(CodeEnum.SITE_NAME_REPETITION); + } site.setSiteName(updateSite.getSiteName()); } if (ObjectUtil.isNotNull(updateSite.getLongitude())) { @@ -219,7 +237,6 @@ public class SiteService implements ISiteService { /** * 下载商户下的所有场所的二维码 - * * @param businessId * @return */ diff --git a/util/src/main/java/com/ccsens/util/CodeEnum.java b/util/src/main/java/com/ccsens/util/CodeEnum.java index c0b115b7..738fcb56 100644 --- a/util/src/main/java/com/ccsens/util/CodeEnum.java +++ b/util/src/main/java/com/ccsens/util/CodeEnum.java @@ -101,6 +101,7 @@ public enum CodeEnum { ANIMAL_HEAT_ERROR(84,"体温异常,请选择正确的健康状态",true), NOT_BUSINESS(85,"未找到商户信息",true), SITE_EXCEED(86,"您所添加的场所数量已超出上限,请联系客服提高场所上限",true), + SITE_NAME_REPETITION(86,"场所名重复",true), ; public CodeEnum addMsg(String msg){ diff --git a/util/src/main/java/com/ccsens/util/QrCodeUtil.java b/util/src/main/java/com/ccsens/util/QrCodeUtil.java index deb58d0e..4010bc14 100644 --- a/util/src/main/java/com/ccsens/util/QrCodeUtil.java +++ b/util/src/main/java/com/ccsens/util/QrCodeUtil.java @@ -47,12 +47,21 @@ public class QrCodeUtil { * 根据文件路径生成二维码(可以调整大小) * @param url * @param parentPath + * @param type 图片类型。0缩略图 1打印图 * @return * @throws IOException */ - public static String urlToQRCodeWithSize(String url, String parentPath,Integer size) throws IOException { - size = size == null ? 200 : size; - String fileName = "qrCode/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".png"; + public static String urlToQRCodeWithSize(String url, String parentPath,int type) throws IOException { + String name = System.currentTimeMillis()+""; + int size = 200; + if(type == 0){ + name = "缩略图"; + size = 200; + }else if(type == 1){ + name = "打印图"; + size = 1000; + } + String fileName = name + ".png"; ByteArrayOutputStream stream = QRCode.from(url).to(ImageType.BMP).withSize(size,size).stream(); byte[] codeByte = stream.toByteArray(); File file = new File(parentPath, fileName); diff --git a/util/src/test/java/com/ccsens/util/TestQrCord.java b/util/src/test/java/com/ccsens/util/TestQrCord.java index 5142794c..ea8c6542 100644 --- a/util/src/test/java/com/ccsens/util/TestQrCord.java +++ b/util/src/test/java/com/ccsens/util/TestQrCord.java @@ -1,6 +1,7 @@ package com.ccsens.util; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ZipUtil; import net.glxn.qrgen.core.image.ImageType; import net.glxn.qrgen.javase.QRCode; import org.junit.Test; @@ -10,6 +11,10 @@ import java.io.*; public class TestQrCord { + /** + * 生成二维码,设置大小 + * @throws Exception + */ @Test public void test01() throws Exception { String fileName = "zzz/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".png"; @@ -31,4 +36,15 @@ public class TestQrCord { } } + /** + * 测试压缩文件夹 + * @throws Exception + */ + @Test + public void test02() throws Exception { +// ZipUtil.gzip(new File("F:\\home\\cloud\\tall\\uploads\\zzz")); + ZipUtil.zip("F:\\home\\cloud\\tall\\uploads\\zzz","F:\\home\\cloud\\tall\\uploads\\zzz.zip"); + + } + }