提交 f396d765 authored 作者: hzh's avatar hzh

代码优化

上级 89a29ddf
...@@ -2,6 +2,7 @@ package org.dromara.common.weishi; ...@@ -2,6 +2,7 @@ package org.dromara.common.weishi;
import cn.hutool.core.date.StopWatch; import cn.hutool.core.date.StopWatch;
import cn.hutool.http.ContentType; import cn.hutool.http.ContentType;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -13,7 +14,11 @@ import org.dromara.common.weishi.enums.ApiEnum; ...@@ -13,7 +14,11 @@ import org.dromara.common.weishi.enums.ApiEnum;
import org.dromara.common.weishi.enums.Domain; import org.dromara.common.weishi.enums.Domain;
import org.dromara.common.weishi.enums.DomainEnum; import org.dromara.common.weishi.enums.DomainEnum;
import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Base64;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
...@@ -57,6 +62,14 @@ public class Api { ...@@ -57,6 +62,14 @@ public class Api {
return v1(method, urlPrefix, urlSuffix, token, null, body, null, clazz); return v1(method, urlPrefix, urlSuffix, token, null, body, null, clazz);
} }
public static <T> T v1(RequestMethodEnum method, String urlPrefix, String urlSuffix,
String token,
String body,
Map<String,Object> params,
Class<T> clazz) {
return v1(method, urlPrefix, urlSuffix, token, params, body, null, clazz);
}
public static ApiHttpResponse v1(RequestMethodEnum method, String urlPrefix, String urlSuffix, public static ApiHttpResponse v1(RequestMethodEnum method, String urlPrefix, String urlSuffix,
String token, String token,
String body) { String body) {
...@@ -93,7 +106,7 @@ public class Api { ...@@ -93,7 +106,7 @@ public class Api {
String bodyRes = null; String bodyRes = null;
if (method == RequestMethodEnum.GET) { if (method == RequestMethodEnum.GET) {
bodyRes = get(urlPrefix.concat(urlSuffix), authorization, null); bodyRes = get(urlPrefix.concat(urlSuffix), authorization, params);
} else if (method == RequestMethodEnum.POST) { } else if (method == RequestMethodEnum.POST) {
bodyRes = post(urlPrefix.concat(urlSuffix), authorization, body); bodyRes = post(urlPrefix.concat(urlSuffix), authorization, body);
} else if (method == RequestMethodEnum.DELETE) { } else if (method == RequestMethodEnum.DELETE) {
...@@ -104,6 +117,8 @@ public class Api { ...@@ -104,6 +117,8 @@ public class Api {
bodyRes = patch(urlPrefix.concat(urlSuffix), authorization, body); bodyRes = patch(urlPrefix.concat(urlSuffix), authorization, body);
} else if (method == RequestMethodEnum.PUT) { } else if (method == RequestMethodEnum.PUT) {
bodyRes = put(urlPrefix.concat(urlSuffix), authorization, body); bodyRes = put(urlPrefix.concat(urlSuffix), authorization, body);
} else if (method == RequestMethodEnum.DOWNLOAD) {
bodyRes = download(urlPrefix.concat(urlSuffix), authorization, params);
} }
return JSON.parseObject(bodyRes, clazz); return JSON.parseObject(bodyRes, clazz);
} }
...@@ -259,6 +274,48 @@ public class Api { ...@@ -259,6 +274,48 @@ public class Api {
return get(url, params, getHeaders(authorization)); return get(url, params, getHeaders(authorization));
} }
private static String download(String url, String authorization, Map<String, Object> params) {
return download(url, params, getHeaders(authorization));
}
/**
* get 请求
*
* @param url 请求url
* @param params 请求参数
* @param headers 请求头
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public static String download(String url, Map<String, Object> params, Map<String, String> headers) {
log.info("请求路径:{}", url);
log.info("请求头:{}", JSON.toJSONString(headers));
log.info("请求参数:{}", params);
StopWatch watch = new StopWatch();
watch.start();
try (HttpResponse res = HttpKit.getDelegate().getToResponse(url, params, headers);) {
InputStream fileStream = res.bodyStream();
// 将流转换为字节数组
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
byte[] data = new byte[1024];
int bytesRead;
while ((bytesRead = fileStream.read(data, 0, data.length)) != -1) {
buffer.write(data, 0, bytesRead);
}
buffer.flush();
byte[] byteArray = buffer.toByteArray();
// 转换为Base64编码
String base64String = Base64.getEncoder().encodeToString(byteArray);
watch.stop();
log.info("请求耗时:{}ms", watch.getTotalTimeMillis());
return base64String;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static boolean isProd(String url) { public static boolean isProd(String url) {
return url.startsWith(DomainEnum.PROD.getDomain()); return url.startsWith(DomainEnum.PROD.getDomain());
} }
......
...@@ -324,7 +324,7 @@ public abstract class AbstractHttpDelegate { ...@@ -324,7 +324,7 @@ public abstract class AbstractHttpDelegate {
* @param headers 请求头 * @param headers 请求头
* @return {@link HttpResponse} 请求返回的结果 * @return {@link HttpResponse} 请求返回的结果
*/ */
private HttpResponse getToResponse(String url, Map<String, Object> paramMap, Map<String, String> headers) { public HttpResponse getToResponse(String url, Map<String, Object> paramMap, Map<String, String> headers) {
return HttpRequest.get(url) return HttpRequest.get(url)
.setProxy(getProxy()) .setProxy(getProxy())
.addHeaders(headers) .addHeaders(headers)
......
...@@ -47,6 +47,10 @@ public enum RequestMethodEnum { ...@@ -47,6 +47,10 @@ public enum RequestMethodEnum {
* PATCH 请求 * PATCH 请求
*/ */
PATCH("PATCH"), PATCH("PATCH"),
/**
*
*/
DOWNLOAD("GET");
; ;
private final String method; private final String method;
......
...@@ -42,6 +42,10 @@ public enum InsureApiEnum implements ApiEnum { ...@@ -42,6 +42,10 @@ public enum InsureApiEnum implements ApiEnum {
* 获取投/被保险人申明接口 * 获取投/被保险人申明接口
*/ */
AVOW_LIST("/api/v1/insurer/1/avow/list", "获取投/被保险人申明接口"), AVOW_LIST("/api/v1/insurer/1/avow/list", "获取投/被保险人申明接口"),
/**
* 保单下载
*/
DOWNLOAD("/api/v1/insure/download/order/{orderId}", "保单下载接口"),
; ;
/** /**
......
...@@ -59,6 +59,15 @@ public interface WeishiService { ...@@ -59,6 +59,15 @@ public interface WeishiService {
*/ */
DetailResponse insureDetail(String token, Integer orderId); DetailResponse insureDetail(String token, Integer orderId);
/**
* 保单下载
*
* @param token token
* @param orderId 订单id
* @return base64
*/
String insureDownload(String token, Integer orderId);
/** /**
* 订单撤单接口 * 订单撤单接口
* *
......
...@@ -120,6 +120,23 @@ public class WeishiServiceImpl implements WeishiService { ...@@ -120,6 +120,23 @@ public class WeishiServiceImpl implements WeishiService {
return JSON.parseObject(res.getData(), DetailResponse.class); return JSON.parseObject(res.getData(), DetailResponse.class);
} }
@Override
public String insureDownload(String token, Integer orderId) {
Map<String, Object> map = MapUtil.<String, Object>builder()
.put("orderId", orderId)
.build();
Map<String, Object> paramsMap = MapUtil.<String, Object>builder()
.put("refresh", false)
.build();
return Api.v1(RequestMethodEnum.DOWNLOAD,
DomainEnum.TEST.getDomain(),
StrUtil.format(InsureApiEnum.DOWNLOAD.getUrl(), map),
token,
null,
paramsMap,
String.class);
}
@Override @Override
public void insureCancel(String token, String orderNum) { public void insureCancel(String token, String orderNum) {
Map<String, Object> map = MapUtil.<String, Object>builder() Map<String, Object> map = MapUtil.<String, Object>builder()
......
...@@ -116,6 +116,17 @@ public class WeishiController { ...@@ -116,6 +116,17 @@ public class WeishiController {
return R.ok(weishiService.insureDetail(getToken(), orderId)); return R.ok(weishiService.insureDetail(getToken(), orderId));
} }
/**
* 保单下载
*
* @param orderId orderId
* @return 保单base64
*/
@PostMapping("/insureDownload/{orderId}")
public R<String> insureDownload(@PathVariable Integer orderId) {
return R.ok(weishiService.insureDownload(getToken(), orderId));
}
/** /**
* 订单撤单接口 * 订单撤单接口
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论