From 68f9c8b9dbc070e4b423dbf5177f83dbe867ed13 Mon Sep 17 00:00:00 2001 From: fcli Date: Fri, 16 Dec 2022 09:46:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BB=A7=E6=89=BF=E7=B1=BB=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/encrypt/EncryptUtil.java | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/encrypt/EncryptUtil.java b/src/com/engine/salary/encrypt/EncryptUtil.java index 6d141b094..a354002fa 100644 --- a/src/com/engine/salary/encrypt/EncryptUtil.java +++ b/src/com/engine/salary/encrypt/EncryptUtil.java @@ -9,6 +9,7 @@ import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.NotNull; import weaver.hrm.User; import java.lang.reflect.Field; @@ -34,7 +35,7 @@ public class EncryptUtil { return data; } try { - List fieldList = Arrays.stream(clazz.getDeclaredFields()).filter(field -> field.isAnnotationPresent(Encrypt.class)).collect(Collectors.toList()); + List fieldList = getFields(clazz); if (CollectionUtils.isNotEmpty(fieldList)) { for (Field field : fieldList) { Field declaredField = data.getClass().getDeclaredField(field.getName()); @@ -53,6 +54,24 @@ public class EncryptUtil { } } + @NotNull + private static List getFields(Class clazz) { + List> allClasses = new ArrayList>(); + allClasses.add(clazz); + Class superClazz; + while ((superClazz = clazz.getSuperclass()) != null) { + if (superClazz != Object.class) { + allClasses.add(superClazz); + } + } + List fieldList = + allClasses.stream() + .map(Class::getDeclaredFields) + .flatMap(Arrays::stream) + .filter(field -> field.isAnnotationPresent(Encrypt.class)).collect(Collectors.toList()); + return fieldList; + } + public List encryptList(List dataList, Class clazz) { if (CollectionUtils.isEmpty(dataList) || clazz == null) { return dataList; @@ -62,7 +81,7 @@ public class EncryptUtil { return dataList; } try { - List fieldList = Arrays.stream(clazz.getDeclaredFields()).filter(field -> field.isAnnotationPresent(Encrypt.class)).collect(Collectors.toList()); + List fieldList = getFields(clazz); if (CollectionUtils.isNotEmpty(fieldList)) { List> values = new ArrayList<>(); for (T data : dataList) { @@ -94,7 +113,7 @@ public class EncryptUtil { return data; } try { - List fieldList = Arrays.stream(clazz.getDeclaredFields()).filter(field -> field.isAnnotationPresent(Encrypt.class)).collect(Collectors.toList()); + List fieldList = getFields(clazz); if (CollectionUtils.isNotEmpty(fieldList)) { for (Field field : fieldList) { Field declaredField = data.getClass().getDeclaredField(field.getName()); @@ -122,7 +141,7 @@ public class EncryptUtil { return dataList; } try { - List fieldList = Arrays.stream(clazz.getDeclaredFields()).filter(field -> field.isAnnotationPresent(Encrypt.class)).collect(Collectors.toList()); + List fieldList = getFields(clazz); if (CollectionUtils.isNotEmpty(fieldList)) { for (T data : dataList) { for (Field field : fieldList) {