huanghongfa
2021-08-21 2e64c232ab6b51b2cecf1ee96e1e9b709234f326
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/helper/sensitive/SensitiveInterceptor.java
@@ -11,6 +11,7 @@
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.SystemMetaObject;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import java.lang.reflect.Field;
@@ -29,6 +30,7 @@
@Slf4j
@ConditionalOnProperty(value = "domain.sensitive", havingValue = "true")
@Component
@Order(120)
public class SensitiveInterceptor implements Interceptor {
    @SuppressWarnings("unchecked")
    @Override
@@ -42,14 +44,16 @@
    private void sensitive(Object source) {
        // 拿到返回值类型
        Class<?> sourceClass = source.getClass();
        // 初始化返回值类型的 MetaObject
        MetaObject metaObject = SystemMetaObject.forObject(source);
        // 捕捉到属性上的标记注解 @Sensitive 并进行对应的脱敏处理
        Stream.of(sourceClass.getDeclaredFields())
                .filter(field -> field.isAnnotationPresent(Sensitive.class))
                .forEach(field -> doSensitive(metaObject, field));
        if(source!=null) {
            // 拿到返回值类型
            Class<?> sourceClass = source.getClass();
            // 初始化返回值类型的 MetaObject
            MetaObject metaObject = SystemMetaObject.forObject(source);
            // 捕捉到属性上的标记注解 @Sensitive 并进行对应的脱敏处理
            Stream.of(sourceClass.getDeclaredFields())
                    .filter(field -> field.isAnnotationPresent(Sensitive.class))
                    .forEach(field -> doSensitive(metaObject, field));
        }
    }