Commit bb6a4cb9f4b78112e9e6cff791bd2abd076a90db

Authored by 谭毅彬
1 parent de675214

移除API日志记录ApiLogAspect类中非必要代码,移除HttpUtils工具类,统一使用OKHttpUtils

Signed-off-by: TanYibin <5491541@qq.com>
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/acs/controller/AcsController.java
1 package org.jeecg.modules.wms.api.acs.controller; 1 package org.jeecg.modules.wms.api.acs.controller;
2 2
  3 +import java.util.Map;
  4 +
3 import javax.annotation.Resource; 5 import javax.annotation.Resource;
  6 +import javax.servlet.http.HttpServletRequest;
4 7
5 import org.jeecg.common.api.vo.Result; 8 import org.jeecg.common.api.vo.Result;
6 import org.jeecg.modules.wms.api.acs.entity.AcsStatus; 9 import org.jeecg.modules.wms.api.acs.entity.AcsStatus;
@@ -11,7 +14,11 @@ import org.jeecg.modules.wms.task.agvTask.service.IAgvTaskService; @@ -11,7 +14,11 @@ import org.jeecg.modules.wms.task.agvTask.service.IAgvTaskService;
11 import org.jeecg.utils.StringUtils; 14 import org.jeecg.utils.StringUtils;
12 import org.jeecg.utils.constant.QuantityConstant; 15 import org.jeecg.utils.constant.QuantityConstant;
13 import org.springframework.transaction.annotation.Transactional; 16 import org.springframework.transaction.annotation.Transactional;
14 -import org.springframework.web.bind.annotation.*; 17 +import org.springframework.web.bind.annotation.PostMapping;
  18 +import org.springframework.web.bind.annotation.RequestBody;
  19 +import org.springframework.web.bind.annotation.RequestMapping;
  20 +import org.springframework.web.bind.annotation.ResponseBody;
  21 +import org.springframework.web.bind.annotation.RestController;
15 22
16 import io.swagger.annotations.ApiOperation; 23 import io.swagger.annotations.ApiOperation;
17 24
@@ -23,6 +30,17 @@ public class AcsController extends HuahengBaseController { @@ -23,6 +30,17 @@ public class AcsController extends HuahengBaseController {
23 private IAcsService acsService; 30 private IAcsService acsService;
24 @Resource 31 @Resource
25 private IAgvTaskService agvTaskService; 32 private IAgvTaskService agvTaskService;
  33 +
  34 +// @PassApiAuthentication
  35 + @ApiLogger(apiName = "API接口第三方Token校验测试", from = "TEST")
  36 + @ResponseBody
  37 + @PostMapping(value = "/testTokenCheck")
  38 + public Result<?> testTokenCheck(@RequestBody Map<String, String> paramMap, HttpServletRequest request) {
  39 +
  40 +
  41 + return new Result<>();
  42 + }
  43 +
26 44
27 @PostMapping("/notifyAGVTask") 45 @PostMapping("/notifyAGVTask")
28 @ApiOperation("更新AGV状态") 46 @ApiOperation("更新AGV状态")
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/acs/service/impl/AcsServiceImpl.java
@@ -57,7 +57,7 @@ public class AcsServiceImpl implements IAcsService { @@ -57,7 +57,7 @@ public class AcsServiceImpl implements IAcsService {
57 } 57 }
58 } 58 }
59 } 59 }
60 - Location toLocation = locationService.getLocationByCode(toPort, warehouseCode); 60 +// Location toLocation = locationService.getLocationByCode(toPort, warehouseCode);
61 agvTask.setPreTaskNo(preTaskNo); 61 agvTask.setPreTaskNo(preTaskNo);
62 boolean success = agvTaskService.updateById(agvTask); 62 boolean success = agvTaskService.updateById(agvTask);
63 if (!success) { 63 if (!success) {
@@ -75,7 +75,7 @@ public class AcsServiceImpl implements IAcsService { @@ -75,7 +75,7 @@ public class AcsServiceImpl implements IAcsService {
75 String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_AGV_TASK_ASSIGN); 75 String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_AGV_TASK_ASSIGN);
76 String jsonParam = JSON.toJSONString(agvEntity); 76 String jsonParam = JSON.toJSONString(agvEntity);
77 System.out.println(jsonParam); 77 System.out.println(jsonParam);
78 - String body = OkHttpUtils.bodypost(url, jsonParam); 78 + String body = OkHttpUtils.sendPostByJsonStr(url, jsonParam);
79 if (StringUtils.isEmpty(body)) { 79 if (StringUtils.isEmpty(body)) {
80 throw new ServiceException("接口地址错误或返回为空"); 80 throw new ServiceException("接口地址错误或返回为空");
81 } 81 }
@@ -92,7 +92,7 @@ public class AcsServiceImpl implements IAcsService { @@ -92,7 +92,7 @@ public class AcsServiceImpl implements IAcsService {
92 agvEntity.setTaskNo(agvTask.getId()); 92 agvEntity.setTaskNo(agvTask.getId());
93 String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_AGV_TASK_CANCEL); 93 String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_AGV_TASK_CANCEL);
94 String jsonParam = JSON.toJSONString(agvEntity); 94 String jsonParam = JSON.toJSONString(agvEntity);
95 - String body = OkHttpUtils.bodypost(url, jsonParam); 95 + String body = OkHttpUtils.sendPostByJsonStr(url, jsonParam);
96 if (StringUtils.isEmpty(body)) { 96 if (StringUtils.isEmpty(body)) {
97 throw new ServiceException("接口地址错误或返回为空"); 97 throw new ServiceException("接口地址错误或返回为空");
98 } 98 }
@@ -110,7 +110,7 @@ public class AcsServiceImpl implements IAcsService { @@ -110,7 +110,7 @@ public class AcsServiceImpl implements IAcsService {
110 agvEntity.setPriority(agvTask.getPriority()); 110 agvEntity.setPriority(agvTask.getPriority());
111 String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_AGV_TASK_UPDATE); 111 String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_AGV_TASK_UPDATE);
112 String jsonParam = JSON.toJSONString(agvEntity); 112 String jsonParam = JSON.toJSONString(agvEntity);
113 - String body = OkHttpUtils.bodypost(url, jsonParam); 113 + String body = OkHttpUtils.sendPostByJsonStr(url, jsonParam);
114 if (StringUtils.isEmpty(body)) { 114 if (StringUtils.isEmpty(body)) {
115 throw new ServiceException("接口地址错误或返回为空"); 115 throw new ServiceException("接口地址错误或返回为空");
116 } 116 }
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/erp/service/impl/ErpServiceImpl.java
@@ -427,7 +427,7 @@ public class ErpServiceImpl implements IErpService { @@ -427,7 +427,7 @@ public class ErpServiceImpl implements IErpService {
427 erpBackReceipt.setReceiptDetailList(receiptDetailList); 427 erpBackReceipt.setReceiptDetailList(receiptDetailList);
428 String jsonParam = JSON.toJSONString(erpBackReceipt); 428 String jsonParam = JSON.toJSONString(erpBackReceipt);
429 System.out.println(jsonParam); 429 System.out.println(jsonParam);
430 - String body = OkHttpUtils.bodypost(url, jsonParam); 430 + String body = OkHttpUtils.sendPostByJsonStr(url, jsonParam);
431 if (StringUtils.isEmpty(body)) { 431 if (StringUtils.isEmpty(body)) {
432 throw new ServiceException("接口地址错误或返回为空"); 432 throw new ServiceException("接口地址错误或返回为空");
433 } 433 }
@@ -459,7 +459,7 @@ public class ErpServiceImpl implements IErpService { @@ -459,7 +459,7 @@ public class ErpServiceImpl implements IErpService {
459 erpBackShipment.setShipmentDetailList(shipmentDetailList); 459 erpBackShipment.setShipmentDetailList(shipmentDetailList);
460 String jsonParam = JSON.toJSONString(erpBackShipment); 460 String jsonParam = JSON.toJSONString(erpBackShipment);
461 System.out.println(jsonParam); 461 System.out.println(jsonParam);
462 - String body = OkHttpUtils.bodypost(url, jsonParam); 462 + String body = OkHttpUtils.sendPostByJsonStr(url, jsonParam);
463 if (StringUtils.isEmpty(body)) { 463 if (StringUtils.isEmpty(body)) {
464 throw new ServiceException("接口地址错误或返回为空"); 464 throw new ServiceException("接口地址错误或返回为空");
465 } 465 }
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/servuce/impl/MesServiceImpl.java
@@ -258,7 +258,7 @@ public class MesServiceImpl implements IMesService { @@ -258,7 +258,7 @@ public class MesServiceImpl implements IMesService {
258 String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_MES_BACK_RECEIPT); 258 String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_MES_BACK_RECEIPT);
259 String jsonParam = JSON.toJSONString(mesBackReceiptList); 259 String jsonParam = JSON.toJSONString(mesBackReceiptList);
260 System.out.println(jsonParam); 260 System.out.println(jsonParam);
261 - String body = OkHttpUtils.bodypost(url, jsonParam); 261 + String body = OkHttpUtils.sendPostByJsonStr(url, jsonParam);
262 if (StringUtils.isEmpty(body)) { 262 if (StringUtils.isEmpty(body)) {
263 throw new ServiceException("接口地址错误或返回为空"); 263 throw new ServiceException("接口地址错误或返回为空");
264 } 264 }
@@ -327,7 +327,7 @@ public class MesServiceImpl implements IMesService { @@ -327,7 +327,7 @@ public class MesServiceImpl implements IMesService {
327 String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_MES_BACK_SHIPMENT); 327 String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_MES_BACK_SHIPMENT);
328 String jsonParam = JSON.toJSONString(mesBackShipmentList); 328 String jsonParam = JSON.toJSONString(mesBackShipmentList);
329 System.out.println(jsonParam); 329 System.out.println(jsonParam);
330 - String body = OkHttpUtils.bodypost(url, jsonParam); 330 + String body = OkHttpUtils.sendPostByJsonStr(url, jsonParam);
331 if (StringUtils.isEmpty(body)) { 331 if (StringUtils.isEmpty(body)) {
332 throw new ServiceException("接口地址错误或返回为空"); 332 throw new ServiceException("接口地址错误或返回为空");
333 } 333 }
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java
@@ -256,7 +256,7 @@ public class WcsServiceImpl implements WcsService { @@ -256,7 +256,7 @@ public class WcsServiceImpl implements WcsService {
256 String fromLocationCode = taskHeader.getFromLocationCode(); 256 String fromLocationCode = taskHeader.getFromLocationCode();
257 String toLocationCode = taskHeader.getToLocationCode(); 257 String toLocationCode = taskHeader.getToLocationCode();
258 Location fromLocation = locationService.getLocationByCode(fromLocationCode, warehouseCode); 258 Location fromLocation = locationService.getLocationByCode(fromLocationCode, warehouseCode);
259 - Location toLocation = locationService.getLocationByCode(toLocationCode, warehouseCode); 259 +// Location toLocation = locationService.getLocationByCode(toLocationCode, warehouseCode);
260 boolean direction = true; // true 执行时是入库动作, false 执行时是出库动作 260 boolean direction = true; // true 执行时是入库动作, false 执行时是出库动作
261 switch (taskType) { 261 switch (taskType) {
262 case QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT: 262 case QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT:
@@ -378,7 +378,7 @@ public class WcsServiceImpl implements WcsService { @@ -378,7 +378,7 @@ public class WcsServiceImpl implements WcsService {
378 wcsTask = switchTaskTypeToWcs(wcsTask); 378 wcsTask = switchTaskTypeToWcs(wcsTask);
379 String jsonParam = JSON.toJSONString(wcsTask); 379 String jsonParam = JSON.toJSONString(wcsTask);
380 System.out.println(jsonParam); 380 System.out.println(jsonParam);
381 - String body = OkHttpUtils.bodypost(url, jsonParam); 381 + String body = OkHttpUtils.sendPostByJsonStr(url, jsonParam);
382 if (StringUtils.isEmpty(body)) { 382 if (StringUtils.isEmpty(body)) {
383 throw new ServiceException("接口地址错误或返回为空"); 383 throw new ServiceException("接口地址错误或返回为空");
384 } 384 }
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/ApiAuthenticationAspect.java 0 → 100644
  1 +package org.jeecg.modules.wms.framework.aspectj;
  2 +
  3 +import java.lang.reflect.Method;
  4 +
  5 +import javax.servlet.http.HttpServletRequest;
  6 +
  7 +import org.aspectj.lang.JoinPoint;
  8 +import org.aspectj.lang.annotation.Aspect;
  9 +import org.aspectj.lang.annotation.Before;
  10 +import org.aspectj.lang.annotation.Pointcut;
  11 +import org.aspectj.lang.reflect.MethodSignature;
  12 +import org.springframework.scheduling.annotation.EnableAsync;
  13 +import org.springframework.stereotype.Component;
  14 +import org.springframework.web.context.request.RequestContextHolder;
  15 +import org.springframework.web.context.request.ServletRequestAttributes;
  16 +
  17 +import lombok.extern.slf4j.Slf4j;
  18 +
  19 +/**
  20 + * 第三方系统调用接口身份认证Aspect
  21 + * @author TanYibin
  22 + * @createDate 2023年2月14日
  23 + */
  24 +@Slf4j
  25 +@Aspect
  26 +@Component
  27 +@EnableAsync
  28 +public class ApiAuthenticationAspect {
  29 +
  30 + @Pointcut("execution(* org.jeecg.modules.wms.api..*.*(..)) "
  31 + + "&& (@annotation(org.springframework.web.bind.annotation.RequestMapping) "
  32 + + "|| @annotation(org.springframework.web.bind.annotation.GetMapping) "
  33 + + "|| @annotation(org.springframework.web.bind.annotation.PostMapping))")
  34 + public void executeController() {}
  35 +
  36 + /**
  37 + * API Token 验证
  38 + * @author TanYibin
  39 + * @createDate 2023年2月14日
  40 + * @param joinPoint
  41 + * @throws NoSuchMethodException
  42 + * @throws Throwable
  43 + */
  44 + @Before("executeController()")
  45 + public void doBefore(JoinPoint joinPoint) throws NoSuchMethodException, Throwable {
  46 + Method method = this.getTargetMethod(joinPoint);
  47 + // 检查是否有passtoken注释,有则跳过认证
  48 + if (method.isAnnotationPresent(PassApiAuthentication.class)) {
  49 + PassApiAuthentication passApiAuthentication = method.getAnnotation(PassApiAuthentication.class);
  50 + if (passApiAuthentication.required()) {
  51 + return;
  52 + }
  53 + }
  54 + // 获取request对象
  55 + ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
  56 + HttpServletRequest request = attributes.getRequest();
  57 + String token = request.getHeader("token");
  58 + log.info("开始校验Token:{}", token);
  59 + }
  60 +
  61 + /**
  62 + * 基于连接点信息获取目标方法对象
  63 + * @author TanYibin
  64 + * @createDate 2023年2月14日
  65 + * @param joinPoint
  66 + * @return
  67 + * @throws NoSuchMethodException
  68 + */
  69 + private Method getTargetMethod(JoinPoint joinPoint) throws NoSuchMethodException {
  70 + // 获取目标类对象
  71 + Class<?> clazz = joinPoint.getTarget().getClass();
  72 + // 获取方法签名信息,方法名和参数列表
  73 + MethodSignature signature = (MethodSignature)joinPoint.getSignature();
  74 + // 获取目标方法对象
  75 + return clazz.getDeclaredMethod(signature.getName(), signature.getParameterTypes());
  76 + }
  77 +
  78 + /**
  79 + * 获取方法类全名+方法名
  80 + * @author TanYibin
  81 + * @createDate 2023年2月14日
  82 + * @param method
  83 + * @return
  84 + */
  85 + private String getClassAndMethodName(Method method) {
  86 + // 获取类全名
  87 + String className = method.getDeclaringClass().getName();
  88 + // 获取方法名
  89 + String methodName = method.getName();
  90 + return new StringBuffer(className).append(".").append(methodName).toString();
  91 + }
  92 +}
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/ApiLogAspect.java
1 package org.jeecg.modules.wms.framework.aspectj; 1 package org.jeecg.modules.wms.framework.aspectj;
2 2
3 -import com.alibaba.fastjson.JSON;  
4 -import com.alibaba.fastjson.JSONObject;  
5 -import okhttp3.Request;  
6 -import okhttp3.Response; 3 +import java.net.InetAddress;
  4 +import java.net.URL;
  5 +import java.net.UnknownHostException;
  6 +import java.util.ArrayList;
  7 +import java.util.Collection;
  8 +import java.util.Date;
  9 +import java.util.Enumeration;
  10 +import java.util.HashMap;
  11 +import java.util.Iterator;
  12 +import java.util.Set;
  13 +
  14 +import javax.servlet.http.HttpServletRequest;
  15 +import javax.servlet.http.HttpServletResponse;
  16 +
7 import org.apache.commons.lang.exception.ExceptionUtils; 17 import org.apache.commons.lang.exception.ExceptionUtils;
8 import org.aspectj.lang.ProceedingJoinPoint; 18 import org.aspectj.lang.ProceedingJoinPoint;
9 import org.aspectj.lang.annotation.Around; 19 import org.aspectj.lang.annotation.Around;
@@ -24,21 +34,18 @@ import org.jeecg.utils.constant.QuantityConstant; @@ -24,21 +34,18 @@ import org.jeecg.utils.constant.QuantityConstant;
24 import org.slf4j.Logger; 34 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory; 35 import org.slf4j.LoggerFactory;
26 import org.springframework.beans.factory.annotation.Autowired; 36 import org.springframework.beans.factory.annotation.Autowired;
27 -import org.springframework.http.HttpHeaders;  
28 import org.springframework.scheduling.annotation.Async; 37 import org.springframework.scheduling.annotation.Async;
29 import org.springframework.scheduling.annotation.EnableAsync; 38 import org.springframework.scheduling.annotation.EnableAsync;
30 import org.springframework.stereotype.Component; 39 import org.springframework.stereotype.Component;
31 -import org.springframework.web.context.request.RequestContextHolder;  
32 -import org.springframework.web.context.request.ServletRequestAttributes;  
33 40
34 -import javax.servlet.http.HttpServletRequest;  
35 -import javax.servlet.http.HttpServletResponse;  
36 -import java.net.HttpURLConnection;  
37 -import java.net.URL;  
38 -import java.util.*; 41 +import com.alibaba.fastjson.JSON;
  42 +import com.alibaba.fastjson.JSONObject;
  43 +
  44 +import okhttp3.Request;
  45 +import okhttp3.Response;
39 46
40 /** 47 /**
41 - * Api调用日志记录处理 48 + * API调用日志记录处理
42 * @author huaheng 49 * @author huaheng
43 */ 50 */
44 @Aspect 51 @Aspect
@@ -65,181 +72,173 @@ public class ApiLogAspect { @@ -65,181 +72,173 @@ public class ApiLogAspect {
65 @Pointcut("@annotation(org.jeecg.modules.wms.framework.aspectj.lang.annotation.ApiLogger)") 72 @Pointcut("@annotation(org.jeecg.modules.wms.framework.aspectj.lang.annotation.ApiLogger)")
66 public void logPointCut() {} 73 public void logPointCut() {}
67 74
68 - @Around("logPointCut() && @annotation(apiLogger)") 75 + @Around("logPointCut() && @annotation(apiLogger)")
69 public Object around(ProceedingJoinPoint point, ApiLogger apiLogger) throws Throwable { 76 public Object around(ProceedingJoinPoint point, ApiLogger apiLogger) throws Throwable {
70 - // 实际上静态方法上的Aop注解无法拦截到  
71 - if ("WMS".equalsIgnoreCase(apiLogger.from())) {  
72 - return aroundWms2XXX(point, apiLogger);  
73 - } else {  
74 - return aroundXXX2Wms(point, apiLogger);  
75 - } 77 + return aroundXXX2Wms(point, apiLogger);
76 } 78 }
77 79
78 - /** 处理xxx调用wms接口的日志 **/ 80 + /** 记录第三方系统调用WMS接口的日志 **/
79 private Object aroundXXX2Wms(ProceedingJoinPoint point, ApiLogger apiLogger) { 81 private Object aroundXXX2Wms(ProceedingJoinPoint point, ApiLogger apiLogger) {
80 Object ret = null; 82 Object ret = null;
81 - ApiLog log = initApiLog(apiLogger, point); 83 + ApiLog apiLog = initApiLog(apiLogger, point);
82 try { 84 try {
83 ret = point.proceed(); 85 ret = point.proceed();
84 } catch (Throwable e) { 86 } catch (Throwable e) {
85 - setApiLogThrowable(log, e); 87 + setApiLogThrowable(apiLog, e);
86 ret = Result.error(e.getMessage()); 88 ret = Result.error(e.getMessage());
87 return ret; 89 return ret;
88 } finally { 90 } finally {
89 if (ret != null) { 91 if (ret != null) {
90 - finishApiLog(log, ret); 92 + finishApiLog(apiLog, ret);
91 } 93 }
92 } 94 }
93 return ret; 95 return ret;
94 } 96 }
95 97
96 - /** 处理WMS调用xxx接口的日志 **/  
97 - private Object aroundWms2XXX(ProceedingJoinPoint point, ApiLogger apiLogger) {  
98 - Object ret = null;  
99 - ApiLog log = new ApiLog();  
100 -  
101 - HttpURLConnection connection = null;  
102 - String body = null;  
103 -  
104 - try {  
105 -// HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();  
106 - connection = (HttpURLConnection)point.getArgs()[0];  
107 - body = (String)point.getArgs()[1];  
108 - initApiLog(connection, body);  
109 - ret = point.proceed();  
110 - } catch (Throwable e) {  
111 - setApiLogThrowable(log, e);  
112 - ret = Result.error(e.getMessage());  
113 - } finally {  
114 - if (ret != null) {  
115 - finishApiLog(log, connection, ret.toString());  
116 - }  
117 - }  
118 - return ret;  
119 - } 98 +// /** 记录WMS调用第三方接口的日志 **/
  99 +// private Object aroundWms2XXX(ProceedingJoinPoint point, ApiLogger apiLogger) {
  100 +// Object ret = null;
  101 +// ApiLog log = new ApiLog();
  102 +//
  103 +// HttpURLConnection connection = null;
  104 +// String body = null;
  105 +//
  106 +// try {
  107 +// connection = (HttpURLConnection)point.getArgs()[0];
  108 +// body = (String)point.getArgs()[1];
  109 +// initApiLog(connection, body);
  110 +// ret = point.proceed();
  111 +// } catch (Throwable e) {
  112 +// setApiLogThrowable(log, e);
  113 +// ret = Result.error(e.getMessage());
  114 +// } finally {
  115 +// if (ret != null) {
  116 +// finishApiLog(log, connection, ret.toString());
  117 +// }
  118 +// }
  119 +// return ret;
  120 +// }
  121 +
  122 +// /**
  123 +// * 记录响应头信息,保存日志到数据库
  124 +// */
  125 +// public static void finishApiLog(ApiLog log, HttpURLConnection connection, String body) {
  126 +// try {
  127 +// log.setResponseBody(body);
  128 +// log.setResponseTime(new Date());
  129 +// Long duration = log.getResponseTime().getTime() - log.getRequestTime().getTime();
  130 +// log.setDuration(duration.intValue());
  131 +// log.setHttpCode(connection.getResponseCode());
  132 +//
  133 +// // 响应头
  134 +// Set<String> keyset = connection.getHeaderFields().keySet();
  135 +// ArrayList<String> headerList = new ArrayList<>();
  136 +// Iterator<String> it = keyset.iterator();
  137 +// while (it.hasNext()) {
  138 +// String name = it.next();
  139 +// String header = connection.getHeaderField(name);
  140 +// if (name == null || "".equals(name)) {
  141 +// // 第一行没有name
  142 +// // HTTP/1.1 200 OK
  143 +// headerList.add(header);
  144 +// } else {
  145 +// headerList.add(name + ": " + header);
  146 +// }
  147 +// }
  148 +// log.setResponseHeader(org.apache.commons.lang3.StringUtils.join(headerList, "\n"));
  149 +// Result json = JSON.parseObject(body, Result.class);
  150 +// log.setRetCode(json.getCode());
  151 +// } catch (Exception e) {
  152 +// e.printStackTrace();
  153 +// } finally {
  154 +// SpringUtils.getBean(ApiLogAspect.class).saveApiLog(log);
  155 +// }
  156 +// }
  157 +
  158 +// /**
  159 +// * 根据url,从address表中判断调用的去向
  160 +// */
  161 +// public static void parseUrl(ApiLog log, URL url, String warehouseCode) {
  162 +// try {
  163 +// String[] spList = url.toString().split("/");
  164 +// String apiName = spList[spList.length - 1];
  165 +// String ip = JeecgSystemApplication.getLocalHostExactAddress().getHostAddress();
  166 +// Address address = addressService.getAddressByUrl(url.toString(), warehouseCode);
  167 +// log.setApiName(apiName);
  168 +// log.setRequestFrom("WMS");
  169 +// log.setIp(ip);
  170 +// log.setResponseBy(address.getParam().toUpperCase());
  171 +// } catch (Exception e) {
  172 +// e.printStackTrace();
  173 +// }
  174 +// }
  175 +
  176 +// /**
  177 +// * 记录WMS调用第三方系统接口的请求信息
  178 +// * 在HttpUtils.body POST方法中直接调用本类static方法
  179 +// **/
  180 +// public static ApiLog initApiLog(String Method, String urlStr, String body, HttpHeaders headers, String warehouseCode) {
  181 +// ApiLog log = new ApiLog();
  182 +// try {
  183 +// URL url = new URL(urlStr);
  184 +// log.setApiMethod(Method);
  185 +// log.setUrl(urlStr);
  186 +// log.setRequestTime(new Date());
  187 +// parseUrl(log, url, warehouseCode);
  188 +//
  189 +// // 请求头
  190 +// Set<String> keySet = headers.keySet();
  191 +// ArrayList<String> headerList = new ArrayList<>();
  192 +// Iterator<String> it = keySet.iterator();
  193 +// while (it.hasNext()) {
  194 +// String name = it.next();
  195 +// String header = String.valueOf(headers.getContentType());
  196 +// headerList.add(name + ": " + header);
  197 +// }
  198 +//
  199 +// log.setRequestHeader(org.apache.commons.lang3.StringUtils.join(headerList, "\n"));
  200 +// log.setRequestBody(body);
  201 +// } catch (Exception e) {
  202 +// e.printStackTrace();
  203 +// }
  204 +//
  205 +// return log;
  206 +// }
  207 +
  208 +// /**
  209 +// * 记录WMS调用第三方系统接口的请求信息
  210 +// * 在HttpUtils.body POST方法中直接调用本类static方法
  211 +// **/
  212 +// public static ApiLog initApiLog(HttpURLConnection connection, String body) {
  213 +// ApiLog log = new ApiLog();
  214 +// try {
  215 +// log.setApiMethod(connection.getRequestMethod());
  216 +// log.setUrl(connection.getURL().toString());
  217 +// log.setRequestTime(new Date());
  218 +// parseUrl(log, connection.getURL());
  219 +//
  220 +// // 请求头
  221 +// Set<String> keySet = connection.getRequestProperties().keySet();
  222 +// ArrayList<String> headerList = new ArrayList<>();
  223 +// Iterator<String> it = keySet.iterator();
  224 +// while (it.hasNext()) {
  225 +// String name = it.next();
  226 +// String header = connection.getRequestProperty(name);
  227 +// headerList.add(name + ":" + header);
  228 +// }
  229 +//
  230 +// log.setRequestHeader(org.apache.commons.lang3.StringUtils.join(headerList, "\n"));
  231 +// log.setRequestBody(body);
  232 +// } catch (Exception e) {
  233 +// e.printStackTrace();
  234 +// }
  235 +//
  236 +// return log;
  237 +// }
120 238
121 /** 239 /**
122 - * 记录响应头信息  
123 - **/  
124 - public static void finishApiLog(ApiLog log, HttpURLConnection connection, String body) {  
125 - try {  
126 - log.setResponseBody(body);  
127 - log.setResponseTime(new Date());  
128 - Long duration = log.getResponseTime().getTime() - log.getRequestTime().getTime();  
129 - log.setDuration(duration.intValue());  
130 - log.setHttpCode(connection.getResponseCode());  
131 -  
132 - // 响应头  
133 - Set<String> keyset = connection.getHeaderFields().keySet();  
134 - ArrayList<String> headerList = new ArrayList<>();  
135 - Iterator<String> it = keyset.iterator();  
136 - while (it.hasNext()) {  
137 - String name = it.next();  
138 - String header = connection.getHeaderField(name);  
139 - if (name == null || "".equals(name)) {  
140 - // 第一行没有name  
141 - // HTTP/1.1 200 OK  
142 - headerList.add(header);  
143 - } else {  
144 - headerList.add(name + ": " + header);  
145 - }  
146 - }  
147 - log.setResponseHeader(org.apache.commons.lang3.StringUtils.join(headerList, "\n"));  
148 - Result json = JSON.parseObject(body, Result.class);  
149 - log.setRetCode(json.getCode());  
150 - } catch (Exception e) {  
151 - e.printStackTrace();  
152 - } finally {  
153 - SpringUtils.getBean(ApiLogAspect.class).saveApiLog(log);  
154 - }  
155 - }  
156 -  
157 - /**  
158 - * 根据url,从address表中判断调用的去向  
159 - */  
160 - public static void parseUrl(ApiLog log, URL url, String warehouseCode) {  
161 - try {  
162 - String[] spList = url.toString().split("/");  
163 - String apiName = spList[spList.length - 1];  
164 -// int index = url.toString().lastIndexOf(apiName);  
165 -// String addUrl = url.toString().substring(0, index);  
166 - String ip = JeecgSystemApplication.getLocalHostExactAddress().getHostAddress();  
167 - Address address = addressService.getAddressByUrl(url.toString(), warehouseCode);  
168 - log.setApiName(apiName);  
169 - log.setRequestFrom("WMS");  
170 - log.setIp(ip);  
171 - log.setResponseBy(address.getParam().toUpperCase());  
172 - } catch (Exception e) {  
173 - e.printStackTrace();  
174 - }  
175 - }  
176 -  
177 - /**  
178 - * 记录WMS调用外接口的请求信息  
179 - * 在HttpUtils.body POST方法中直接调用本类static方法  
180 - **/  
181 - public static ApiLog initApiLog(String Method, String urlStr, String body, HttpHeaders headers, String warehouseCode) {  
182 - ApiLog log = new ApiLog();  
183 - try {  
184 - URL url = new URL(urlStr);  
185 - log.setApiMethod(Method);  
186 - log.setUrl(urlStr);  
187 - log.setRequestTime(new Date());  
188 - parseUrl(log, url, warehouseCode);  
189 -  
190 - // 请求头  
191 - Set<String> keySet = headers.keySet();  
192 - ArrayList<String> headerList = new ArrayList<>();  
193 - Iterator<String> it = keySet.iterator();  
194 - while (it.hasNext()) {  
195 - String name = it.next();  
196 - String header = String.valueOf(headers.getContentType());  
197 - headerList.add(name + ": " + header);  
198 - }  
199 -  
200 - log.setRequestHeader(org.apache.commons.lang3.StringUtils.join(headerList, "\n"));  
201 - log.setRequestBody(body);  
202 - } catch (Exception e) {  
203 - e.printStackTrace();  
204 - }  
205 -  
206 - return log;  
207 - }  
208 -  
209 - /**  
210 - * 记录WMS调用外接口的请求信息  
211 - * 在HttpUtils.body POST方法中直接调用本类static方法  
212 - **/  
213 - public static ApiLog initApiLog(HttpURLConnection connection, String body) {  
214 - ApiLog log = new ApiLog();  
215 - try {  
216 - log.setApiMethod(connection.getRequestMethod());  
217 - log.setUrl(connection.getURL().toString());  
218 - log.setRequestTime(new Date());  
219 - parseUrl(log, connection.getURL());  
220 -  
221 - // 请求头  
222 - Set<String> keySet = connection.getRequestProperties().keySet();  
223 - ArrayList<String> headerList = new ArrayList<>();  
224 - Iterator<String> it = keySet.iterator();  
225 - while (it.hasNext()) {  
226 - String name = it.next();  
227 - String header = connection.getRequestProperty(name);  
228 - headerList.add(name + ":" + header);  
229 - }  
230 -  
231 - log.setRequestHeader(org.apache.commons.lang3.StringUtils.join(headerList, "\n"));  
232 - log.setRequestBody(body);  
233 - } catch (Exception e) {  
234 - e.printStackTrace();  
235 - }  
236 -  
237 - return log;  
238 - }  
239 -  
240 - /**  
241 - * 记录WMS调用外接口的请求信息  
242 - * 在HttpUtils.bodypost方法中直接调用本类static方法 240 + * 记录WMS调用第三方系统接口的请求信息
  241 + * 在OKHttpUtils.bodypost方法中直接调用本类static方法
243 **/ 242 **/
244 public static ApiLog initApiLog(Request request, String body) { 243 public static ApiLog initApiLog(Request request, String body) {
245 ApiLog log = new ApiLog(); 244 ApiLog log = new ApiLog();
@@ -294,8 +293,6 @@ public class ApiLogAspect { @@ -294,8 +293,6 @@ public class ApiLogAspect {
294 try { 293 try {
295 String[] spList = url.toString().split("/"); 294 String[] spList = url.toString().split("/");
296 String apiName = spList[spList.length - 1]; 295 String apiName = spList[spList.length - 1];
297 -// int index = url.toString().lastIndexOf(apiName);  
298 -// String addUrl = url.toString().substring(0, index);  
299 String ip = JeecgSystemApplication.getLocalHostExactAddress().getHostAddress(); 296 String ip = JeecgSystemApplication.getLocalHostExactAddress().getHostAddress();
300 Address address = addressService.getAddressByUrl(url.toString(), QuantityConstant.DEFAULT_WAREHOUSE); 297 Address address = addressService.getAddressByUrl(url.toString(), QuantityConstant.DEFAULT_WAREHOUSE);
301 log.setApiName(apiName); 298 log.setApiName(apiName);
@@ -307,40 +304,40 @@ public class ApiLogAspect { @@ -307,40 +304,40 @@ public class ApiLogAspect {
307 } 304 }
308 } 305 }
309 306
310 - /**  
311 - * 记录响应头信息  
312 - **/  
313 - public static void finishApiLog(ApiLog log, HttpHeaders headers, String body) {  
314 - try {  
315 - log.setResponseBody(body);  
316 - log.setResponseTime(new Date());  
317 - Long duration = log.getResponseTime().getTime() - log.getRequestTime().getTime();  
318 - log.setDuration(duration.intValue());  
319 - log.setHttpCode(200);  
320 -  
321 - // 响应头  
322 - Set<String> keyset = headers.keySet();  
323 - ArrayList<String> headerList = new ArrayList<>();  
324 - Iterator<String> it = keyset.iterator();  
325 - while (it.hasNext()) {  
326 - String name = it.next();  
327 - String header = String.valueOf(headers.getContentType());  
328 - if (name == null || "".equals(name))  
329 - // 第一行没有name  
330 - // HTTP/1.1 200 OK  
331 - headerList.add(header);  
332 - else  
333 - headerList.add(name + ": " + header);  
334 - }  
335 - log.setResponseHeader(org.apache.commons.lang3.StringUtils.join(headerList, "\n"));  
336 - Result json = JSON.parseObject(body, Result.class);  
337 - log.setRetCode(json.getCode());  
338 - } catch (Exception e) {  
339 - e.printStackTrace();  
340 - } finally {  
341 - SpringUtils.getBean(ApiLogAspect.class).saveApiLog(log);  
342 - }  
343 - } 307 +// /**
  308 +// * 记录响应头信息
  309 +// **/
  310 +// public static void finishApiLog(ApiLog log, HttpHeaders headers, String body) {
  311 +// try {
  312 +// log.setResponseBody(body);
  313 +// log.setResponseTime(new Date());
  314 +// Long duration = log.getResponseTime().getTime() - log.getRequestTime().getTime();
  315 +// log.setDuration(duration.intValue());
  316 +// log.setHttpCode(200);
  317 +//
  318 +// // 响应头
  319 +// Set<String> keyset = headers.keySet();
  320 +// ArrayList<String> headerList = new ArrayList<>();
  321 +// Iterator<String> it = keyset.iterator();
  322 +// while (it.hasNext()) {
  323 +// String name = it.next();
  324 +// String header = String.valueOf(headers.getContentType());
  325 +// if (name == null || "".equals(name))
  326 +// // 第一行没有name
  327 +// // HTTP/1.1 200 OK
  328 +// headerList.add(header);
  329 +// else
  330 +// headerList.add(name + ": " + header);
  331 +// }
  332 +// log.setResponseHeader(org.apache.commons.lang3.StringUtils.join(headerList, "\n"));
  333 +// Result json = JSON.parseObject(body, Result.class);
  334 +// log.setRetCode(json.getCode());
  335 +// } catch (Exception e) {
  336 +// e.printStackTrace();
  337 +// } finally {
  338 +// SpringUtils.getBean(ApiLogAspect.class).saveApiLog(log);
  339 +// }
  340 +// }
344 341
345 private ApiLog initApiLog(ApiLogger apiLogger, ProceedingJoinPoint point) { 342 private ApiLog initApiLog(ApiLogger apiLogger, ProceedingJoinPoint point) {
346 ApiLog log = new ApiLog(); 343 ApiLog log = new ApiLog();
@@ -351,19 +348,16 @@ public class ApiLogAspect { @@ -351,19 +348,16 @@ public class ApiLogAspect {
351 log.setApiName(apiLogger.apiName()); 348 log.setApiName(apiLogger.apiName());
352 349
353 HttpServletRequest request = ServletUtils.getRequest(); 350 HttpServletRequest request = ServletUtils.getRequest();
354 -  
355 String qryStr = request.getQueryString(); 351 String qryStr = request.getQueryString();
356 String url = request.getRequestURL().toString(); 352 String url = request.getRequestURL().toString();
357 if (StringUtils.isNotEmpty(qryStr)) { 353 if (StringUtils.isNotEmpty(qryStr)) {
358 url = url + "?" + qryStr; 354 url = url + "?" + qryStr;
359 } 355 }
360 log.setUrl(url); 356 log.setUrl(url);
361 -  
362 log.setApiMethod(request.getMethod()); 357 log.setApiMethod(request.getMethod());
363 - log.setIp(request.getRemoteAddr()); 358 + log.setIp(this.getIpAddr(request));
364 359
365 rebuildRequestHeader(log); 360 rebuildRequestHeader(log);
366 -  
367 rebuildRequestBody(log, request); 361 rebuildRequestBody(log, request);
368 362
369 // 如果reqeust中取不到post参数,就从接口方法参数中取json对象 363 // 如果reqeust中取不到post参数,就从接口方法参数中取json对象
@@ -410,7 +404,7 @@ public class ApiLogAspect { @@ -410,7 +404,7 @@ public class ApiLogAspect {
410 ex.printStackTrace(); 404 ex.printStackTrace();
411 } 405 }
412 } 406 }
413 - 407 +
414 public static void setApiLogThrowable(ApiLog log, Throwable e) { 408 public static void setApiLogThrowable(ApiLog log, Throwable e) {
415 try { 409 try {
416 String exception = ExceptionUtils.getFullStackTrace(e); 410 String exception = ExceptionUtils.getFullStackTrace(e);
@@ -429,7 +423,7 @@ public class ApiLogAspect { @@ -429,7 +423,7 @@ public class ApiLogAspect {
429 while (names.hasMoreElements()) { 423 while (names.hasMoreElements()) {
430 String name = (String)names.nextElement(); 424 String name = (String)names.nextElement();
431 String header = req.getHeader(name); 425 String header = req.getHeader(name);
432 - headerList.add(name + ": " + header); 426 + headerList.add(name + ":" + header);
433 } 427 }
434 String headers = org.apache.commons.lang3.StringUtils.join(headerList, "\n"); 428 String headers = org.apache.commons.lang3.StringUtils.join(headerList, "\n");
435 log.setRequestHeader(headers); 429 log.setRequestHeader(headers);
@@ -527,4 +521,35 @@ public class ApiLogAspect { @@ -527,4 +521,35 @@ public class ApiLogAspect {
527 e.printStackTrace(); 521 e.printStackTrace();
528 } 522 }
529 } 523 }
  524 +
  525 + public String getIpAddr(HttpServletRequest request) {
  526 + String ipAddress = request.getHeader("x-forwarded-for");
  527 + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
  528 + ipAddress = request.getHeader("Proxy-Client-IP");
  529 + }
  530 + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
  531 + ipAddress = request.getHeader("WL-Proxy-Client-IP");
  532 + }
  533 + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
  534 + ipAddress = request.getRemoteAddr();
  535 + if (ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")) {
  536 + // 根据网卡取本机配置的IP
  537 + InetAddress inet = null;
  538 + try {
  539 + inet = InetAddress.getLocalHost();
  540 + } catch (UnknownHostException e) {
  541 + e.printStackTrace();
  542 + }
  543 + ipAddress = inet.getHostAddress();
  544 + }
  545 + }
  546 + // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
  547 + // "***.***.***.***".length() = 15
  548 + if (ipAddress != null && ipAddress.length() > 15) {
  549 + if (ipAddress.indexOf(",") > 0) {
  550 + ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
  551 + }
  552 + }
  553 + return ipAddress;
  554 + }
530 } 555 }
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/PassApiAuthentication.java 0 → 100644
  1 +package org.jeecg.modules.wms.framework.aspectj;
  2 +
  3 +import java.lang.annotation.ElementType;
  4 +import java.lang.annotation.Retention;
  5 +import java.lang.annotation.RetentionPolicy;
  6 +import java.lang.annotation.Target;
  7 +
  8 +/**
  9 + * 跳过API身份验证注解
  10 + * @author TanYibin
  11 + * @createDate 2023年2月13日
  12 + */
  13 +@Target({ElementType.METHOD, ElementType.TYPE})
  14 +@Retention(RetentionPolicy.RUNTIME)
  15 +public @interface PassApiAuthentication {
  16 + boolean required() default true;
  17 +}
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/controller/TestController.java
@@ -43,14 +43,14 @@ public class TestController extends HuahengBaseController { @@ -43,14 +43,14 @@ public class TestController extends HuahengBaseController {
43 private ISysDataLogService sysDataLogService; 43 private ISysDataLogService sysDataLogService;
44 44
45 45
46 - @ApiLogger(apiName = "API接口第三方Token校验测试", from = "TEST")  
47 - @ResponseBody  
48 - @PostMapping(value = "/api/wms/testTokenCheck")  
49 - public Result<?> testTokenCheck(@RequestBody Map<String, String> paramMap, HttpServletRequest request) {  
50 -  
51 -  
52 - return new Result<>();  
53 - } 46 +// @ApiLogger(apiName = "API接口第三方Token校验测试", from = "TEST")
  47 +// @ResponseBody
  48 +// @PostMapping(value = "/api/wms/testTokenCheck")
  49 +// public Result<?> testTokenCheck(@RequestBody Map<String, String> paramMap, HttpServletRequest request) {
  50 +//
  51 +//
  52 +// return new Result<>();
  53 +// }
54 54
55 55
56 @AutoLog(value = "TestController-testRedis") 56 @AutoLog(value = "TestController-testRedis")
huaheng-wms-core/src/main/java/org/jeecg/utils/http/HttpUtils.java deleted
1 -package org.jeecg.utils.http;  
2 -  
3 -import org.apache.commons.io.IOUtils;  
4 -import org.apache.http.HttpResponse;  
5 -import org.apache.http.HttpStatus;  
6 -import org.apache.http.client.methods.HttpPost;  
7 -import org.apache.http.entity.StringEntity;  
8 -import org.apache.http.impl.client.CloseableHttpClient;  
9 -import org.apache.http.impl.client.HttpClients;  
10 -import org.jeecg.modules.wms.framework.aspectj.ApiLogAspect;  
11 -import org.jeecg.modules.wms.monitor.apiLog.entity.ApiLog;  
12 -import org.slf4j.Logger;  
13 -import org.slf4j.LoggerFactory;  
14 -  
15 -import javax.net.ssl.*;  
16 -import java.io.*;  
17 -import java.net.*;  
18 -import java.security.cert.X509Certificate;  
19 -  
20 -/**  
21 - * 通用http发送方法  
22 - * @author huaheng  
23 - */  
24 -public class HttpUtils {  
25 -  
26 - private static final Logger log = LoggerFactory.getLogger(HttpUtils.class);  
27 -  
28 - /**  
29 - * 向指定 URL 发送GET方法的请求  
30 - * @param url 发送请求的 URL  
31 - * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。  
32 - * @return 所代表远程资源的响应结果  
33 - */  
34 - public static String sendGet(String url, String param) {  
35 - StringBuilder result = new StringBuilder();  
36 - BufferedReader in = null;  
37 - try {  
38 - String urlNameString = url + "?" + param;  
39 - log.info("sendGet - {}", urlNameString);  
40 - URL realUrl = new URL(urlNameString);  
41 - URLConnection connection = realUrl.openConnection();  
42 - connection.setRequestProperty("accept", "*/*");  
43 - connection.setRequestProperty("connection", "Keep-Alive");  
44 - connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");  
45 - connection.connect();  
46 - in = new BufferedReader(new InputStreamReader(connection.getInputStream()));  
47 - String line;  
48 - while ((line = in.readLine()) != null) {  
49 - result.append(line);  
50 - }  
51 - log.info("recv - {}", result);  
52 - } catch (ConnectException e) {  
53 - log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e.getMessage());  
54 - } catch (SocketTimeoutException e) {  
55 - log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e.getMessage());  
56 - } catch (IOException e) {  
57 - log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e.getMessage());  
58 - } catch (Exception e) {  
59 - log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e.getMessage());  
60 - } finally {  
61 - try {  
62 - if (in != null) {  
63 - in.close();  
64 - }  
65 - } catch (Exception ex) {  
66 - log.error("调用in.close Exception, url=" + url + ",param=" + param, ex.getMessage());  
67 - }  
68 - }  
69 - return result.toString();  
70 - }  
71 -  
72 - // post请求 为erp回传定制  
73 - public static String erppost(String strURL, String params, String key) {  
74 - HttpURLConnection connection = null;  
75 - InputStream is = null;  
76 - OutputStreamWriter out = null;  
77 - String result = null;  
78 - ApiLog log = null;  
79 -  
80 - try {  
81 - URL url = new URL(strURL);// 创建连接  
82 -// String ur = "" + url;  
83 - connection = (HttpURLConnection)url.openConnection();  
84 - connection.setDoOutput(true);  
85 - connection.setDoInput(true);  
86 - connection.setUseCaches(false);  
87 - connection.setInstanceFollowRedirects(true);  
88 - connection.setRequestMethod("POST");// 设置请求方式  
89 - connection.setRequestProperty("Accept", "application/json");// 设置接收数据的格式  
90 - connection.setRequestProperty("Content-Type", "application/json");// 设置发送数据的格式  
91 - connection.setRequestProperty("apiKey", key);// 测试环境key  
92 - log = ApiLogAspect.initApiLog(connection, params);  
93 - connection.connect();  
94 - out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");// utf-8编码  
95 - out.append(params);  
96 - out.flush();  
97 - out.close(); // 读取响应  
98 - int length = (int)connection.getContentLength();// 获取长度  
99 - is = connection.getInputStream();  
100 -// BufferedReader br = new BufferedReader(new InputStreamReader(is));  
101 - length = 10000;  
102 - if (length > 0) {  
103 - byte[] data = new byte[length];  
104 - byte[] temp = new byte[512];  
105 - int readLen = 0;  
106 - int destPos = 0;  
107 - while ((readLen = is.read(temp)) > 0) {  
108 - System.arraycopy(temp, 0, data, destPos, readLen);  
109 - destPos += readLen;  
110 - }  
111 - result = new String(data, "UTF-8");  
112 - System.out.println(result);  
113 - }  
114 - } catch (Exception e) {  
115 - ApiLogAspect.setApiLogException(log, e);  
116 - e.printStackTrace();  
117 - } finally {  
118 - ApiLogAspect.finishApiLog(log, connection, result);  
119 - if (connection != null)  
120 - connection.disconnect();  
121 - IOUtils.closeQuietly(out, is);  
122 - }  
123 - return result;  
124 - }  
125 -  
126 - /**  
127 - * 向指定 URL 发送POST方法的请求  
128 - * @param url 发送请求的 URL  
129 - * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。  
130 - * @return 所代表远程资源的响应结果  
131 - */  
132 - public static String sendPost(String url, String param) {  
133 - PrintWriter out = null;  
134 - BufferedReader in = null;  
135 - StringBuilder result = new StringBuilder();  
136 - try {  
137 - String urlNameString = url + "?" + param;  
138 - log.info("sendPost - {}", urlNameString);  
139 - URL realUrl = new URL(urlNameString);  
140 - URLConnection conn = realUrl.openConnection();  
141 - conn.setRequestProperty("accept", "*/*");  
142 - conn.setRequestProperty("connection", "Keep-Alive");  
143 - conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");  
144 - conn.setRequestProperty("Accept-Charset", "utf-8");  
145 - conn.setRequestProperty("contentType", "utf-8");  
146 - conn.setDoOutput(true);  
147 - conn.setDoInput(true);  
148 - out = new PrintWriter(conn.getOutputStream());  
149 - out.print(param);  
150 - out.flush();  
151 - if (((HttpURLConnection)conn).getResponseCode() >= 390) {  
152 - in = new BufferedReader(new InputStreamReader(((HttpURLConnection)conn).getErrorStream()));  
153 - } else {  
154 - in = new BufferedReader(new InputStreamReader(conn.getInputStream()));  
155 - }  
156 -// in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));  
157 - String line;  
158 - while ((line = in.readLine()) != null) {  
159 - result.append(line);  
160 - }  
161 - log.info("recv - {}", result);  
162 - } catch (ConnectException e) {  
163 - log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e.getMessage());  
164 - } catch (SocketTimeoutException e) {  
165 - log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e.getMessage());  
166 - } catch (IOException e) {  
167 - log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e.getMessage());  
168 - } catch (Exception e) {  
169 - log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e.getMessage());  
170 - } finally {  
171 - try {  
172 - if (out != null) {  
173 - out.close();  
174 - }  
175 - if (in != null) {  
176 - in.close();  
177 - }  
178 - } catch (IOException ex) {  
179 - log.error("调用in.close Exception, url=" + url + ",param=" + param, ex.getMessage());  
180 - }  
181 - }  
182 - return result.toString();  
183 - }  
184 -  
185 - public static String sendSSLPost(String url, String param) {  
186 - StringBuilder result = new StringBuilder();  
187 - String urlNameString = url + "?" + param;  
188 - try {  
189 - log.info("sendSSLPost - {}", urlNameString);  
190 - SSLContext sc = SSLContext.getInstance("SSL");  
191 - sc.init(null, new TrustManager[] {new TrustAnyTrustManager()}, new java.security.SecureRandom());  
192 - URL console = new URL(urlNameString);  
193 - HttpsURLConnection conn = (HttpsURLConnection)console.openConnection();  
194 - conn.setRequestProperty("accept", "*/*");  
195 - conn.setRequestProperty("connection", "Keep-Alive");  
196 - conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");  
197 - conn.setRequestProperty("Accept-Charset", "utf-8");  
198 - conn.setRequestProperty("contentType", "utf-8");  
199 - conn.setDoOutput(true);  
200 - conn.setDoInput(true);  
201 -  
202 - conn.setSSLSocketFactory(sc.getSocketFactory());  
203 - conn.setHostnameVerifier(new TrustAnyHostnameVerifier());  
204 - conn.connect();  
205 - InputStream is = conn.getInputStream();  
206 - BufferedReader br = new BufferedReader(new InputStreamReader(is));  
207 - String ret = "";  
208 - while ((ret = br.readLine()) != null) {  
209 - if (ret != null && !"".equals(ret.trim())) {  
210 - result.append(new String(ret.getBytes("ISO-8859-1"), "utf-8"));  
211 - }  
212 - }  
213 - log.info("recv - {}", result);  
214 - conn.disconnect();  
215 - br.close();  
216 - } catch (ConnectException e) {  
217 - log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e.getMessage());  
218 - } catch (SocketTimeoutException e) {  
219 - log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e.getMessage());  
220 - } catch (IOException e) {  
221 - log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e.getMessage());  
222 - } catch (Exception e) {  
223 - log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e.getMessage());  
224 - }  
225 - return result.toString();  
226 - }  
227 -  
228 - // 此方法是将参数以body形式发送post请求  
229 - public static String bodypost(String strURL, String params) {  
230 - System.out.println(strURL);  
231 - System.out.println(params);  
232 - HttpURLConnection connection = null;  
233 - InputStream is = null;  
234 - OutputStreamWriter out = null;  
235 - String result = null;  
236 - ApiLog log = null;  
237 -  
238 - try {  
239 - URL url = new URL(strURL);// 创建连接  
240 - String stringUrl = "" + url;  
241 - connection = (HttpURLConnection)url.openConnection();  
242 - connection.setDoOutput(true);  
243 - connection.setDoInput(true);  
244 - connection.setUseCaches(false);  
245 - connection.setInstanceFollowRedirects(true);  
246 - connection.setRequestMethod("POST");// 设置请求方式  
247 - connection.setRequestProperty("Accept", "application/json");// 设置接收数据的格式  
248 - connection.setRequestProperty("Content-Type", "application/json");// 设置发送数据的格式  
249 - if ((stringUrl.contains("10.0.15.19"))) {  
250 - connection.setRequestProperty("apiKey", "c687ef505557428595e6a596fba5de6c");// 测试环境key  
251 - }  
252 - log = ApiLogAspect.initApiLog(connection, params);  
253 - connection.connect();  
254 - out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");// utf-8编码  
255 - out.append(params);  
256 - out.flush();  
257 - out.close(); // 读取响应  
258 - int length = (int)connection.getContentLength();// 获取长度  
259 - is = connection.getInputStream();  
260 -// BufferedReader br = new BufferedReader(new InputStreamReader(is));  
261 - length = 10000;  
262 - if (length > 0) {  
263 - byte[] data = new byte[length];  
264 - byte[] temp = new byte[512];  
265 - int readLen = 0;  
266 - int destPos = 0;  
267 - while ((readLen = is.read(temp)) > 0) {  
268 - System.arraycopy(temp, 0, data, destPos, readLen);  
269 - destPos += readLen;  
270 - }  
271 - result = new String(data, "UTF-8");  
272 - System.out.println(result);  
273 - }  
274 - } catch (Exception e) {  
275 - ApiLogAspect.setApiLogException(log, e);  
276 - e.printStackTrace();  
277 - } finally {  
278 - ApiLogAspect.finishApiLog(log, connection, result);  
279 - if (connection != null)  
280 - connection.disconnect();  
281 - IOUtils.closeQuietly(out, is);  
282 - }  
283 - return result;  
284 - }  
285 -  
286 - /**  
287 - * 发送以json为参数的POST请求  
288 - * @param json  
289 - * @param url  
290 - * @return  
291 - */  
292 - public static String sendJsonPostToken(String json, String url) {  
293 - String result = "";  
294 - HttpPost post = new HttpPost(url);  
295 - try {  
296 - CloseableHttpClient httpClient = HttpClients.createDefault();  
297 -  
298 - post.setHeader("Content-Type", "application/json;charset=utf-8");  
299 - post.addHeader("Authorization", "Basic YWRtaW46");  
300 - StringEntity postingString = new StringEntity(json, "utf-8");  
301 - post.setEntity(postingString);  
302 - HttpResponse response = httpClient.execute(post);  
303 -  
304 - InputStream in = response.getEntity().getContent();  
305 - BufferedReader br = new BufferedReader(new InputStreamReader(in, "utf-8"));  
306 - StringBuilder strber = new StringBuilder();  
307 - String line = null;  
308 - while ((line = br.readLine()) != null) {  
309 - strber.append(line + '\n');  
310 - }  
311 - br.close();  
312 - in.close();  
313 - result = strber.toString();  
314 - if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {  
315 - result = "服务器异常";  
316 - }  
317 - } catch (Exception e) {  
318 - System.out.println("请求异常");  
319 - throw new RuntimeException(e);  
320 - } finally {  
321 - post.abort();  
322 - }  
323 - return result;  
324 - }  
325 -  
326 - private static class TrustAnyTrustManager implements X509TrustManager {  
327 - @Override  
328 - public void checkClientTrusted(X509Certificate[] chain, String authType) {}  
329 -  
330 - @Override  
331 - public void checkServerTrusted(X509Certificate[] chain, String authType) {}  
332 -  
333 - @Override  
334 - public X509Certificate[] getAcceptedIssuers() {  
335 - return new X509Certificate[] {};  
336 - }  
337 - }  
338 -  
339 - private static class TrustAnyHostnameVerifier implements HostnameVerifier {  
340 - @Override  
341 - public boolean verify(String hostname, SSLSession session) {  
342 - return true;  
343 - }  
344 - }  
345 -  
346 -}  
huaheng-wms-core/src/main/java/org/jeecg/utils/http/OkHttpUtils.java
@@ -3,6 +3,8 @@ package org.jeecg.utils.http; @@ -3,6 +3,8 @@ package org.jeecg.utils.http;
3 import com.alibaba.fastjson.JSON; 3 import com.alibaba.fastjson.JSON;
4 import com.alibaba.fastjson.TypeReference; 4 import com.alibaba.fastjson.TypeReference;
5 import com.alibaba.fastjson.parser.Feature; 5 import com.alibaba.fastjson.parser.Feature;
  6 +
  7 +import net.bytebuddy.asm.Advice.This;
6 import okhttp3.*; 8 import okhttp3.*;
7 import org.jeecg.modules.wms.framework.aspectj.ApiLogAspect; 9 import org.jeecg.modules.wms.framework.aspectj.ApiLogAspect;
8 import org.jeecg.modules.wms.monitor.apiLog.entity.ApiLog; 10 import org.jeecg.modules.wms.monitor.apiLog.entity.ApiLog;
@@ -76,54 +78,68 @@ public class OkHttpUtils { @@ -76,54 +78,68 @@ public class OkHttpUtils {
76 * @return 所代表远程资源的响应结果 78 * @return 所代表远程资源的响应结果
77 */ 79 */
78 public static String sendGet(String url, String param) { 80 public static String sendGet(String url, String param) {
  81 + ApiLog apiLog = null;
79 // headers 请求头 82 // headers 请求头
80 Map<String, String> headers = new HashMap<>(); 83 Map<String, String> headers = new HashMap<>();
81 // 请求URI 84 // 请求URI
82 String urlNameString = url + "?" + param; 85 String urlNameString = url + "?" + param;
83 -  
84 Request.Builder builder = new Request.Builder(); 86 Request.Builder builder = new Request.Builder();
85 buildHeader(builder, headers); 87 buildHeader(builder, headers);
86 88
87 Request request = builder.url(urlNameString).get().build(); 89 Request request = builder.url(urlNameString).get().build();
88 Response response = null; 90 Response response = null;
  91 + String result = null;
89 try { 92 try {
  93 + apiLog = ApiLogAspect.initApiLog(request, param);
90 response = HTTP_CLIENT.newCall(request).execute(); 94 response = HTTP_CLIENT.newCall(request).execute();
91 if (response.isSuccessful() && Objects.nonNull(response.body())) { 95 if (response.isSuccessful() && Objects.nonNull(response.body())) {
92 - String result = response.body().string();  
93 - log.info("执行GET请求,url:{},header:{},param:{} 成功,返回数据:{}", url, JSON.toJSONString(headers), param, result);  
94 - return result; 96 + result = response.body().string();
  97 + log.info("执行GET请求,url:{},header:{},param:{} 成功,返回结果:{}", url, JSON.toJSONString(headers), param, result);
95 } 98 }
96 } catch (IOException e) { 99 } catch (IOException e) {
97 log.error("执行GET请求,url:{},header:{},param:{} 失败!", url, JSON.toJSONString(headers), param, e); 100 log.error("执行GET请求,url:{},header:{},param:{} 失败!", url, JSON.toJSONString(headers), param, e);
  101 + ApiLogAspect.setApiLogException(apiLog, e);
  102 + } finally {
  103 + ApiLogAspect.finishApiLog(apiLog, response, result);
98 } 104 }
99 - return ""; 105 + return result;
100 } 106 }
101 107
102 /** 108 /**
103 * 向指定 URL 发送POST方法的请求 109 * 向指定 URL 发送POST方法的请求
104 - * @param url 发送请求的 URL // * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。  
105 - * @return 所代表远程资源的响应结果 110 + * @param url 发送请求的 URL
  111 + * @param param 请求参数,请求参数是 name1=value1&name2=value2 的形式。
  112 + * @return 远程资源的响应结果
  113 + * @throws IOException
106 */ 114 */
107 public static String sendPost(String url, String param) { 115 public static String sendPost(String url, String param) {
  116 + ApiLog apiLog = null;
108 FormBody.Builder builder = new FormBody.Builder(); 117 FormBody.Builder builder = new FormBody.Builder();
109 String urlNameString = url + "?" + param; 118 String urlNameString = url + "?" + param;
110 FormBody body = builder.build(); 119 FormBody body = builder.build();
111 Request request = new Request.Builder().url(urlNameString).post(body).build(); 120 Request request = new Request.Builder().url(urlNameString).post(body).build();
112 Response response = null; 121 Response response = null;
  122 + String result = null;
113 try { 123 try {
  124 + apiLog = ApiLogAspect.initApiLog(request, param);
114 response = HTTP_CLIENT.newCall(request).execute(); 125 response = HTTP_CLIENT.newCall(request).execute();
115 // 调用成功 126 // 调用成功
116 if (response.isSuccessful() && response.body() != null) { 127 if (response.isSuccessful() && response.body() != null) {
117 - return response.body().string(); 128 + result = response.body().string();
  129 + log.info("执行GET请求,url:{},param:{} 成功,返回结果:{}", url, param, result);
118 } 130 }
119 } catch (IOException e) { 131 } catch (IOException e) {
120 - e.printStackTrace(); 132 + log.error("执行GET请求,url:{},param:{} 失败!", url, param, e);
  133 + ApiLogAspect.setApiLogException(apiLog, e);
  134 + } finally {
  135 + ApiLogAspect.finishApiLog(apiLog, response, result);
121 } 136 }
122 - return ""; 137 + return result;
123 } 138 }
124 139
125 - // 此方法是将参数以body形式发送post请求  
126 - public static String bodypost(String url, String json) { 140 + /** JSONString形式发送POST请求
  141 + * @throws IOException */
  142 + public static String sendPostByJsonStr(String url, String json) {
127 ApiLog apiLog = null; 143 ApiLog apiLog = null;
128 // using above json body as a input to post API call 144 // using above json body as a input to post API call
129 RequestBody body = RequestBody.create(MEDIA_TYPE_JSON, json); 145 RequestBody body = RequestBody.create(MEDIA_TYPE_JSON, json);
@@ -144,8 +160,8 @@ public class OkHttpUtils { @@ -144,8 +160,8 @@ public class OkHttpUtils {
144 log.info("执行POST请求,url:{},header:{},param:{} 成功,返回结果:{}", url, JSON.toJSONString(headers), json, result); 160 log.info("执行POST请求,url:{},header:{},param:{} 成功,返回结果:{}", url, JSON.toJSONString(headers), json, result);
145 } 161 }
146 } catch (IOException e) { 162 } catch (IOException e) {
147 - ApiLogAspect.setApiLogException(apiLog, e);  
148 log.error("执行POST请求,url:{},header:{},param:{} 失败!", url, JSON.toJSONString(headers), json, e); 163 log.error("执行POST请求,url:{},header:{},param:{} 失败!", url, JSON.toJSONString(headers), json, e);
  164 + ApiLogAspect.setApiLogException(apiLog, e);
149 } finally { 165 } finally {
150 ApiLogAspect.finishApiLog(apiLog, response, result); 166 ApiLogAspect.finishApiLog(apiLog, response, result);
151 } 167 }
@@ -168,19 +184,15 @@ public class OkHttpUtils { @@ -168,19 +184,15 @@ public class OkHttpUtils {
168 } 184 }
169 185
170 /** 186 /**
171 - * 支持嵌套泛型的post请求。  
172 - *  
173 - * <pre>  
174 - * Type type = new TypeToken<Results<User>>() {}.getType();  
175 - *  
176 - * <pre/> 187 + * 支持嵌套泛型的POST请求
177 * @param url 链接 188 * @param url 链接
178 * @param json 请求json 189 * @param json 请求json
179 * @param type 嵌套泛型 190 * @param type 嵌套泛型
180 * @return 响应对象, 可进行强转。 191 * @return 响应对象, 可进行强转。
  192 + * @throws IOException
181 */ 193 */
182 - public static <T> T post(String url, String json, TypeReference<T> type) {  
183 - String result = bodypost(url, json); 194 + public static <T> T sendPostByJsonStr(String url, String jsonString, TypeReference<T> type) throws IOException {
  195 + String result = sendPostByJsonStr(url, jsonString);
184 if (Objects.nonNull(result) && Objects.nonNull(type)) { 196 if (Objects.nonNull(result) && Objects.nonNull(type)) {
185 return JSON.parseObject(result, type); 197 return JSON.parseObject(result, type);
186 } 198 }