Browse Source

第三方代码上传

dev_shibei_match
zhaoqifeng 5 years ago
parent
commit
7474d058c3
  1. 14
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java
  2. 39
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java
  3. 33
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/InputStreamResponseHandler.java
  4. 33
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Utf8ResponseHandler.java
  5. 15
      epmet-module/epmet-oss/epmet-oss-client/pom.xml
  6. 20
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java
  7. 66
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxExtJson.java
  8. 2
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java
  9. 11
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java

14
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); return DateUtils.addDateDays(nextMonth, -1);
} }
public static void main(String[] args) { // public static void main(String[] args) {
//int weekOfYear = getWeekOfYear(new Date()); // //int weekOfYear = getWeekOfYear(new Date());
String format = String.format("%02d", 9); // String format = String.format("%02d", 9);
//
System.out.println(666); // System.out.println(666);
} // }
/** /**
* 获取日期前一天 * 获取日期前一天
@ -485,7 +485,7 @@ public class DateUtils {
public static String formatTimestamp(Long timestamp, String pattern) { public static String formatTimestamp(Long timestamp, String pattern) {
//设置格式 //设置格式
SimpleDateFormat format = new SimpleDateFormat(pattern); SimpleDateFormat format = new SimpleDateFormat(pattern);
return format.format(timestamp); return format.format(timestamp * 1000);
} }
} }

39
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 com.epmet.commons.tools.exception.RenException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.http.*; import org.apache.http.HttpEntity;
import org.apache.http.client.HttpResponseException; import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig; import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.CloseableHttpResponse;
@ -29,6 +29,7 @@ import org.springframework.util.CollectionUtils;
import javax.crypto.Mac; import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec; import javax.crypto.spec.SecretKeySpec;
import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -38,7 +39,6 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.UUID;
/** /**
* desc: http 工具类 * desc: http 工具类
@ -243,6 +243,7 @@ public class HttpClientManager {
return new Result<String>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); return new Result<String>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
} }
/** /**
* desc: 发送get请求 * desc: 发送get请求
* param:url, params * param:url, params
@ -251,7 +252,7 @@ public class HttpClientManager {
* *
* @author: jianjun liu * @author: jianjun liu
*/ */
public Result<File> sendGetFile(String url, Map<String, Object> params) { public Result<byte[]> getByteArray(String url, Map<String, Object> params) {
try { try {
URIBuilder builder = new URIBuilder(url); URIBuilder builder = new URIBuilder(url);
@ -266,35 +267,33 @@ public class HttpClientManager {
return executeToByte(httpGet); return executeToByte(httpGet);
} catch (Exception e) { } catch (Exception e) {
log.error("sendGet exception", e); log.error("sendGet exception", e);
return new Result<File>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); return new Result<byte[]>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
} }
} }
private Result<File> executeToByte(HttpRequestBase httpMethod) { private Result<byte[]> executeToByte(HttpRequestBase httpMethod) {
CloseableHttpResponse response = null; CloseableHttpResponse response = null;
try { try {
response = httpclient.execute(httpMethod); response = httpclient.execute(httpMethod);
log.debug("http send response:{}", JSON.toJSONString(response)); log.debug("http send response:{}", JSON.toJSONString(response));
if (response != null && response.getStatusLine() != null) { if (response != null && response.getStatusLine() != null) {
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
InputStream inputStream = InputStreamResponseHandler.INSTANCE.handleResponse(response); InputStream in = response.getEntity().getContent();
Header[] contentTypeHeader = response.getHeaders("Content-Type"); ByteArrayOutputStream output = new ByteArrayOutputStream();
if (contentTypeHeader != null && contentTypeHeader.length > 0) { byte[] buffer = new byte[4096];
// 出错 int n = 0;
if (ContentType.TEXT_PLAIN.getMimeType() while (-1 != (n = in.read(buffer))) {
.equals(ContentType.parse(contentTypeHeader[0].getValue()).getMimeType())) { output.write(buffer, 0, n);
String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response); }
} // return new Result<byte[]>().ok(ArrayUtils.toObject(output.toByteArray()));
} return new Result<byte[]>().ok(output.toByteArray());
File file = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), "jpg");
return new Result<File>().ok(file);
} else { } else {
log.warn("execute http method fail,httpStatus:{0}", response.getStatusLine().getStatusCode()); log.warn("execute http method fail,httpStatus:{0}", response.getStatusLine().getStatusCode());
} }
} }
} catch (Exception e) { } catch (Exception e) {
log.error("execute exception", e); log.error("execute exception", e);
return new Result<File>().error(EpmetErrorCode.SERVER_ERROR.getCode(), e.getMessage()); return new Result<byte[]>().error(EpmetErrorCode.SERVER_ERROR.getCode(), e.getMessage());
} finally { } finally {
httpMethod.releaseConnection(); httpMethod.releaseConnection();
try { try {
@ -304,7 +303,7 @@ public class HttpClientManager {
} catch (IOException e) { } catch (IOException e) {
} }
} }
return new Result<File>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); return new Result<byte[]>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
} }
} }

33
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/InputStreamResponseHandler.java

@ -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<InputStream> {
public static final ResponseHandler<InputStream> 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();
}
}

33
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Utf8ResponseHandler.java

@ -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<String> {
public static final ResponseHandler<String> 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);
}
}

15
epmet-module/epmet-oss/epmet-oss-client/pom.xml

@ -26,6 +26,21 @@
<groupId>io.springfox</groupId> <groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId> <artifactId>springfox-swagger-ui</artifactId>
</dependency> </dependency>
<dependency>
<groupId>io.github.openfeign.form</groupId>
<artifactId>feign-form</artifactId>
<version>3.8.0</version>
</dependency>
<dependency>
<groupId>io.github.openfeign.form</groupId>
<artifactId>feign-form-spring</artifactId>
<version>3.8.0</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

20
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()); AuthorizationInfoDTO authInfo = authorizationInfoDao.getAuthInfoByCustomer(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType());
//调用微信API获取获取体验版二维码 //调用微信API获取获取体验版二维码
WxResult<File> wxResult = wxMaCodeService.getQrCode(authInfo.getAuthorizerAccessToken(), formDTO.getPath()); WxResult<byte[]> wxResult = wxMaCodeService.getQrCode(authInfo.getAuthorizerAccessToken(), formDTO.getPath());
QrCodeDTO qrCodeDTO = new QrCodeDTO(); QrCodeDTO qrCodeDTO = new QrCodeDTO();
try { qrCodeDTO.setQrCode(wxResult.getData());
qrCodeDTO.setQrCode(Files.readAllBytes(wxResult.getData().toPath())); Result<UploadImgResultDTO> uploadResult = ossFeignClient.uploadQrCode(qrCodeDTO);
Result<UploadImgResultDTO> uploadResult = ossFeignClient.uploadQrCode(qrCodeDTO); codeCustomerDTO.setQrCode(uploadResult.getData().getUrl());
codeCustomerDTO.setQrCode(uploadResult.getData().getUrl()); codeCustomerService.update(codeCustomerDTO);
codeCustomerService.update(codeCustomerDTO); result.setQrcode(uploadResult.getData().getUrl());
result.setQrcode(uploadResult.getData().getUrl());
} catch (Exception e) {
throw new RenException(e.getMessage());
}
if (!wxResult.success()) { if (!wxResult.success()) {
throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg()); throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg());
} }
@ -405,8 +401,8 @@ public class CodeServiceImpl implements CodeService {
try { try {
QrCodeDTO dto = new QrCodeDTO(); QrCodeDTO dto = new QrCodeDTO();
dto.setMedia(formDTO.getMedia()); dto.setMedia(formDTO.getMedia());
Result<UploadImgResultDTO> uploadDTOResult = ossFeignClient.uploadWxImg(dto); Result<UploadImgResultDTO> uploadWxImg = ossFeignClient.uploadWxImg(dto);
File file = new File(uploadDTOResult.getData().getUrl()); File file = new File(uploadWxImg.getData().getUrl());
//获取上传代码信息 //获取上传代码信息
CodeCustomerDTO codeCustomerDTO = codeCustomerService.get(formDTO.getCodeId()); CodeCustomerDTO codeCustomerDTO = codeCustomerService.get(formDTO.getCodeId());
//获取小程序调用令牌 //获取小程序调用令牌

66
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;
}
}
}
}

2
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 * @author zhaoqifeng
* @date 2020/7/10 15:25 * @date 2020/7/10 15:25
*/ */
WxResult<File> getQrCode(String accessToken, String path); WxResult<byte[]> getQrCode(String accessToken, String path);
/** /**
* 获取授权小程序帐号的可选类目. * 获取授权小程序帐号的可选类目.

11
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 @Override
public WxResult<File> getQrCode(String accessToken, String path) { public WxResult<byte[]> getQrCode(String accessToken, String path) {
WxResult<File> result = new WxResult<>(); WxResult<byte[]> result = new WxResult<>();
StringBuilder url = new StringBuilder(WxMaCodeConstant.GET_QRCODE_URL).append("?access_token").append(accessToken); StringBuilder url = new StringBuilder(WxMaCodeConstant.GET_QRCODE_URL).append("?access_token=").append(accessToken);
if (StringUtils.isNotBlank(path)) { if (StringUtils.isNotBlank(path)) {
try { 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) { } catch (UnsupportedEncodingException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
Result<File> qrCodeResult = HttpClientManager.getInstance().sendGetFile(url.toString(), null); Result<byte[]> qrCodeResult = HttpClientManager.getInstance().getByteArray(url.toString(), null);
if (!qrCodeResult.success()) { if (!qrCodeResult.success()) {
result.setErrorCode(qrCodeResult.getCode()); result.setErrorCode(qrCodeResult.getCode());
result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(qrCodeResult.getCode())); result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(qrCodeResult.getCode()));

Loading…
Cancel
Save