|
|
|
@@ -151,7 +151,7 @@ public class QrCodeServiceImpl implements QrCodeService { |
|
|
|
exportQrcode(request, response, |
|
|
|
tenantId, type, pageUrl, sceneParam, |
|
|
|
withText, text1, text2, |
|
|
|
name,false); |
|
|
|
name); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error(e.getMessage()); |
|
|
|
throw new MallinkException(Result.ERROR, "下载异常"); |
|
|
|
@@ -162,7 +162,7 @@ public class QrCodeServiceImpl implements QrCodeService { |
|
|
|
public ResultData exportQrcode(HttpServletRequest request, HttpServletResponse response, |
|
|
|
String tenantId, int type, String pageUrl, String sceneParam, |
|
|
|
int withText, String text1, String text2, |
|
|
|
String name, boolean upload) { |
|
|
|
String name) { |
|
|
|
// type 0 有限二维码, 1 无限制二维码 |
|
|
|
// withText 0 不带字 1. 带下面的字,2 带下面的两行字 |
|
|
|
WxAppinfo appinfo = wxAppinfoService.getCAppInfo(tenantId); |
|
|
|
@@ -198,35 +198,73 @@ public class QrCodeServiceImpl implements QrCodeService { |
|
|
|
try { |
|
|
|
if(type == 0) { |
|
|
|
final File codeFile = wxMaService.getQrcodeService().createQrcode(pathStr, QRCodeUtils.QR_WIDTH); |
|
|
|
if (withText == 1) { |
|
|
|
File dest1 = new File(destPath1); |
|
|
|
org.apache.commons.io.FileUtils.copyFile(codeFile, dest1); |
|
|
|
QRCodeUtils.graphicsGeneration(dest1, dest, text1); |
|
|
|
org.apache.commons.io.FileUtils.forceDelete(dest1); |
|
|
|
} else if (withText == 2) { |
|
|
|
File dest1 = new File(destPath1); |
|
|
|
org.apache.commons.io.FileUtils.copyFile(codeFile, dest1); |
|
|
|
QRCodeUtils.graphicsGeneration2(dest1, dest, text1, text2); |
|
|
|
org.apache.commons.io.FileUtils.forceDelete(dest1); |
|
|
|
} else { |
|
|
|
org.apache.commons.io.FileUtils.copyFile(codeFile, dest); |
|
|
|
} |
|
|
|
copyFileToDest(withText, text1, text2, destPath1, dest, codeFile); |
|
|
|
org.apache.commons.io.FileUtils.forceDelete(codeFile); |
|
|
|
} else { |
|
|
|
final File codeFile = wxMaService.getQrcodeService().createWxaCodeUnlimit(sceneParam, pageUrl, QRCodeUtils.QR_WIDTH, autoColor, color, isHyaline); |
|
|
|
if (withText == 1) { |
|
|
|
File dest1 = new File(destPath1); |
|
|
|
org.apache.commons.io.FileUtils.copyFile(codeFile, dest1); |
|
|
|
QRCodeUtils.graphicsGeneration(dest1, dest, text1); |
|
|
|
org.apache.commons.io.FileUtils.forceDelete(dest1); |
|
|
|
} else if (withText == 2) { |
|
|
|
File dest1 = new File(destPath1); |
|
|
|
org.apache.commons.io.FileUtils.copyFile(codeFile, dest1); |
|
|
|
QRCodeUtils.graphicsGeneration2(dest1, dest, text1, text2); |
|
|
|
org.apache.commons.io.FileUtils.forceDelete(dest1); |
|
|
|
} else { |
|
|
|
org.apache.commons.io.FileUtils.copyFile(codeFile, dest); |
|
|
|
} |
|
|
|
copyFileToDest(withText, text1, text2, destPath1, dest, codeFile); |
|
|
|
org.apache.commons.io.FileUtils.forceDelete(codeFile); |
|
|
|
} |
|
|
|
|
|
|
|
} catch (WxErrorException e) { |
|
|
|
logger.error(e.getMessage()); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error(e.getMessage()); |
|
|
|
} |
|
|
|
|
|
|
|
try { |
|
|
|
downFile(destPath, fileName, response, request); |
|
|
|
org.apache.commons.io.FileUtils.forceDelete(dest); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error(e.getMessage()); |
|
|
|
} |
|
|
|
return new ResultData(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public ResultData uploadQrcode(String tenantId, int type, String pageUrl, String sceneParam, |
|
|
|
int withText, String text1, String text2, |
|
|
|
String name) { |
|
|
|
// type 0 有限二维码, 1 无限制二维码 |
|
|
|
// withText 0 不带字 1. 带下面的字,2 带下面的两行字 |
|
|
|
WxAppinfo appinfo = wxAppinfoService.getCAppInfo(tenantId); |
|
|
|
boolean autoColor = false; |
|
|
|
boolean isHyaline = true; |
|
|
|
WxMaCodeLineColor color = new WxMaCodeLineColor("0", "0", "0"); |
|
|
|
|
|
|
|
WxMaService wxMaService; |
|
|
|
if(isFmOpen) { |
|
|
|
wxMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appinfo.getAppId()); |
|
|
|
} else { |
|
|
|
wxMaService = MaUtil.getWeappService(appinfo); |
|
|
|
} |
|
|
|
|
|
|
|
String pathStr = ""; |
|
|
|
if (StringUtils.isNotBlank(sceneParam)) { |
|
|
|
pathStr = pageUrl + "?scene="+sceneParam; |
|
|
|
} else { |
|
|
|
pathStr = pageUrl; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
String filepath = fmUploadDir; |
|
|
|
String fileName = name + ".png"; |
|
|
|
String destPath1 = filepath + "1_" + fileName; |
|
|
|
String destPath = filepath + fileName; |
|
|
|
|
|
|
|
File dest = new File(destPath); |
|
|
|
File pDest = dest.getParentFile(); |
|
|
|
if (!pDest.exists()) { |
|
|
|
pDest.mkdirs(); |
|
|
|
} |
|
|
|
try { |
|
|
|
if(type == 0) { |
|
|
|
final File codeFile = wxMaService.getQrcodeService().createQrcode(pathStr, QRCodeUtils.QR_WIDTH); |
|
|
|
copyFileToDest(withText, text1, text2, destPath1, dest, codeFile); |
|
|
|
org.apache.commons.io.FileUtils.forceDelete(codeFile); |
|
|
|
} else { |
|
|
|
final File codeFile = wxMaService.getQrcodeService().createWxaCodeUnlimit(sceneParam, pageUrl, QRCodeUtils.QR_WIDTH, autoColor, color, isHyaline); |
|
|
|
copyFileToDest(withText, text1, text2, destPath1, dest, codeFile); |
|
|
|
org.apache.commons.io.FileUtils.forceDelete(codeFile); |
|
|
|
} |
|
|
|
|
|
|
|
@@ -238,34 +276,46 @@ public class QrCodeServiceImpl implements QrCodeService { |
|
|
|
|
|
|
|
try { |
|
|
|
//上传 |
|
|
|
if (upload){ |
|
|
|
ObjectMetadata metadata = new ObjectMetadata(); |
|
|
|
metadata.setContentType("image/jpeg"); |
|
|
|
metadata.setContentLength(dest.length()); |
|
|
|
|
|
|
|
FileOutputStream fos = null; |
|
|
|
BufferedInputStream fs = null; |
|
|
|
|
|
|
|
String fn = UUID.randomUUID().toString(); |
|
|
|
int dot = fileName.lastIndexOf('.'); |
|
|
|
if (dot >= 0) { |
|
|
|
fn = tenantId + "/" + fn + dest.getName().substring(dot, dest.getName().length()); |
|
|
|
} else { |
|
|
|
fn = tenantId + "/" + fn; |
|
|
|
} |
|
|
|
|
|
|
|
ResultData data = awsUpload(new FileInputStream(dest), metadata, fn, tenantId); |
|
|
|
return data; |
|
|
|
ObjectMetadata metadata = new ObjectMetadata(); |
|
|
|
metadata.setContentType("image/jpeg"); |
|
|
|
metadata.setContentLength(dest.length()); |
|
|
|
|
|
|
|
FileOutputStream fos = null; |
|
|
|
BufferedInputStream fs = null; |
|
|
|
|
|
|
|
String fn = UUID.randomUUID().toString(); |
|
|
|
int dot = fileName.lastIndexOf('.'); |
|
|
|
if (dot >= 0) { |
|
|
|
fn = tenantId + "/" + fn + dest.getName().substring(dot, dest.getName().length()); |
|
|
|
} else { |
|
|
|
fn = tenantId + "/" + fn; |
|
|
|
} |
|
|
|
|
|
|
|
downFile(destPath, fileName, response, request); |
|
|
|
ResultData data = awsUpload(new FileInputStream(dest), metadata, fn, tenantId); |
|
|
|
org.apache.commons.io.FileUtils.forceDelete(dest); |
|
|
|
return data; |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error(e.getMessage()); |
|
|
|
} |
|
|
|
return new ResultData(); |
|
|
|
} |
|
|
|
|
|
|
|
private void copyFileToDest(int withText, String text1, String text2, String destPath1, File dest, File codeFile) throws IOException { |
|
|
|
if (withText == 1) { |
|
|
|
File dest1 = new File(destPath1); |
|
|
|
org.apache.commons.io.FileUtils.copyFile(codeFile, dest1); |
|
|
|
QRCodeUtils.graphicsGeneration(dest1, dest, text1); |
|
|
|
org.apache.commons.io.FileUtils.forceDelete(dest1); |
|
|
|
} else if (withText == 2) { |
|
|
|
File dest1 = new File(destPath1); |
|
|
|
org.apache.commons.io.FileUtils.copyFile(codeFile, dest1); |
|
|
|
QRCodeUtils.graphicsGeneration2(dest1, dest, text1, text2); |
|
|
|
org.apache.commons.io.FileUtils.forceDelete(dest1); |
|
|
|
} else { |
|
|
|
org.apache.commons.io.FileUtils.copyFile(codeFile, dest); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void downFile(String filePath, String filename, HttpServletResponse response, HttpServletRequest req) throws IOException { |
|
|
|
try { |
|
|
|
response.reset(); |
|
|
|
|