// 请求参数 断点标记到if同行处会出现 map等于0的情况
//其实并不是0 断点默认没有走上面的for循环
public void logIngArgs(ProceedingJoinPoint point, StringBuilder beforeReqLog, List<Object> beforeReqArgs) {
MethodSignature ms = (MethodSignature) point.getSignature();
Method method = ms.getMethod();
Object[] args = point.getArgs();
final Map<String, Object> paraMap = new HashMap<>(16);
Object requestBodyValue = null;
for (int i = 0; i < args.length; i++) {
MethodParameter methodParam = ClassUtil.getMethodParameter(method, i);
PathVariable pathVariable = methodParam.getParameterAnnotation(PathVariable.class);
if (pathVariable != null) {
continue;
}
RequestBody requestBody = methodParam.getParameterAnnotation(RequestBody.class);
String parameterName = methodParam.getParameterName();
Object value = args[i];
if (requestBody != null) {
requestBodyValue = value;
continue;
}
if (value instanceof HttpServletRequest) {
paraMap.putAll(((HttpServletRequest) value).getParameterMap());
continue;
} else if (value instanceof WebRequest) {
paraMap.putAll(((WebRequest) value).getParameterMap());
continue;
} else if (value instanceof HttpServletResponse) {
continue;
} else if (value instanceof MultipartFile) {
MultipartFile multipartFile = (MultipartFile) value;
String name = multipartFile.getName();
String fileName = multipartFile.getOriginalFilename();
paraMap.put(name, fileName);
continue;
} else if (value instanceof MultipartFile[]) {
MultipartFile[] arr = (MultipartFile[]) value;
if (arr.length == 0) {
continue;
}
String name = arr[0].getName();
StringBuilder sb = new StringBuilder(arr.length);
for (MultipartFile multipartFile : arr) {
sb.append(multipartFile.getOriginalFilename());
sb.append(StringPool.COMMA);
}
paraMap.put(name, StringUtil.removeSuffix(sb.toString(), StringPool.COMMA));
continue;
} else if (value instanceof List) {
List<?> list = (List<?>) value;
AtomicBoolean isSkip = new AtomicBoolean(false);
for (Object o : list) {
if ("StandardMultipartFile".equalsIgnoreCase(o.getClass().getSimpleName())) {
isSkip.set(true);
break;
}
}
if (isSkip.get()) {
paraMap.put(parameterName, "此参数不能序列化为json");
continue;
}
}
RequestParam requestParam = methodParam.getParameterAnnotation(RequestParam.class);
String paraName = parameterName;
if (requestParam != null && StringUtil.isNotBlank(requestParam.value())) {
paraName = requestParam.value();
}
if (value == null) {
paraMap.put(paraName, null);
} else if (ClassUtil.isPrimitiveOrWrapper(value.getClass())) {
paraMap.put(paraName, value);
} else if (value instanceof InputStream) {
paraMap.put(paraName, "InputStream");
} else if (value instanceof InputStreamSource) {
paraMap.put(paraName, "InputStreamSource");
} else if (JsonUtil.canSerialize(value)) {
paraName="";
paraMap.put(paraName, value);
} else {
paraMap.put(paraName, "此参数不能序列化为json");
}
}
if (paraMap.isEmpty()){
beforeReqLog.append("\n");
} else {
beforeReqLog.append(" Parameters: {}\n");
beforeReqArgs.add(JsonUtil.toJson(paraMap));
}