diff --git a/boot-service/pom.xml b/boot-service/pom.xml
index 2698e50..8b155c3 100644
--- a/boot-service/pom.xml
+++ b/boot-service/pom.xml
@@ -55,6 +55,17 @@
jedis
2.7.3
+
+
+ com.google.zxing
+ core
+ ${zxing.version}
+
+
+ com.google.zxing
+ javase
+ ${zxing.version}
+
javax.servlet
diff --git a/boot-service/src/main/java/com/xwbing/entity/Trace.java b/boot-service/src/main/java/com/xwbing/entity/ExpressTrace.java
similarity index 89%
rename from boot-service/src/main/java/com/xwbing/entity/Trace.java
rename to boot-service/src/main/java/com/xwbing/entity/ExpressTrace.java
index 0bbba12..acb66a1 100644
--- a/boot-service/src/main/java/com/xwbing/entity/Trace.java
+++ b/boot-service/src/main/java/com/xwbing/entity/ExpressTrace.java
@@ -9,7 +9,7 @@ import lombok.Data;
* 说明: 快递追踪信息
*/
@Data
-public class Trace {
+public class ExpressTrace {
private String AcceptTime;
private String AcceptStation;
}
diff --git a/boot-service/src/main/java/com/xwbing/entity/vo/ExpressInfoVo.java b/boot-service/src/main/java/com/xwbing/entity/vo/ExpressInfoVo.java
index 2ff57c1..9cdf466 100644
--- a/boot-service/src/main/java/com/xwbing/entity/vo/ExpressInfoVo.java
+++ b/boot-service/src/main/java/com/xwbing/entity/vo/ExpressInfoVo.java
@@ -1,6 +1,6 @@
package com.xwbing.entity.vo;
-import com.xwbing.entity.Trace;
+import com.xwbing.entity.ExpressTrace;
import lombok.Data;
import java.util.List;
@@ -29,7 +29,7 @@ public class ExpressInfoVo {
/**
* 物流信息
*/
- private List traces;
+ private List expressTraces;
/**
* 描述
*/
diff --git a/boot-service/src/main/java/com/xwbing/service/ExpressDeliveryService.java b/boot-service/src/main/java/com/xwbing/service/ExpressDeliveryService.java
index 1d76b7e..7eb8fb6 100644
--- a/boot-service/src/main/java/com/xwbing/service/ExpressDeliveryService.java
+++ b/boot-service/src/main/java/com/xwbing/service/ExpressDeliveryService.java
@@ -70,7 +70,7 @@ public class ExpressDeliveryService {
String requestData = "{'ShipperCode':'" + info.getShipperCode() + "','LogisticCode':'" + info.getLogisticCode() + "'}";
Map params = new HashMap<>();
try {
- params.put("RequestData", urlEncoder(requestData, "UTF-8"));
+ params.put("RequestData", KdniaoUtil.urlEncoder(requestData, "UTF-8"));
params.put("EBusinessID", EBusinessID);
params.put("RequestType", "1002");
String dataSign = KdniaoUtil.encrypt(requestData, appKey, "UTF-8");
@@ -79,6 +79,7 @@ public class ExpressDeliveryService {
} catch (Exception e) {
logger.error("快递查询出错:{}", e.getMessage());
throw new BusinessException("快递查询出错");
+
}
// 返回物流信息
// status: 0|null 无信息 1已取件 2在途中 3已签收 4问题件 5待取件 6待派件 8已发货 9未发货
@@ -93,7 +94,7 @@ public class ExpressDeliveryService {
int statusValue = Integer.valueOf(status);
CommonEnum.ExpressStatusEnum expressStatus = Arrays.stream(CommonEnum.ExpressStatusEnum.values()).filter(obj -> obj.getValue() == statusValue).findFirst().get();
infoVo.setDescribe(expressStatus.getName());
- // TODO: 2017/11/17 根据公司业务处理返回的信息......
+ // TODO: 2017/11/16 根据公司业务处理返回的信息......
}
return infoVo;
}
diff --git a/boot-service/src/main/java/com/xwbing/service/QRcodeZipService.java b/boot-service/src/main/java/com/xwbing/service/QRcodeZipService.java
new file mode 100644
index 0000000..2f4737f
--- /dev/null
+++ b/boot-service/src/main/java/com/xwbing/service/QRcodeZipService.java
@@ -0,0 +1,128 @@
+package com.xwbing.service;
+
+import com.xwbing.exception.BusinessException;
+import com.xwbing.util.QRCodeUtils;
+import com.xwbing.util.RestMessage;
+import com.xwbing.util.ZipUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 项目名称: boot-module-demo
+ * 创建时间: 2017/11/17 13:36
+ * 作者: xiangwb
+ * 说明:
+ */
+@Service
+public class QRcodeZipService {
+ private final Logger logger = LoggerFactory.getLogger(QRcodeZipService.class);
+
+ /**
+ * 生成默认长度的二维码
+ *
+ * @param name 图片名
+ * @param text 二维码内容
+ * @return
+ */
+ public RestMessage createQRCode(String name, String text) {
+ RestMessage result = new RestMessage();
+ String path = getPath();
+ File output = new File(path + File.separator + name + ".png");
+ QRCodeUtils.createCode(text, output);
+ result.setSuccess(true);
+ result.setMessage("生成二维码成功");
+ return result;
+ }
+
+ /**
+ * 解析二维码
+ *
+ * @param file
+ * @return
+ */
+ public RestMessage decode(File file) {
+ RestMessage result = new RestMessage();
+ try {
+ String decode = QRCodeUtils.decode(file);
+ result.setData(decode);
+ result.setSuccess(true);
+ result.setMessage("解析二维码成功");
+ return result;
+ } catch (Exception e) {
+ logger.error("解析二维码失败");
+ throw new BusinessException("解析二维码失败");
+ }
+ }
+
+ /**
+ * 获取图片zip
+ *
+ * @return
+ */
+ public RestMessage batchGetImage(HttpServletResponse response, String[] names, String fileName) {
+ List files = new ArrayList<>();
+ if (names.length == 0)
+ throw new BusinessException("请选择要导出的图片");
+ Arrays.stream(names).forEach(name -> {
+ File file = getFile(name);
+ if (file != null && file.length() > 0) {
+ files.add(file);
+ }
+ });
+ return zipFile(response, files, fileName);
+ }
+
+ /**
+ * 根据文件名获取图片
+ *
+ * @param name
+ * @return
+ */
+ private File getFile(String name) {
+ String path = getPath();
+ File output = new File(path + File.separator + name + ".png");
+ if (output.exists()) {
+ return output;
+ }
+ return null;
+ }
+
+ /**
+ * 获取pic路径
+ *
+ * @return
+ */
+ private String getPath() {
+ ClassPathResource pic = new ClassPathResource("file");
+ String absolutePath;
+ try {
+ absolutePath = pic.getFile().getAbsolutePath();
+ } catch (IOException e) {
+ throw new BusinessException("获取图片路径错误");
+ }
+ return absolutePath;
+ }
+
+ /**
+ * 导出文件
+ *
+ * @return
+ */
+ private RestMessage zipFile(HttpServletResponse response, List files, String fileName) {
+ RestMessage restMessage = new RestMessage();
+ String path = getPath();
+ ZipUtil.zipFile(response, files, path, fileName);
+ restMessage.setSuccess(true);
+ restMessage.setMessage("导出zip文件成功");
+ return restMessage;
+ }
+}
diff --git a/boot-service/src/main/java/com/xwbing/util/JSONUtil.java b/boot-service/src/main/java/com/xwbing/util/JSONUtil.java
index dfa2917..5f84397 100644
--- a/boot-service/src/main/java/com/xwbing/util/JSONUtil.java
+++ b/boot-service/src/main/java/com/xwbing/util/JSONUtil.java
@@ -24,6 +24,8 @@ public class JSONUtil {
public static Object beanToMap(Object obj) {
if (obj == null)
return null;
+ if (obj instanceof String)
+ return obj;
if (obj instanceof List) {
List> list = (List>) obj;
ArrayList result = new ArrayList<>();
diff --git a/boot-service/src/main/java/com/xwbing/util/KdniaoUtil.java b/boot-service/src/main/java/com/xwbing/util/KdniaoUtil.java
index 22856b6..323000f 100644
--- a/boot-service/src/main/java/com/xwbing/util/KdniaoUtil.java
+++ b/boot-service/src/main/java/com/xwbing/util/KdniaoUtil.java
@@ -28,8 +28,7 @@ public class KdniaoUtil {
StringBuilder result = new StringBuilder();
try {
URL realUrl = new URL(url);
- HttpURLConnection conn = (HttpURLConnection) realUrl
- .openConnection();
+ HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
@@ -38,10 +37,8 @@ public class KdniaoUtil {
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
- conn.setRequestProperty("user-agent",
- "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
- conn.setRequestProperty("Content-Type",
- "application/x-www-form-urlencoded");
+ conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+ conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.connect();
// 获取URLConnection对象对应的输出流
out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
@@ -63,8 +60,7 @@ public class KdniaoUtil {
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
- in = new BufferedReader(new InputStreamReader(
- conn.getInputStream(), "UTF-8"));
+ in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line;
while ((line = in.readLine()) != null) {
result.append(line);
diff --git a/boot-service/src/main/java/com/xwbing/util/QRCodeUtils.java b/boot-service/src/main/java/com/xwbing/util/QRCodeUtils.java
new file mode 100644
index 0000000..80ec9ee
--- /dev/null
+++ b/boot-service/src/main/java/com/xwbing/util/QRCodeUtils.java
@@ -0,0 +1,285 @@
+package com.xwbing.util;
+
+import com.google.zxing.*;
+import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
+import com.google.zxing.client.j2se.MatrixToImageWriter;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.common.HybridBinarizer;
+import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+import org.apache.commons.io.output.ByteArrayOutputStream;
+
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.FileSystems;
+import java.nio.file.Path;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+
+/**
+ * 项目名称: boot-module-demo
+ * 创建时间: 2017/11/17 11:43
+ * 作者: xiangwb
+ * 说明: 二维码工具类
+ */
+public class QRCodeUtils {
+ private static QRCodeUtils.Internal internal = new QRCodeUtils.Internal();
+
+ /***
+ * 生成默认尺寸不带logo的二维码
+ * @param text 二维码内容
+ * @param output 图片文件
+ */
+ public static void createCode(String text, File output) {
+ createCode(text, 200, 200, output);
+ }
+
+ /**
+ * 自定义尺寸不带logo的二维码
+ *
+ * @param text 二维码内容
+ * @param width 宽
+ * @param height 高
+ * @param output 图片文件
+ */
+ public static void createCode(String text, int width, int height, File output) {
+ try {
+ System.out.println(output.getParentFile().getAbsolutePath());
+ internal._codeHeight = height;
+ internal._codeWidth = width;
+ internal._output = output;
+ internal.output(output, internal.createCode(text));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 生成默认尺寸带logo的二维码
+ *
+ * @param url 二维码
+ * @param logoImg
+ * @param text
+ */
+ public static void createCodeLogo(String url, InputStream logoImg, String text) {
+ createCodeLogo(url, 200, 200, logoImg, text, 14);
+ }
+
+ /**
+ * 生成自定义尺寸带logo的二维码
+ *
+ * @param text
+ * @param width
+ * @param height
+ * @param logoImg
+ */
+ public static InputStream createCodeLogo(String url, int width, int height, InputStream logoImg, String text, int size) {
+ try {
+ internal._codeHeight = height;
+ internal._codeWidth = width;
+ internal._logoImg = logoImg;
+ internal._text = text;
+ internal._fontSize = size;
+ BitMatrix bitMatrix = internal.createCode(url);
+ return internal.addMaterial(bitMatrix);
+ //internal.output(output, bitMatrix);
+ } catch (WriterException e) {
+ e.printStackTrace();
+ return null;
+ }
+
+ }
+
+ /**
+ * 解析二维码图片
+ *
+ * @param file
+ * @return
+ * @throws Exception
+ */
+ public static String decode(File file) throws Exception {
+ if (file == null) {
+ return null;
+ }
+ MultiFormatReader formatReader = new MultiFormatReader();
+ BufferedImage image = ImageIO.read(file);
+ BufferedImageLuminanceSource source = new BufferedImageLuminanceSource(image);
+ BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(source));
+ Hashtable hints = new Hashtable<>();
+ hints.put(DecodeHintType.CHARACTER_SET, "utf-8");
+ Result result = formatReader.decode(binaryBitmap, hints);
+ return result.getText();
+
+ }
+
+ private static class Internal {
+ // 二维码大小
+ private int _codeWidth;
+ private int _codeHeight;
+ //二维码导出位置
+ private File _output;
+ /**
+ * logo文件流,二维码文本
+ */
+ private InputStream _logoImg;
+ private String _text;
+ private int _fontSize;
+ //logo大小
+ private int _logoWidth;
+ private int _logoHeight;
+ //logo x,y坐标
+ private int _logoX;
+ private int _logoY;
+ //文字x,y坐标
+ private int _textX;
+ private int _textY;
+ //图像类型
+ private final String _format = "png";
+
+ private BitMatrix createCode(String url) throws WriterException {
+ Map hints = new HashMap<>();
+ hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
+ hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
+ BitMatrix encode = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, _codeWidth, _codeHeight, hints);// 生成矩阵
+ return encode;
+ }
+
+ /***
+ * 输出生成的二维码
+ * @param output
+ * @param bitMatrix
+ * @throws IOException
+ */
+ private void output(File output, BitMatrix bitMatrix) throws IOException {
+ Path path = FileSystems.getDefault().getPath(output.getParentFile().getAbsolutePath(), output.getName());
+ MatrixToImageWriter.writeToPath(bitMatrix, _format, path);// 输出图像
+ }
+
+ /***
+ * 输出带特殊需求的二维码
+ * @throws IOException
+ */
+ private void output(BufferedImage image) throws IOException {
+ if (!ImageIO.write(image, _format, _output)) {
+ throw new IOException("Could not write an image of format " + _format + " to " + _output);
+ }
+ }
+
+ /**
+ * 在二维码基础上添加需求
+ *
+ * @param bitMatrix
+ */
+ private InputStream addMaterial(BitMatrix bitMatrix) {
+ try {
+ BufferedImage image = toBufferedImage(bitMatrix);
+ //计算高宽
+ computeWidthHeight();
+ //定位logo
+ image = position_logo(image);
+ //定位文字
+ image = position_text(image);
+ //生成二维码
+ //output(image);
+ //转InputStream
+ return bufferImage_to_InputStream(image);
+ } catch (IOException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ private BufferedImage position_text(BufferedImage image) {
+ Graphics2D gh = image.createGraphics();
+ gh.setColor(Color.black);
+ //如果linux上没有该字体的话,会出现类似乱码的情况
+ //Font.SANS_SERIF
+ gh.setFont(new Font("Microsoft YaHei", Font.BOLD, _fontSize));
+ gh.setComposite(AlphaComposite.getInstance(
+ AlphaComposite.SRC_IN, 1.0f));
+ gh.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+ RenderingHints.VALUE_ANTIALIAS_ON);
+ gh.drawString(_text, 20, _fontSize);
+ return image;
+ }
+
+ /**
+ * 定位logo
+ */
+ private BufferedImage position_logo(BufferedImage image) throws IOException {
+ Graphics2D gs = image.createGraphics();
+ //载入logo
+ BufferedImage logo = changeWidthHeight();
+ gs.drawImage(logo, _logoX, _logoY, null);
+ gs.dispose();
+ logo.flush();
+ return image;
+ }
+
+ /**
+ * 改变图片大小
+ *
+ * @return
+ * @throws IOException
+ */
+ private BufferedImage changeWidthHeight() throws IOException {
+ BufferedImage img = ImageIO.read(_logoImg);
+ BufferedImage newLogo = new BufferedImage(_logoWidth, _logoHeight, BufferedImage.TYPE_INT_BGR);
+ Graphics graphics = newLogo.createGraphics();
+ graphics.drawImage(img, 0, 0, _logoWidth, _logoHeight, null);
+ graphics.setColor(Color.white);
+ graphics.drawRect(0, 0, _logoWidth - 1, _logoHeight - 1);
+ graphics.drawRect(1, 1, _logoWidth - 1, _logoHeight - 1);
+ graphics.drawRect(0, 0, _logoWidth - 2, _logoHeight - 2);
+ img.flush();
+ return newLogo;
+ }
+
+ private void computeWidthHeight() {
+ //计算logo大小
+ _logoHeight = _codeHeight * 2 / 10;
+ _logoWidth = _codeWidth * 2 / 10;
+ //计算logo坐标
+ _logoX = (_codeWidth - _logoWidth) / 2;
+ _logoY = (_codeHeight - _logoHeight) / 2;
+ }
+
+
+ /**
+ * BitMatrix转BufferedImage
+ *
+ * @param matrix
+ * @return
+ */
+ private BufferedImage toBufferedImage(BitMatrix matrix) {
+ BufferedImage image = new BufferedImage(matrix.getWidth(), matrix.getHeight(), BufferedImage.TYPE_INT_RGB);
+ for (int x = 0; x < matrix.getWidth(); x++) {
+ for (int y = 0; y < matrix.getHeight(); y++) {
+ image.setRGB(x, y, matrix.get(x, y) ? Color.BLACK.getRGB() : Color.WHITE.getRGB());
+ }
+ }
+ return image;
+ }
+
+ private InputStream bufferImage_to_InputStream(BufferedImage image) throws IOException {
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ ImageIO.write(image, _format, os);
+ return new ByteArrayInputStream(os.toByteArray());
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+// String tomcatHome = System.getProperty("catalina.home");
+// String name="QRcode";
+// File output=new File(tomcatHome+File.separator+"file"+File.separator+name+".png");
+ File output = new File("C:/Users/10232/Desktop/xwbing.png");
+ createCode("xwbing", 500, 500, output);//text即QRcode
+ String decode = decode(output);
+ }
+}
+
diff --git a/boot-service/src/main/java/com/xwbing/util/ZipUtil.java b/boot-service/src/main/java/com/xwbing/util/ZipUtil.java
new file mode 100644
index 0000000..b54895f
--- /dev/null
+++ b/boot-service/src/main/java/com/xwbing/util/ZipUtil.java
@@ -0,0 +1,95 @@
+package com.xwbing.util;
+
+import com.xwbing.exception.BusinessException;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+/**
+ * 项目名称: boot-module-demo
+ * 创建时间: 2017/11/17 14:24
+ * 作者: xiangwb
+ * 说明:
+ */
+public class ZipUtil {
+ /**
+ * @param response 响应
+ * @param files 所有文件
+ * @param fileName 文件名
+ */
+ public static void zipFile(HttpServletResponse response, List files, String path, String fileName) {
+ try {
+ //classpath下有file文件夹
+ File zipFile = new File(path + File.separator + fileName + ".zip");
+ if (!zipFile.exists()) {
+ zipFile.createNewFile();
+ }
+ FileOutputStream fos = new FileOutputStream(zipFile);
+ ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(fos));
+ FileInputStream fis;
+ BufferedInputStream bis;
+ byte[] data = new byte[1024 * 10];
+ if (files != null && files.size() > 0) {
+ for (File file : files) {
+ String name = file.getName();
+ //创建ZIP实体,并添加进压缩包
+ ZipEntry zipEntry = new ZipEntry(name);
+ zos.putNextEntry(zipEntry);
+ //读取待压缩的文件并写进压缩包里
+ fis = new FileInputStream(file);
+ bis = new BufferedInputStream(fis);
+ int d;
+ while ((d = bis.read(data, 0, 1024 * 10)) != -1) {
+ zos.write(data, 0, d);
+ }
+ bis.close();
+ fis.close();
+ }
+ }
+ zos.close();
+ // 输出到客户端
+ OutputStream out = response.getOutputStream();
+ response.reset();
+ response.setCharacterEncoding("UTF-8");
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".zip");//在消息头里命名输出的zip文件夹名称
+ response.setContentType("application/octet-stream; charset=utf-8");
+ out.write(toByte(zipFile));
+// out.flush();
+ out.close();
+ zipFile.delete();
+ } catch (Exception e) {
+ throw new BusinessException("文件压缩错误");
+ }
+ }
+
+ /**
+ * 文件转换byte字节数组
+ *
+ * @param file
+ * @return
+ */
+ private static byte[] toByte(File file) {
+ {
+ byte[] bytes;
+ try {
+ FileInputStream fis = new FileInputStream(file);
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ byte[] data = new byte[1024 * 10];
+ int len;
+ while ((len = fis.read(data)) != -1) {
+ bos.write(data, 0, len);
+ }
+ bytes = bos.toByteArray();
+ fis.close();
+ bos.close();
+ } catch (IOException e) {
+ throw new BusinessException("文件转化错误");
+ }
+ return bytes;
+ }
+ }
+}
+
diff --git a/boot-service/src/main/resources/kdniao.properties b/boot-service/src/main/resources/kdniao.properties
index 4e34a29..08cd193 100644
--- a/boot-service/src/main/resources/kdniao.properties
+++ b/boot-service/src/main/resources/kdniao.properties
@@ -1,5 +1,6 @@
#---------------¿ìµÝÄñconfig----------------
-###------------IDºÍKeyÇ뵽¹ÙÍøÉêÇ룺http://www.kdniao.com/ServiceApply.aspx-------------###
+###------------IDºÍKeyÇ뵽¹ÙÍøÉêÇë:http://www.kdniao.com/ServiceApply.aspx-------------###
+###------------Ïà¹ØÎĵµ:http://www.kdniao.com/documents-------------###
EBusinessID=1255383
appKey=94f7286a-8ae5-4394-8809-26dd645e82ca
reqURL=http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx
diff --git a/boot-web/src/main/java/com/xwbing/controller/MailTestControl.java b/boot-web/src/main/java/com/xwbing/controller/MailTestControl.java
index 61dc22e..bc14e2d 100644
--- a/boot-web/src/main/java/com/xwbing/controller/MailTestControl.java
+++ b/boot-web/src/main/java/com/xwbing/controller/MailTestControl.java
@@ -60,7 +60,7 @@ public class MailTestControl {
@GetMapping("sendInlineResourceMail")
@ApiOperation(value = "发送文本内嵌图片邮件")
public JSONObject sendInlineResourceMail() {
- String rscId = "pic";
+ String rscId = "file";
String content = "这是有图片的邮件:
";
String imgPath = "C:\\Users\\admin\\Desktop\\0000001.png";
RestMessage restMessage = mailService.sendInlineResourceMail("786461501@qq.com", "内嵌图片测试邮件", content, imgPath, rscId);
diff --git a/boot-web/src/main/java/com/xwbing/controller/TestControl.java b/boot-web/src/main/java/com/xwbing/controller/TestControl.java
index c456eeb..d0fadfe 100644
--- a/boot-web/src/main/java/com/xwbing/controller/TestControl.java
+++ b/boot-web/src/main/java/com/xwbing/controller/TestControl.java
@@ -6,7 +6,9 @@ import com.xwbing.entity.ExpressInfo;
import com.xwbing.entity.vo.ExpressInfoVo;
import com.xwbing.redis.RedisService;
import com.xwbing.service.ExpressDeliveryService;
+import com.xwbing.service.QRcodeZipService;
import com.xwbing.util.JSONObjResult;
+import com.xwbing.util.RestMessage;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@@ -14,6 +16,8 @@ import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
import java.util.List;
/**
@@ -30,6 +34,8 @@ public class TestControl {
private RedisService redisService;
@Resource
private ExpressDeliveryService expressDeliveryService;
+ @Resource
+ private QRcodeZipService QRcodeZipService;
private final Logger logger = LoggerFactory.getLogger(TestControl.class);
@LogInfo("redis功能测试")
@@ -54,7 +60,6 @@ public class TestControl {
return JSONObjResult.toJSONObj(list, true, "");
}
-
@LogInfo("快递查询")
@PostMapping("expressInfo")
public JSONObject getExpressInfo(@RequestBody ExpressInfo info) {
@@ -63,4 +68,30 @@ public class TestControl {
ExpressInfoVo infoVo = expressDeliveryService.queryOrderTraces(info);
return JSONObjResult.toJSONObj(infoVo, true, "查询快递信息成功");
}
+
+ @LogInfo("生成二维码")//为什么内置tomcat会重启
+ @PostMapping("createQRCode")
+ public JSONObject createQRCode(@RequestParam String name, @RequestParam String text) {
+ RestMessage qrCode = QRcodeZipService.createQRCode(name, text);
+ return JSONObjResult.toJSONObj(qrCode);
+ }
+
+ @LogInfo("解析二维码")
+ @GetMapping("decode")
+ public JSONObject decode(@RequestParam String path) {
+ if (StringUtils.isEmpty(path))
+ return JSONObjResult.toJSONObj("二维码图片路径不能为空");
+ File file = new File(path);
+ RestMessage decode = QRcodeZipService.decode(file);
+ return JSONObjResult.toJSONObj(decode);
+ }
+
+ @LogInfo("导出zip")
+ @GetMapping("batchGetImage")
+ public JSONObject batchGetImage(HttpServletResponse response, @RequestParam String[] names, @RequestParam String fileName) {
+ if (StringUtils.isEmpty(fileName))
+ return JSONObjResult.toJSONObj("zip名称不能为空");
+ RestMessage restMessage = QRcodeZipService.batchGetImage(response, names, fileName);
+ return JSONObjResult.toJSONObj(restMessage);
+ }
}
diff --git a/boot-web/src/main/resources/file/0000001.png b/boot-web/src/main/resources/file/0000001.png
new file mode 100644
index 0000000..7a16c01
Binary files /dev/null and b/boot-web/src/main/resources/file/0000001.png differ
diff --git a/pom.xml b/pom.xml
index d44ade2..27bbd59 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,6 +37,7 @@
1.8
1.3.1
1.16.16
+ 3.2.1
true
2.4.0