From 7474d058c30d506a54cb1b4660e1b2cee13558e4 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Mon, 27 Jul 2020 10:28:44 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E6=96=B9=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/commons/tools/utils/DateUtils.java | 14 ++-- .../tools/utils/HttpClientManager.java | 39 ++++++----- .../utils/InputStreamResponseHandler.java | 33 ---------- .../tools/utils/Utf8ResponseHandler.java | 33 ---------- .../epmet-oss/epmet-oss-client/pom.xml | 15 +++++ .../epmet/service/impl/CodeServiceImpl.java | 20 +++--- .../java/com/epmet/wxapi/param/WxExtJson.java | 66 +++++++++++++++++++ .../epmet/wxapi/service/WxMaCodeService.java | 2 +- .../service/impl/WxMaCodeServiceImpl.java | 11 ++-- 9 files changed, 122 insertions(+), 111 deletions(-) delete mode 100644 epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/InputStreamResponseHandler.java delete mode 100644 epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Utf8ResponseHandler.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxExtJson.java diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java index f79b22ccb5..f60e8fd2d7 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java @@ -341,12 +341,12 @@ public class DateUtils { return DateUtils.addDateDays(nextMonth, -1); } - public static void main(String[] args) { - //int weekOfYear = getWeekOfYear(new Date()); - String format = String.format("%02d", 9); - - System.out.println(666); - } +// public static void main(String[] args) { +// //int weekOfYear = getWeekOfYear(new Date()); +// String format = String.format("%02d", 9); +// +// System.out.println(666); +// } /** * 获取日期前一天 @@ -485,7 +485,7 @@ public class DateUtils { public static String formatTimestamp(Long timestamp, String pattern) { //设置格式 SimpleDateFormat format = new SimpleDateFormat(pattern); - return format.format(timestamp); + return format.format(timestamp * 1000); } } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java index 50ba1643c8..3b6bc9a999 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java @@ -6,10 +6,10 @@ import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; -import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.http.*; -import org.apache.http.client.HttpResponseException; +import org.apache.http.HttpEntity; +import org.apache.http.HttpStatus; +import org.apache.http.NameValuePair; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; @@ -29,6 +29,7 @@ import org.springframework.util.CollectionUtils; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -38,7 +39,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.UUID; /** * desc: http 工具类 @@ -243,6 +243,7 @@ public class HttpClientManager { return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); } + /** * desc: 发送get请求 * param:url, params @@ -251,7 +252,7 @@ public class HttpClientManager { * * @author: jianjun liu */ - public Result sendGetFile(String url, Map params) { + public Result getByteArray(String url, Map params) { try { URIBuilder builder = new URIBuilder(url); @@ -266,35 +267,33 @@ public class HttpClientManager { return executeToByte(httpGet); } catch (Exception e) { log.error("sendGet exception", e); - return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); + return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); } } - private Result executeToByte(HttpRequestBase httpMethod) { + private Result executeToByte(HttpRequestBase httpMethod) { CloseableHttpResponse response = null; try { response = httpclient.execute(httpMethod); log.debug("http send response:{}", JSON.toJSONString(response)); if (response != null && response.getStatusLine() != null) { if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { - InputStream inputStream = InputStreamResponseHandler.INSTANCE.handleResponse(response); - Header[] contentTypeHeader = response.getHeaders("Content-Type"); - if (contentTypeHeader != null && contentTypeHeader.length > 0) { - // 出错 - if (ContentType.TEXT_PLAIN.getMimeType() - .equals(ContentType.parse(contentTypeHeader[0].getValue()).getMimeType())) { - String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response); - } - } - File file = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), "jpg"); - return new Result().ok(file); + InputStream in = response.getEntity().getContent(); + ByteArrayOutputStream output = new ByteArrayOutputStream(); + byte[] buffer = new byte[4096]; + int n = 0; + while (-1 != (n = in.read(buffer))) { + output.write(buffer, 0, n); + } +// return new Result().ok(ArrayUtils.toObject(output.toByteArray())); + return new Result().ok(output.toByteArray()); } else { log.warn("execute http method fail,httpStatus:{0}", response.getStatusLine().getStatusCode()); } } } catch (Exception e) { log.error("execute exception", e); - return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), e.getMessage()); + return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), e.getMessage()); } finally { httpMethod.releaseConnection(); try { @@ -304,7 +303,7 @@ public class HttpClientManager { } catch (IOException e) { } } - return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); + return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); } } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/InputStreamResponseHandler.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/InputStreamResponseHandler.java deleted file mode 100644 index 75c16053fb..0000000000 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/InputStreamResponseHandler.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.epmet.commons.tools.utils; - -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.StatusLine; -import org.apache.http.client.HttpResponseException; -import org.apache.http.client.ResponseHandler; -import org.apache.http.util.EntityUtils; - -import java.io.IOException; -import java.io.InputStream; - -/** - * 输入流响应处理器. - * - * @author Daniel Qian - */ -public class InputStreamResponseHandler implements ResponseHandler { - public static final ResponseHandler INSTANCE = new InputStreamResponseHandler(); - private static final int STATUS_CODE_300 = 300; - - @Override - public InputStream handleResponse(final HttpResponse response) throws IOException { - final StatusLine statusLine = response.getStatusLine(); - final HttpEntity entity = response.getEntity(); - if (statusLine.getStatusCode() >= STATUS_CODE_300) { - EntityUtils.consume(entity); - throw new HttpResponseException(statusLine.getStatusCode(), statusLine.getReasonPhrase()); - } - return entity == null ? null : entity.getContent(); - } - -} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Utf8ResponseHandler.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Utf8ResponseHandler.java deleted file mode 100644 index 107dc3cbdf..0000000000 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Utf8ResponseHandler.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.epmet.commons.tools.utils; - -import org.apache.http.Consts; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.StatusLine; -import org.apache.http.client.HttpResponseException; -import org.apache.http.client.ResponseHandler; -import org.apache.http.util.EntityUtils; - -import java.io.IOException; - -/** - * copy from {@link org.apache.http.impl.client.BasicResponseHandler} - * - * @author Daniel Qian - */ -public class Utf8ResponseHandler implements ResponseHandler { - - public static final ResponseHandler INSTANCE = new Utf8ResponseHandler(); - - @Override - public String handleResponse(final HttpResponse response) throws IOException { - final StatusLine statusLine = response.getStatusLine(); - final HttpEntity entity = response.getEntity(); - if (statusLine.getStatusCode() >= 300) { - EntityUtils.consume(entity); - throw new HttpResponseException(statusLine.getStatusCode(), statusLine.toString()); - } - return entity == null ? null : EntityUtils.toString(entity, Consts.UTF_8); - } - -} diff --git a/epmet-module/epmet-oss/epmet-oss-client/pom.xml b/epmet-module/epmet-oss/epmet-oss-client/pom.xml index e88c7004ce..8a27707939 100644 --- a/epmet-module/epmet-oss/epmet-oss-client/pom.xml +++ b/epmet-module/epmet-oss/epmet-oss-client/pom.xml @@ -26,6 +26,21 @@ io.springfox springfox-swagger-ui + + io.github.openfeign.form + feign-form + 3.8.0 + + + io.github.openfeign.form + feign-form-spring + 3.8.0 + + + commons-fileupload + commons-fileupload + 1.3.3 + diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java index aa2076ec75..18221f298e 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java @@ -373,17 +373,13 @@ public class CodeServiceImpl implements CodeService { //获取小程序调用令牌 AuthorizationInfoDTO authInfo = authorizationInfoDao.getAuthInfoByCustomer(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType()); //调用微信API获取获取体验版二维码 - WxResult wxResult = wxMaCodeService.getQrCode(authInfo.getAuthorizerAccessToken(), formDTO.getPath()); + WxResult wxResult = wxMaCodeService.getQrCode(authInfo.getAuthorizerAccessToken(), formDTO.getPath()); QrCodeDTO qrCodeDTO = new QrCodeDTO(); - try { - qrCodeDTO.setQrCode(Files.readAllBytes(wxResult.getData().toPath())); - Result uploadResult = ossFeignClient.uploadQrCode(qrCodeDTO); - codeCustomerDTO.setQrCode(uploadResult.getData().getUrl()); - codeCustomerService.update(codeCustomerDTO); - result.setQrcode(uploadResult.getData().getUrl()); - } catch (Exception e) { - throw new RenException(e.getMessage()); - } + qrCodeDTO.setQrCode(wxResult.getData()); + Result uploadResult = ossFeignClient.uploadQrCode(qrCodeDTO); + codeCustomerDTO.setQrCode(uploadResult.getData().getUrl()); + codeCustomerService.update(codeCustomerDTO); + result.setQrcode(uploadResult.getData().getUrl()); if (!wxResult.success()) { throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg()); } @@ -405,8 +401,8 @@ public class CodeServiceImpl implements CodeService { try { QrCodeDTO dto = new QrCodeDTO(); dto.setMedia(formDTO.getMedia()); - Result uploadDTOResult = ossFeignClient.uploadWxImg(dto); - File file = new File(uploadDTOResult.getData().getUrl()); + Result uploadWxImg = ossFeignClient.uploadWxImg(dto); + File file = new File(uploadWxImg.getData().getUrl()); //获取上传代码信息 CodeCustomerDTO codeCustomerDTO = codeCustomerService.get(formDTO.getCodeId()); //获取小程序调用令牌 diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxExtJson.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxExtJson.java new file mode 100644 index 0000000000..13441e4573 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxExtJson.java @@ -0,0 +1,66 @@ +package com.epmet.wxapi.param; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/7/27 9:19 + */ +@NoArgsConstructor +@Data +public class WxExtJson implements Serializable { + + private static final long serialVersionUID = -559311391779774945L; + + private boolean extEnable; + private String extAppid; + private boolean directCommit; + private ExtBean ext; + + @NoArgsConstructor + @Data + private static class ExtBean { + private String extAppid; + private FootbarBean footbar; + @NoArgsConstructor + @Data + private static class FootbarBean { + private WorkBean work; + private OrgBean org; + private DataBean data; + private FindBean find; + + @NoArgsConstructor + @Data + private static class WorkBean { + private String name; + private String pageTile; + } + + @NoArgsConstructor + @Data + private static class OrgBean { + private String name; + private String pageTile; + } + + @NoArgsConstructor + @Data + private static class DataBean { + private String name; + private String pageTile; + } + + @NoArgsConstructor + @Data + private static class FindBean { + private String name; + private String pageTile; + } + } + } +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java index eea4649219..dca678a55e 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java @@ -48,7 +48,7 @@ public interface WxMaCodeService { * @author zhaoqifeng * @date 2020/7/10 15:25 */ - WxResult getQrCode(String accessToken, String path); + WxResult getQrCode(String accessToken, String path); /** * 获取授权小程序帐号的可选类目. diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java index 5808634523..97f7cac543 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java @@ -70,17 +70,18 @@ public class WxMaCodeServiceImpl implements WxMaCodeService { } @Override - public WxResult getQrCode(String accessToken, String path) { - WxResult result = new WxResult<>(); - StringBuilder url = new StringBuilder(WxMaCodeConstant.GET_QRCODE_URL).append("?access_token").append(accessToken); + public WxResult getQrCode(String accessToken, String path) { + WxResult result = new WxResult<>(); + StringBuilder url = new StringBuilder(WxMaCodeConstant.GET_QRCODE_URL).append("?access_token=").append(accessToken); if (StringUtils.isNotBlank(path)) { try { - url.append("?path=").append(URLEncoder.encode(path, StandardCharsets.UTF_8.name())); + url.append("&path=").append(URLEncoder.encode(path, StandardCharsets.UTF_8.name())); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } - Result qrCodeResult = HttpClientManager.getInstance().sendGetFile(url.toString(), null); + Result qrCodeResult = HttpClientManager.getInstance().getByteArray(url.toString(), null); + if (!qrCodeResult.success()) { result.setErrorCode(qrCodeResult.getCode()); result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(qrCodeResult.getCode()));