Browse Source

代码迁移实体类

master
wanggongfeng 4 years ago
parent
commit
c0123458bd
  1. 6
      epdc-commons-tools/pom.xml
  2. 2
      epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/NumConstant.java
  3. 10
      epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/PointsConstant.java
  4. 4
      epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/StrConstant.java
  5. 7
      epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/pointsenum/PointsOperationModeEnum.java
  6. 26
      epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/FileUtils.java
  7. 224
      epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/QrCodeUtils.java

6
epdc-commons-tools/pom.xml

@ -22,6 +22,7 @@
<fastjson.version>1.2.59</fastjson.version> <fastjson.version>1.2.59</fastjson.version>
<jsoup.version>1.11.3</jsoup.version> <jsoup.version>1.11.3</jsoup.version>
<lombok.version>1.18.4</lombok.version> <lombok.version>1.18.4</lombok.version>
<zxing.version>3.3.0</zxing.version>
</properties> </properties>
<dependencies> <dependencies>
@ -127,6 +128,11 @@
<version>0.7.0</version> <version>0.7.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>${zxing.version}</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

2
epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/NumConstant.java

@ -66,4 +66,6 @@ public interface NumConstant {
int TWO_HUNDRED = 200; int TWO_HUNDRED = 200;
int ONE_THOUSAND = 1000; int ONE_THOUSAND = 1000;
int ONE_HUNDRED_EIGHTY = 180;
} }

10
epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/PointsConstant.java

@ -15,4 +15,14 @@ public interface PointsConstant {
* 手动调整积分动作编码 * 手动调整积分动作编码
*/ */
String behaviorCodeCode ="hand_regulation_behavior"; String behaviorCodeCode ="hand_regulation_behavior";
/**
* 积分规则编码-工作端-扫码兑换码-积分核销
*/
String ruleWorkScanCodePointsVerification ="rule_points_exchange";
/**
* 积分动作编码-工作端-扫码兑换码-积分核销
*/
String behaviorWorkScanCodePointsVerification ="points_exchange";
} }

4
epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/StrConstant.java

@ -53,4 +53,8 @@ public interface StrConstant {
* 下划线 * 下划线
*/ */
String UNDERSCORE = "_"; String UNDERSCORE = "_";
String SUFFIX_IMG_PNG = "png";
String DOT = ".";
} }

7
epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/pointsenum/PointsOperationModeEnum.java

@ -20,7 +20,12 @@ public enum PointsOperationModeEnum {
/** /**
* sys-系统操作 * sys-系统操作
*/ */
OPERATION_MODE_SYS("sys"); OPERATION_MODE_SYS("sys"),
/**
* 工作端-扫描兑换码-积分核销
*/
OPERATION_MODE_WORK_JFHX("work_jfhx");
private String operationMode; private String operationMode;

26
epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/FileUtils.java

@ -1,10 +1,14 @@
package com.elink.esua.epdc.commons.tools.utils; package com.elink.esua.epdc.commons.tools.utils;
import com.elink.esua.epdc.commons.tools.constant.NumConstant; import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import org.apache.commons.lang3.StringUtils;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException;
/** /**
* 文件操作工具 * 文件操作工具
@ -73,4 +77,26 @@ public class FileUtils {
path.delete(); path.delete();
} }
} }
/**
* BufferedImage文件转为byte[]
*
* @param bImage 图片
* @param formatName 格式 e.g. png
* @return byte[]
* @author work@yujt.net.cn
* @date 2020/8/7 13:30
*/
public static byte[] imageToBytes(BufferedImage bImage, String formatName) {
if (null == bImage || StringUtils.isBlank(formatName)) {
return null;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
ImageIO.write(bImage, formatName, out);
} catch (IOException e) {
//log.error(e.getMessage());
}
return out.toByteArray();
}
} }

224
epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/QrCodeUtils.java

@ -0,0 +1,224 @@
package com.elink.esua.epdc.commons.tools.utils;
import com.elink.esua.epdc.commons.tools.constant.StrConstant;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.CharEncoding;
import org.apache.commons.lang3.StringUtils;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.util.Hashtable;
/**
* 二维码工具类
*
* @author yujintao
* @date 2018/11/12 14:49
*/
@Slf4j
public class QrCodeUtils {
/**
* 二维码尺寸
*/
private static final int QRCODE_SIZE = 800;
/**
* 生成二维码图片并转为byte[]
*
* @param content 二维码内的信息
* @param imgPath logo地址
* @param needCompress 是否压缩logo
* @return java.awt.image.BufferedImage
* @author work@yujt.net.cn
* @date 2020/8/7 10:58
*/
public static byte[] encodeByByte(String content, String imgPath, boolean needCompress) {
return FileUtils.imageToBytes(encodeByImage(content, imgPath, needCompress), StrConstant.SUFFIX_IMG_PNG);
}
/**
* 生成二维码图片
*
* @param content 二维码内的信息
* @param imgPath logo地址
* @param needCompress 是否压缩logo
* @return java.awt.image.BufferedImage
* @author work@yujt.net.cn
* @date 2020/8/7 10:58
*/
public static BufferedImage encodeByImage(String content, String imgPath, boolean needCompress) {
BufferedImage image = null;
try {
image = QrCodeUtils.createImage(content, imgPath, needCompress);
} catch (Exception e) {
log.error("创建二维码失败,\n content={} \n imagePath={}", content, imgPath);
}
return image;
}
/**
* 生成二维码(内嵌LOGO)选择是否压缩logo直接存入指定文件目录
*
* @param content 内容
* @param imgPath LOGO地址
* @param destPath 存放目录
* @param needCompress 是否压缩LOGO
* @throws Exception
*/
public static void encode(String content, String imgPath, String destPath, boolean needCompress) throws Exception {
BufferedImage image = QrCodeUtils.createImage(content, imgPath, needCompress);
mkdirs(destPath);
ImageIO.write(image, StrConstant.SUFFIX_IMG_PNG, new File(destPath));
}
/**
* 生成二维码(内嵌LOGO)不压缩logo直接存入指定目录
*
* @param content 内容
* @param imgPath LOGO地址
* @param destPath 存储地址
* @throws Exception
*/
public static void encode(String content, String imgPath, String destPath) throws Exception {
QrCodeUtils.encode(content, imgPath, destPath, false);
}
/**
* 生成二维码不插入logo
*
* @param content 内容
* @param destPath 存储地址
* @throws Exception
*/
public static void encode(String content, String destPath) throws Exception {
QrCodeUtils.encode(content, null, destPath, false);
}
/**
* 生成二维码(内嵌LOGO)
*
* @param content 内容
* @param imgPath LOGO地址
* @param output 输出流
* @param needCompress 是否压缩LOGO
* @throws Exception
*/
public static void encode(String content, String imgPath, OutputStream output, boolean needCompress)
throws Exception {
BufferedImage image = QrCodeUtils.createImage(content, imgPath, needCompress);
ImageIO.write(image, StrConstant.SUFFIX_IMG_PNG, output);
}
/**
* 生成二维码
*
* @param content 内容
* @param output 输出流
* @throws Exception
*/
public static void encode(String content, OutputStream output) throws Exception {
QrCodeUtils.encode(content, null, output, false);
}
private static BufferedImage createImage(String content, String imgPath, boolean needCompress) throws Exception {
Hashtable<EncodeHintType, Object> hints = new Hashtable();
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
hints.put(EncodeHintType.CHARACTER_SET, CharEncoding.UTF_8);
hints.put(EncodeHintType.MARGIN, 1);
BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE,
hints);
int width = bitMatrix.getWidth();
int height = bitMatrix.getHeight();
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);
}
}
if (StringUtils.isBlank(imgPath)) {
return image;
}
// 插入logo图片
QrCodeUtils.insertImage(image, imgPath, needCompress);
return image;
}
/**
* 插入LOGO
*
* @param source 二维码图片
* @param imgPath LOGO图片地址
* @param needCompress 是否压缩
* @throws Exception
*/
private static void insertImage(BufferedImage source, String imgPath, boolean needCompress) throws Exception {
URL url = new URL(imgPath);
InputStream is = url.openConnection().getInputStream();
Image src = ImageIO.read(is);
int width = src.getWidth(null);
int height = src.getHeight(null);
// 压缩LOGO
if (needCompress) {
// 限制最大LOGO宽度
int maxWidth = QRCODE_SIZE / 4;
// 限制最大LOGO高度
int maxHeight = QRCODE_SIZE / 4;
if (width > maxWidth) {
width = maxWidth;
}
if (height > maxHeight) {
height = maxHeight;
}
Image image = src.getScaledInstance(width, height, Image.SCALE_SMOOTH);
BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
// 绘制缩小后的图
g.drawImage(image, 0, 0, null);
g.dispose();
src = image;
}
// 插入LOGO
Graphics2D graph = source.createGraphics();
int x = (QRCODE_SIZE - width) / 2;
int y = (QRCODE_SIZE - height) / 2;
graph.drawImage(src, x, y, width, height, null);
Shape shape = new RoundRectangle2D.Float(x, y, width, width, 6, 6);
graph.setStroke(new BasicStroke(3f));
graph.draw(shape);
graph.dispose();
}
/**
* 当文件夹不存在时mkdirs会自动创建多层目录区别于mkdir(mkdir如果父目录不存在则会抛出异常)
*
* @param destPath 存放目录
* @author lanyuan Email: mmm333zzz520@163.com
* @date 2013-12-11 上午10:16:36
*/
private static void mkdirs(String destPath) {
File file = new File(destPath);
// 当文件夹不存在时,mkdirs会自动创建多层目录,区别于mkdir.(mkdir如果父目录不存在则会抛出异常)
if (!file.exists() && !file.isDirectory()) {
file.mkdirs();
}
}
}
Loading…
Cancel
Save