【修复】修复 #I6IB27 CommonJoinPointUtil类中getArgsJsonString在某些情况下出现bug

This commit is contained in:
xuyuxiang 2023-03-01 09:52:11 +08:00
parent d823d3aa1a
commit 8de2c3a838
4 changed files with 29 additions and 15 deletions

View File

@ -5,7 +5,7 @@ NODE_ENV = development
VITE_TITLE = Snowy VITE_TITLE = Snowy
# 接口地址 # 接口地址
VITE_API_BASEURL = http://127.0.0.1:82 VITE_API_BASEURL = http://127.0.0.1:9999
# 本地端口 # 本地端口
VITE_PORT = 81 VITE_PORT = 81

View File

@ -12,13 +12,18 @@
*/ */
package vip.xiaonuo.common.util; package vip.xiaonuo.common.util;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import org.aspectj.lang.JoinPoint; import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/** /**
* Spring切面工具类 * Spring切面工具类
@ -35,27 +40,33 @@ public class CommonJoinPointUtil {
* @date 2022/9/2 15:51 * @date 2022/9/2 15:51
*/ */
public static String getArgsJsonString(JoinPoint joinPoint) { public static String getArgsJsonString(JoinPoint joinPoint) {
StringBuilder argsJson = new StringBuilder(); Signature signature = joinPoint.getSignature();
// 参数名数组
String[] parameterNames = ((MethodSignature) signature).getParameterNames();
// 构造参数组集合
Map<String, Object> map = MapUtil.newHashMap();
Object[] args = joinPoint.getArgs(); Object[] args = joinPoint.getArgs();
for (Object arg : args) { for (int i = 0; i < args.length; i++) {
if (!isFilterObject(arg)) { if(ObjectUtil.isNotEmpty(args[i]) && isUsefulParam(args[i])) {
if (ObjectUtil.isNotNull(arg)) { if(JSONUtil.isTypeJSON(StrUtil.toString(args[i]))) {
argsJson.append(JSONUtil.toJsonStr(arg)).append(" "); map.put(parameterNames[i], JSONUtil.parseObj(args[i]));
} else {
map.put(parameterNames[i], JSONUtil.toJsonStr(args[i]));
} }
} }
} }
return argsJson.toString().trim(); return JSONUtil.toJsonStr(map);
} }
/** /**
* 判断是否需要拼接参数过滤掉HttpServletRequest,MultipartFile,HttpServletResponse等类型参数 * 判断是否需要拼接参数过滤掉HttpServletRequest,MultipartFile,HttpServletResponse等类型参数
* *
* @author xuyuxiang * @author xuyuxiang
* @date 2022/9/2 15:51 * @date 2022/9/2 15:51
*/ */
private static boolean isFilterObject(Object arg) { private static boolean isUsefulParam(Object arg) {
return arg instanceof MultipartFile || return !(arg instanceof MultipartFile) &&
arg instanceof HttpServletRequest || !(arg instanceof HttpServletRequest) &&
arg instanceof HttpServletResponse; !(arg instanceof HttpServletResponse);
} }
} }

View File

@ -1,7 +1,7 @@
######################################### #########################################
# server configuration # server configuration
######################################### #########################################
server.port=82 server.port=9999
######################################### #########################################
# spring profiles configuration # spring profiles configuration
@ -24,7 +24,7 @@ spring.servlet.multipart.max-file-size=100MB
spring.datasource.dynamic.datasource.master.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.dynamic.datasource.master.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.master.url=jdbc:mysql://localhost:3306/snowy?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useInformationSchema=true spring.datasource.dynamic.datasource.master.url=jdbc:mysql://localhost:3306/snowy?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useInformationSchema=true
spring.datasource.dynamic.datasource.master.username=root spring.datasource.dynamic.datasource.master.username=root
spring.datasource.dynamic.datasource.master.password=123456 spring.datasource.dynamic.datasource.master.password=12345678
spring.datasource.dynamic.strict=true spring.datasource.dynamic.strict=true
# postgres # postgres

View File

@ -12,6 +12,8 @@
*/ */
package vip.xiaonuo; package vip.xiaonuo;
import cn.hutool.json.JSONUtil;
/** /**
* TestMain方法 * TestMain方法
* *
@ -20,6 +22,7 @@ package vip.xiaonuo;
*/ */
public class Test { public class Test {
public static void main(String[] args) { public static void main(String[] args) {
String jsonStr = JSONUtil.toJsonStr("dasdasdas,234233|}dasfsed");
System.out.println(jsonStr);
} }
} }