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

代码优化

上级 89a29ddf
......@@ -2,6 +2,7 @@ package org.dromara.common.weishi;
import cn.hutool.core.date.StopWatch;
import cn.hutool.http.ContentType;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
......@@ -13,7 +14,11 @@ import org.dromara.common.weishi.enums.ApiEnum;
import org.dromara.common.weishi.enums.Domain;
import org.dromara.common.weishi.enums.DomainEnum;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
......@@ -57,6 +62,14 @@ public class Api {
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,
String token,
String body) {
......@@ -93,7 +106,7 @@ public class Api {
String bodyRes = null;
if (method == RequestMethodEnum.GET) {
bodyRes = get(urlPrefix.concat(urlSuffix), authorization, null);
bodyRes = get(urlPrefix.concat(urlSuffix), authorization, params);
} else if (method == RequestMethodEnum.POST) {
bodyRes = post(urlPrefix.concat(urlSuffix), authorization, body);
} else if (method == RequestMethodEnum.DELETE) {
......@@ -104,6 +117,8 @@ public class Api {
bodyRes = patch(urlPrefix.concat(urlSuffix), authorization, body);
} else if (method == RequestMethodEnum.PUT) {
bodyRes = put(urlPrefix.concat(urlSuffix), authorization, body);
} else if (method == RequestMethodEnum.DOWNLOAD) {
bodyRes = download(urlPrefix.concat(urlSuffix), authorization, params);
}
return JSON.parseObject(bodyRes, clazz);
}
......@@ -259,6 +274,48 @@ public class Api {
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) {
return url.startsWith(DomainEnum.PROD.getDomain());
}
......
......@@ -324,7 +324,7 @@ public abstract class AbstractHttpDelegate {
* @param headers 请求头
* @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)
.setProxy(getProxy())
.addHeaders(headers)
......
......@@ -47,6 +47,10 @@ public enum RequestMethodEnum {
* PATCH 请求
*/
PATCH("PATCH"),
/**
*
*/
DOWNLOAD("GET");
;
private final String method;
......
......@@ -42,6 +42,10 @@ public enum InsureApiEnum implements ApiEnum {
* 获取投/被保险人申明接口
*/
AVOW_LIST("/api/v1/insurer/1/avow/list", "获取投/被保险人申明接口"),
/**
* 保单下载
*/
DOWNLOAD("/api/v1/insure/download/order/{orderId}", "保单下载接口"),
;
/**
......
......@@ -59,6 +59,15 @@ public interface WeishiService {
*/
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 {
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
public void insureCancel(String token, String orderNum) {
Map<String, Object> map = MapUtil.<String, Object>builder()
......
......@@ -116,6 +116,17 @@ public class WeishiController {
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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论