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.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<Site> 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<Site> 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
*/

1
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){

15
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);

16
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");
}
}

Loading…
Cancel
Save