@Slf4j
@Aspect
@Component
public class SensitiveAspect {
@Around("@annotation(com.caroLe.manager.common.annotation.Sensitive)")
public Object invoke(ProceedingJoinPoint point) throws Throwable {
log.info("执行SensitiveAspect");
Object target = point.getTarget();
Field[] fields = target.getClass().getDeclaredFields();
for (Field field : fields) {
Sensitive annotation = field.getAnnotation(Sensitive.class);
if (annotation != null) {
Object value = field.get(target);
DesensitizedUtil.DesensitizedType desensitizedType = annotation.type();
String desensitized = DesensitizedUtil.desensitized(value.toString(), desensitizedType);
field.set(target, desensitized);
}
}
return target;
}
}
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface Sensitive {
/**
* 脱敏数据类型
*/
DesensitizedUtil.DesensitizedType type() default DesensitizedUtil.DesensitizedType.CHINESE_NAME;
}
TbDriver tbDriver = new TbDriver();
BeanUtils.copyProperties(updateDriverAuthFormVO, tbDriver);
tbDriver.setId(updateDriverAuthFormVO.getDriverId());
tbDriver.setRealAuth(DriverStatusEnum.REDUCE_ORDER_VOLUME.getCode());
@Sensitive(type = DesensitizedUtil.DesensitizedType.CHINESE_NAME)
@ApiModelProperty("姓名")
private String name;