|
|
@@ -1,6 +1,8 @@
|
|
|
package me.zhengjie.aspect;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.alibaba.fastjson.TypeReference;
|
|
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import me.zhengjie.utils.IpAddressUtil;
|
|
|
@@ -20,6 +22,8 @@ import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
@@ -33,6 +37,19 @@ public class LogRequestParam {
|
|
|
public void pointCut() {
|
|
|
}
|
|
|
|
|
|
+ public static boolean isJSON(String str) {
|
|
|
+ boolean result = false;
|
|
|
+ if (StringUtils.isNotBlank(str)) {
|
|
|
+ str = str.trim();
|
|
|
+ if (str.startsWith("{") && str.endsWith("}")) {
|
|
|
+ result = true;
|
|
|
+ } else if (str.startsWith("[") && str.endsWith("]")) {
|
|
|
+ result = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
@Before(value = "pointCut()")
|
|
|
public void doBefore(JoinPoint joinPoint) {
|
|
|
try {
|
|
|
@@ -70,31 +87,43 @@ public class LogRequestParam {
|
|
|
Object value = parameterValues[i];
|
|
|
if (value == null || value instanceof HttpServletRequest || value instanceof HttpServletResponse) {
|
|
|
continue;
|
|
|
- }
|
|
|
- if (value instanceof MultipartFile) {
|
|
|
+ } else if (value instanceof MultipartFile) {
|
|
|
MultipartFile part = (MultipartFile) value;
|
|
|
value = part.getOriginalFilename();
|
|
|
- }
|
|
|
- if (value instanceof MultipartFile[]) {
|
|
|
+ } else if (value instanceof MultipartFile[]) {
|
|
|
MultipartFile[] part = (MultipartFile[]) value;
|
|
|
StringBuffer sb = new StringBuffer();
|
|
|
for (MultipartFile file : part) {
|
|
|
sb.append(file.getOriginalFilename() + ",");
|
|
|
}
|
|
|
value = sb.toString();
|
|
|
- }
|
|
|
- if (value instanceof AbstractResource) {
|
|
|
- AbstractResource part = (AbstractResource) value;
|
|
|
- value = part.getFilename();
|
|
|
- }
|
|
|
-
|
|
|
- if (value instanceof String) {
|
|
|
+ } else if (value instanceof String) {
|
|
|
String str = (String) value;
|
|
|
if (str.length() > 1000) {
|
|
|
// 去掉特别长的参数
|
|
|
value = str.substring(0, 1000);
|
|
|
}
|
|
|
+ } else {
|
|
|
+ // 处理参数是对象的值
|
|
|
+ String object = JSON.toJSONString(value);
|
|
|
+ //先进行赋值
|
|
|
+ value = object;
|
|
|
+ if (isJSON(object)) {
|
|
|
+ JSONObject jsonObj = JSON.parseObject(object);
|
|
|
+ Map<String, String> jsonMap = new HashMap<>();
|
|
|
+ for (String fieldKey : jsonObj.keySet()) {
|
|
|
+ String fieldValue = jsonObj.getString(fieldKey);
|
|
|
+ String valLength = fieldValue;
|
|
|
+ if (StringUtils.isNotBlank(fieldValue) && fieldValue.length() > 1000) {
|
|
|
+ valLength = fieldValue.substring(0, 1000);
|
|
|
+ }
|
|
|
+ jsonMap.put(fieldKey, valLength);
|
|
|
+ }
|
|
|
+ value = jsonMap;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
// 记录上传的参数
|
|
|
params.put(param, value);
|
|
|
}
|