diff --git a/wfc-modules/wfc-payment/pom.xml b/wfc-modules/wfc-payment/pom.xml index b7dfb9e..f89e27c 100644 --- a/wfc-modules/wfc-payment/pom.xml +++ b/wfc-modules/wfc-payment/pom.xml @@ -118,6 +118,11 @@ javax.persistence javax.persistence-api + + + org.springframework + spring-test + diff --git a/wfc-modules/wfc-payment/src/main/java/org/wfc/payment/pay/wxpay/controller/WxPayController.java b/wfc-modules/wfc-payment/src/main/java/org/wfc/payment/pay/wxpay/controller/WxPayController.java index 9d2ce30..29b46ce 100644 --- a/wfc-modules/wfc-payment/src/main/java/org/wfc/payment/pay/wxpay/controller/WxPayController.java +++ b/wfc-modules/wfc-payment/src/main/java/org/wfc/payment/pay/wxpay/controller/WxPayController.java @@ -35,11 +35,15 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; import org.wfc.common.core.domain.R; import org.wfc.payment.domain.FileBean; import org.wfc.payment.domain.H5SceneInfo; import org.wfc.payment.domain.WxPayBean; import org.wfc.payment.domain.vo.AjaxResult; +import org.wfc.payment.utils.MultipartFileUtil; +import org.wfc.system.api.RemoteFileService; +import org.wfc.system.api.domain.SysFile; import org.wfc.user.api.RemoteUUserService; import org.wfc.user.api.domain.vo.UOrderVo; @@ -73,6 +77,9 @@ public class WxPayController extends AbstractWxPayApiController { @Autowired private RemoteUUserService remoteUUserService; + @Autowired + private RemoteFileService remoteFileService; + private String notifyUrl; private String refundNotifyUrl; private static final String USER_PAYING = "USERPAYING"; @@ -424,12 +431,19 @@ public class WxPayController extends AbstractWxPayApiController { String qrCodeUrl = result.get("code_url"); String name = "payQRCode2.png"; - String basePath = fileBean.getPath() + File.separator + orderId; - String url = fileBean.getDomain() + fileBean.getPrefix() + File.separator + orderId + File.separator + name; + String basePath = System.getProperty("user.dir") + File.separator + name; +// String url = fileBean.getDomain() + fileBean.getPrefix() + File.separator + orderId + File.separator + name; FileUtil.mkdir(basePath); boolean encode = QrCodeKit.encode(qrCodeUrl, BarcodeFormat.QR_CODE, 3, ErrorCorrectionLevel.H, "png", 200, 200, - basePath + File.separator + name); + basePath); + File uploadFile = new File(basePath); + MultipartFile multipartFile = MultipartFileUtil.getMultipartFile(uploadFile); + R fileResult = remoteFileService.upload(multipartFile); + String url = fileResult.getData().getLocalUrl(); + log.info("qr code file: {}", basePath); + FileUtil.del(uploadFile); + if (encode) { //在页面上显示 return new AjaxResult().success(url); diff --git a/wfc-modules/wfc-payment/src/main/java/org/wfc/payment/utils/MultipartFileUtil.java b/wfc-modules/wfc-payment/src/main/java/org/wfc/payment/utils/MultipartFileUtil.java new file mode 100644 index 0000000..7293f7a --- /dev/null +++ b/wfc-modules/wfc-payment/src/main/java/org/wfc/payment/utils/MultipartFileUtil.java @@ -0,0 +1,101 @@ +package org.wfc.payment.utils; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import org.apache.http.entity.ContentType; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.web.multipart.MultipartFile; + +import java.io.*; + +/** + * MultipartFile和File互转工具类 + */ +public class MultipartFileUtil { + + /** + * 输入流转MultipartFile + * + * @param fileName + * @param inputStream + * @return + */ + public static MultipartFile getMultipartFile(String fileName, InputStream inputStream) { + MultipartFile multipartFile = null; + try { + multipartFile = new MockMultipartFile(fileName, fileName, + ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream); + } catch (Exception e) { + e.printStackTrace(); + } + return multipartFile; + } + + /** + * 读取网络文件 + * + * @param url 文件地址 + * @param fileName 文件名称(需带文件名后缀) + * @return + */ + public static MultipartFile getMultipartFile(String url, String fileName) { + HttpResponse response = HttpRequest.get(url).execute(); + InputStream inputStream = response.bodyStream(); + return MultipartFileUtil.getMultipartFile(fileName, inputStream); + } + + /** + * File 转MultipartFile + * + * @param file + * @return + */ + public static MultipartFile getMultipartFile(File file) { + FileInputStream fileInputStream = null; + MultipartFile multipartFile = null; + try { + fileInputStream = new FileInputStream(file); + multipartFile = new MockMultipartFile(file.getName(), file.getName(), + ContentType.APPLICATION_OCTET_STREAM.toString(), fileInputStream); + } catch (Exception e) { + e.printStackTrace(); + } + return multipartFile; + } + + /** + * MultipartFileUtil 转File + * + * @param multipartFile + * @return + */ + public static File getFile(MultipartFile multipartFile) { + String fileName = multipartFile.getOriginalFilename(); + File file = new File(fileName); + OutputStream out = null; + try { + out = new FileOutputStream(file); + byte[] ss = multipartFile.getBytes(); + for (byte s : ss) { + out.write(s); + } + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (out != null) { + try { + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } +// File f = new File(file.toURI()); +// if (f.delete()) { +// System.out.println("删除成功"); +// } else { +// System.out.println("删除失败"); +// } + return file; + } +} \ No newline at end of file