Browse Source

打包下载二维码

master
zhangye 5 years ago
parent
commit
836c07d95f
  1. 41
      ct/src/main/java/com/ccsens/ct/service/SiteService.java
  2. 1
      util/src/main/java/com/ccsens/util/CodeEnum.java
  3. 15
      util/src/main/java/com/ccsens/util/QrCodeUtil.java
  4. 16
      util/src/test/java/com/ccsens/util/TestQrCord.java

41
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.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; 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.BusinessDto;
import com.ccsens.ct.bean.dto.SiteDto; import com.ccsens.ct.bean.dto.SiteDto;
import com.ccsens.ct.bean.po.*; import com.ccsens.ct.bean.po.*;
@ -63,6 +64,13 @@ public class SiteService implements ISiteService {
} }
//添加场所 //添加场所
for (SiteDto.SiteInfo siteInfo : siteInfoDto.getSiteInfo()) { for (SiteDto.SiteInfo siteInfo : siteInfoDto.getSiteInfo()) {
SiteExample siteName = new SiteExample();
siteName.createCriteria().andBusinessIdEqualTo(siteInfoDto.getId()).andSiteNameEqualTo(siteInfo.getSiteName());
List<Site> sites = siteDao.selectByExample(siteName);
if(CollectionUtil.isNotEmpty(sites)){
throw new BaseException(CodeEnum.SITE_NAME_REPETITION);
}
Site site = new Site(); Site site = new Site();
site.setId(snowflake.nextId()); site.setId(snowflake.nextId());
site.setBusinessId(siteInfoDto.getId()); site.setBusinessId(siteInfoDto.getId());
@ -71,28 +79,28 @@ public class SiteService implements ISiteService {
site.setLatitude(siteInfo.getLatitude()); site.setLatitude(siteInfo.getLatitude());
siteDao.insertSelective(site); 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(); SiteQrcode inSiteQrcode = new SiteQrcode();
inSiteQrcode.setId(snowflake.nextId()); inSiteQrcode.setId(snowflake.nextId());
inSiteQrcode.setSiteId(site.getId()); inSiteQrcode.setSiteId(site.getId());
inSiteQrcode.setOutOrIn((byte) 0); inSiteQrcode.setOutOrIn((byte) 0);
String inFileName = QrCodeUtil.urlToQRCodeWithSize("https://test.tall.wiki/ct-dev?id=" + inSiteQrcode.getId(), path,200); 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,1000); 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.setQrcodePath(WebConstant.TEST_URL_BASE_CT +"/business/" + siteInfoDto.getId() + "/siteqrcode/" + site.getSiteName() + "/in/" + inFileName);
inSiteQrcode.setBigQrcodePath(WebConstant.TEST_URL_BASE_CT + bigInFileName); inSiteQrcode.setBigQrcodePath(WebConstant.TEST_URL_BASE_CT + "/business/" + siteInfoDto.getId() + "/siteqrcode/" + site.getSiteName() + "/in" + bigInFileName);
siteQrcodeDao.insertSelective(inSiteQrcode); siteQrcodeDao.insertSelective(inSiteQrcode);
//生成出二维码 //生成出二维码
SiteQrcode outSiteQrcode = new SiteQrcode(); SiteQrcode outSiteQrcode = new SiteQrcode();
outSiteQrcode.setId(snowflake.nextId()); outSiteQrcode.setId(snowflake.nextId());
outSiteQrcode.setSiteId(site.getId()); outSiteQrcode.setSiteId(site.getId());
outSiteQrcode.setOutOrIn((byte) 0); outSiteQrcode.setOutOrIn((byte) 1);
String outFileName = QrCodeUtil.urlToQRCodeWithSize("https://test.tall.wiki/ct-dev/sign?id=" + outSiteQrcode.getId(), path,200); 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,1000); 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.setQrcodePath(WebConstant.TEST_URL_BASE_CT +"/business/" + siteInfoDto.getId() + "/siteqrcode/" + site.getSiteName() + "/out/" + outFileName);
outSiteQrcode.setBigQrcodePath(WebConstant.TEST_URL_BASE_CT + bigOutFileName); outSiteQrcode.setBigQrcodePath(WebConstant.TEST_URL_BASE_CT + "/business/" + siteInfoDto.getId() + "/siteqrcode/" + site.getSiteName() + "/out/" + bigOutFileName);
siteQrcodeDao.insertSelective(outSiteQrcode); siteQrcodeDao.insertSelective(outSiteQrcode);
//获取返回的场所信息 //获取返回的场所信息
SiteVo.SiteInfo siteInfo1 = new SiteVo.SiteInfo(); 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()); Business business = businessDao.selectByPrimaryKey(siteInfoDto.getId());
siteInfoVo.setBusinessId(business.getId()); siteInfoVo.setBusinessId(business.getId());
siteInfoVo.setBusinessName(business.getName()); siteInfoVo.setBusinessName(business.getName());
siteInfoVo.setSite(siteInfos); 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"); siteInfoVo.setPath("http://test.tall.wiki/ct-dev/sign-history");
return siteInfoVo; return siteInfoVo;
@ -170,6 +182,12 @@ public class SiteService implements ISiteService {
} }
//修改场所信息 //修改场所信息
if (StrUtil.isNotEmpty(updateSite.getSiteName())) { if (StrUtil.isNotEmpty(updateSite.getSiteName())) {
SiteExample siteName = new SiteExample();
siteName.createCriteria().andBusinessIdEqualTo(updateSite.getId()).andSiteNameEqualTo(updateSite.getSiteName());
List<Site> sites = siteDao.selectByExample(siteName);
if(CollectionUtil.isNotEmpty(sites)){
throw new BaseException(CodeEnum.SITE_NAME_REPETITION);
}
site.setSiteName(updateSite.getSiteName()); site.setSiteName(updateSite.getSiteName());
} }
if (ObjectUtil.isNotNull(updateSite.getLongitude())) { if (ObjectUtil.isNotNull(updateSite.getLongitude())) {
@ -219,7 +237,6 @@ public class SiteService implements ISiteService {
/** /**
* 下载商户下的所有场所的二维码 * 下载商户下的所有场所的二维码
*
* @param businessId * @param businessId
* @return * @return
*/ */

1
util/src/main/java/com/ccsens/util/CodeEnum.java

@ -101,6 +101,7 @@ public enum CodeEnum {
ANIMAL_HEAT_ERROR(84,"体温异常,请选择正确的健康状态",true), ANIMAL_HEAT_ERROR(84,"体温异常,请选择正确的健康状态",true),
NOT_BUSINESS(85,"未找到商户信息",true), NOT_BUSINESS(85,"未找到商户信息",true),
SITE_EXCEED(86,"您所添加的场所数量已超出上限,请联系客服提高场所上限",true), SITE_EXCEED(86,"您所添加的场所数量已超出上限,请联系客服提高场所上限",true),
SITE_NAME_REPETITION(86,"场所名重复",true),
; ;
public CodeEnum addMsg(String msg){ public CodeEnum addMsg(String msg){

15
util/src/main/java/com/ccsens/util/QrCodeUtil.java

@ -47,12 +47,21 @@ public class QrCodeUtil {
* 根据文件路径生成二维码(可以调整大小) * 根据文件路径生成二维码(可以调整大小)
* @param url * @param url
* @param parentPath * @param parentPath
* @param type 图片类型0缩略图 1打印图
* @return * @return
* @throws IOException * @throws IOException
*/ */
public static String urlToQRCodeWithSize(String url, String parentPath,Integer size) throws IOException { public static String urlToQRCodeWithSize(String url, String parentPath,int type) throws IOException {
size = size == null ? 200 : size; String name = System.currentTimeMillis()+"";
String fileName = "qrCode/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".png"; 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(); ByteArrayOutputStream stream = QRCode.from(url).to(ImageType.BMP).withSize(size,size).stream();
byte[] codeByte = stream.toByteArray(); byte[] codeByte = stream.toByteArray();
File file = new File(parentPath, fileName); File file = new File(parentPath, fileName);

16
util/src/test/java/com/ccsens/util/TestQrCord.java

@ -1,6 +1,7 @@
package com.ccsens.util; package com.ccsens.util;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ZipUtil;
import net.glxn.qrgen.core.image.ImageType; import net.glxn.qrgen.core.image.ImageType;
import net.glxn.qrgen.javase.QRCode; import net.glxn.qrgen.javase.QRCode;
import org.junit.Test; import org.junit.Test;
@ -10,6 +11,10 @@ import java.io.*;
public class TestQrCord { public class TestQrCord {
/**
* 生成二维码设置大小
* @throws Exception
*/
@Test @Test
public void test01() throws Exception { public void test01() throws Exception {
String fileName = "zzz/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".png"; 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");
}
} }

Loading…
Cancel
Save