Эх сурвалжийг харах

[task-4339]深圳三院金通医学实验室标准化数智化管理平台渗透测试报告

gaozl 11 сар өмнө
parent
commit
b34ab99dd3

+ 1 - 1
ibps-base-root/modules/base-cloud/src/main/java/com/lc/ibps/cloud/provider/GenericProvider.java

@@ -256,7 +256,7 @@ public class GenericProvider {
 	 * @since 2.8.12
 	 */
 	protected <T> APIResult<T> setExceptionResult(APIResult<T> result, int state, String message, Exception e) {
-		return ResultUtil.setExceptionResult(result, state, message, null);
+		return ResultUtil.setExceptionResult(result, state, message, e);
 	}
 	
 	/**

+ 33 - 1
ibps-base-root/modules/base-cloud/src/main/java/com/lc/ibps/cloud/utils/ResultUtil.java

@@ -1,10 +1,18 @@
 package com.lc.ibps.cloud.utils;
 
+import org.apache.ibatis.exceptions.PersistenceException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.lc.ibps.base.core.util.ExceptionUtil;
 import com.lc.ibps.cloud.entity.APIResult;
+import org.springframework.dao.DataAccessException;
+
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
 
 public class ResultUtil {
 
@@ -24,12 +32,36 @@ public class ResultUtil {
 		result.setState(state);
 		result.setMessage(message);
 		LOGGER.error("ERROR ==> state {}, message {}.", state, message);
-		if(null != e) {
+		if (isDatabaseRelatedException(e)){
+			LOGGER.error(e.getMessage(), e);
+			return result;
+		}else {
 			result.setCause(ExceptionUtil.analysisCause(e));
 			LOGGER.error(e.getMessage(), e);
 		}
 		return result;
 	}
+
+	private static final Set<Class<?>> DATABASE_EXCEPTION_TYPES = Collections.unmodifiableSet(
+			new HashSet<>(Arrays.asList(
+					SQLException.class,          // JDBC 原生异常
+					DataAccessException.class,   // Spring 抽象异常
+					PersistenceException.class  // JPA 异常
+			))
+	);
+
+	public static boolean isDatabaseRelatedException(Throwable ex) {
+		while (ex != null) {
+			// 检查当前异常是否属于数据库异常类型
+			for (Class<?> type : DATABASE_EXCEPTION_TYPES) {
+				if (type.isInstance(ex)) {
+					return true;
+				}
+			}
+			ex = ex.getCause();
+		}
+		return false;
+	}
 	
 	/**
 	 * 设置异常结果