From 7b3fca28447d2947136048b5d5052462ffb44d96 Mon Sep 17 00:00:00 2001
From: gaibu <1016771049@qq.com>
Date: Tue, 17 Jan 2023 10:52:37 +0800
Subject: [PATCH] feat: 脱敏组件代码规范更新
---
yudao-dependencies/pom.xml | 2 +-
yudao-framework/pom.xml | 2 +-
yudao-framework/yudao-spring-boot-starter-biz-desensitize/pom.xml | 46 ----------------------------------------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/DesensitizationHandlerHolder.java | 43 -------------------------------------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/annotation/Desensitize.java | 31 -------------------------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/handler/DesensitizationHandler.java | 19 -------------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/EmailDesensitize.java | 31 -------------------------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/RegexDesensitize.java | 34 ----------------------------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/AbstractRegexDesensitizationHandler.java | 27 ---------------------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/DefaultRegexDesensitizationHandler.java | 14 --------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/EmailDesensitizationHandler.java | 11 -----------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/BankCard.java | 38 --------------------------------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/CarLicense.java | 38 --------------------------------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/ChineseName.java | 38 --------------------------------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/FixedPhone.java | 38 --------------------------------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/IdCard.java | 38 --------------------------------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Password.java | 38 --------------------------------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/PhoneNumber.java | 38 --------------------------------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Slider.java | 40 ----------------------------------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/AbstractDesensitizationHandler.java | 54 ------------------------------------------------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/BankCardDesensitization.java | 11 -----------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/CarLicenseDesensitization.java | 10 ----------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/ChineseNameDesensitization.java | 10 ----------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/DefaultDesensitizationHandler.java | 14 --------------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/FixedPhoneDesensitization.java | 10 ----------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/IdCardDesensitization.java | 10 ----------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PasswordDesensitization.java | 10 ----------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PhoneNumberDesensitization.java | 11 -----------
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/serializer/StringDesensitizeSerializer.java | 83 -----------------------------------------------------------------------------------
yudao-framework/yudao-spring-boot-starter-desensitize/pom.xml | 38 ++++++++++++++++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/DesensitizationHandlerFactory.java | 38 ++++++++++++++++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/annotation/DesensitizeBy.java | 30 ++++++++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/handler/DesensitizationHandler.java | 19 +++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/serializer/StringDesensitizeSerializer.java | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/EmailDesensitize.java | 34 ++++++++++++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/RegexDesensitize.java | 37 +++++++++++++++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/AbstractRegexDesensitizationHandler.java | 37 +++++++++++++++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/DefaultRegexDesensitizationHandler.java | 22 ++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/EmailDesensitizationHandler.java | 21 +++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/BankCard.java | 40 ++++++++++++++++++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/CarLicense.java | 40 ++++++++++++++++++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/ChineseName.java | 40 ++++++++++++++++++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/FixedPhone.java | 40 ++++++++++++++++++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/IdCard.java | 40 ++++++++++++++++++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Password.java | 40 ++++++++++++++++++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/PhoneNumber.java | 40 ++++++++++++++++++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Slider.java | 42 ++++++++++++++++++++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/AbstractDesensitizationHandler.java | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/BankCardDesensitization.java | 27 +++++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/CarLicenseDesensitization.java | 25 +++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/ChineseNameDesensitization.java | 25 +++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/DefaultDesensitizationHandler.java | 25 +++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/FixedPhoneDesensitization.java | 25 +++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/IdCardDesensitization.java | 25 +++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PasswordDesensitization.java | 25 +++++++++++++++++++++++++
yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PhoneNumberDesensitization.java | 26 ++++++++++++++++++++++++++
56 files changed, 968 insertions(+), 787 deletions(-)
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/pom.xml
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/DesensitizationHandlerHolder.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/annotation/Desensitize.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/handler/DesensitizationHandler.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/EmailDesensitize.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/RegexDesensitize.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/AbstractRegexDesensitizationHandler.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/DefaultRegexDesensitizationHandler.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/EmailDesensitizationHandler.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/BankCard.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/CarLicense.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/ChineseName.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/FixedPhone.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/IdCard.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Password.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/PhoneNumber.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Slider.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/AbstractDesensitizationHandler.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/BankCardDesensitization.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/CarLicenseDesensitization.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/ChineseNameDesensitization.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/DefaultDesensitizationHandler.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/FixedPhoneDesensitization.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/IdCardDesensitization.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PasswordDesensitization.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PhoneNumberDesensitization.java
delete mode 100644 yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/serializer/StringDesensitizeSerializer.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/pom.xml
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/DesensitizationHandlerFactory.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/annotation/DesensitizeBy.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/handler/DesensitizationHandler.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/serializer/StringDesensitizeSerializer.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/EmailDesensitize.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/RegexDesensitize.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/AbstractRegexDesensitizationHandler.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/DefaultRegexDesensitizationHandler.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/EmailDesensitizationHandler.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/BankCard.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/CarLicense.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/ChineseName.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/FixedPhone.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/IdCard.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Password.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/PhoneNumber.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Slider.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/AbstractDesensitizationHandler.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/BankCardDesensitization.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/CarLicenseDesensitization.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/ChineseNameDesensitization.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/DefaultDesensitizationHandler.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/FixedPhoneDesensitization.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/IdCardDesensitization.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PasswordDesensitization.java
create mode 100644 yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PhoneNumberDesensitization.java
diff --git a/yudao-dependencies/pom.xml b/yudao-dependencies/pom.xml
index be2f14d..f57f7a9 100644
--- a/yudao-dependencies/pom.xml
+++ b/yudao-dependencies/pom.xml
@@ -143,7 +143,7 @@
cn.iocoder.boot
- yudao-spring-boot-starter-biz-desensitize
+ yudao-spring-boot-starter-desensitize
${revision}
diff --git a/yudao-framework/pom.xml b/yudao-framework/pom.xml
index 0f20b1a..12244f5 100644
--- a/yudao-framework/pom.xml
+++ b/yudao-framework/pom.xml
@@ -41,7 +41,7 @@
yudao-spring-boot-starter-flowable
yudao-spring-boot-starter-captcha
yudao-spring-boot-starter-websocket
- yudao-spring-boot-starter-biz-desensitize
+ yudao-spring-boot-starter-desensitize
yudao-framework
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/pom.xml b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/pom.xml
deleted file mode 100644
index 1afb387..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/pom.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
- 4.0.0
-
- yudao-framework
- cn.iocoder.boot
- ${revision}
-
-
-
- yudao-spring-boot-starter-biz-desensitize
-
-
-
-
- 11
- 11
- UTF-8
-
-
-
-
- cn.iocoder.boot
- yudao-common
-
-
-
-
- com.fasterxml.jackson.core
- jackson-annotations
-
-
- com.fasterxml.jackson.core
- jackson-databind
-
-
-
-
- cn.iocoder.boot
- yudao-spring-boot-starter-test
- test
-
-
-
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/DesensitizationHandlerHolder.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/DesensitizationHandlerHolder.java
deleted file mode 100644
index 95c193f..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/DesensitizationHandlerHolder.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.base;
-
-import cn.hutool.core.util.ReflectUtil;
-import cn.iocoder.yudao.framework.desensitize.core.base.handler.DesensitizationHandler;
-import cn.iocoder.yudao.framework.desensitize.core.regex.handler.DefaultRegexDesensitizationHandler;
-import cn.iocoder.yudao.framework.desensitize.core.slider.handler.DefaultDesensitizationHandler;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-// TODO @城:DesensitizationHandlerHolder =》 DesensitizationHandlerFactory? Holder 没有太多工厂的味道哈
-/**
- * 脱敏处理器 Holder
- */
-public class DesensitizationHandlerHolder {
-
- /**
- * handler 缓存,默认初始化内置的处理器
- */
- private static final Map, DesensitizationHandler> HANDLER_MAP = new ConcurrentHashMap<>() {{
- // TODO @城:这 2 个,是不是不用呀?需要的时候初始化
- put(DefaultRegexDesensitizationHandler.class, new DefaultRegexDesensitizationHandler());
- put(DefaultDesensitizationHandler.class, new DefaultDesensitizationHandler());
- }};
-
- public static DesensitizationHandler getDesensitizationHandler(Class extends DesensitizationHandler> clazz) {
- DesensitizationHandler handler = HANDLER_MAP.get(clazz);
- if (handler != null) {
- return handler;
- }
- synchronized (DesensitizationHandlerHolder.class) {
- handler = HANDLER_MAP.get(clazz);
- // 双重校验锁
- if (handler != null) {
- return handler;
- }
- handler = ReflectUtil.newInstanceIfPossible(clazz);
- HANDLER_MAP.put(clazz, handler);
- }
- return handler;
- }
-
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/annotation/Desensitize.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/annotation/Desensitize.java
deleted file mode 100644
index b95ccd6..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/annotation/Desensitize.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.base.annotation;
-
-import cn.iocoder.yudao.framework.desensitize.core.base.handler.DesensitizationHandler;
-import cn.iocoder.yudao.framework.desensitize.serializer.StringDesensitizeSerializer;
-import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-// TODO @城:每个接口上,author 写下哈。
-// TODO @城:Desensitize = 》DesensitizeBy
-// TODO @城:Desensitize 类注释,方便读者阅读理解
-/**
- * Desensitize 顶级脱敏注解
- */
-@Documented
-@Target(ElementType.ANNOTATION_TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@JacksonAnnotationsInside // TODO @城:这个的作用,也可以写下
-@JsonSerialize(using = StringDesensitizeSerializer.class) // TODO @城:这个的作用,也可以写下
-public @interface Desensitize {
-
- /**
- * 脱敏处理器
- */
- Class extends DesensitizationHandler> desensitizationBy(); // TODO @城:desensitizationBy -> handler
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/handler/DesensitizationHandler.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/handler/DesensitizationHandler.java
deleted file mode 100644
index a4dd246..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/handler/DesensitizationHandler.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.base.handler;
-
-import java.lang.annotation.Annotation;
-
-/**
- * 脱敏处理器接口
- */
-public interface DesensitizationHandler {
-
- /**
- * 脱敏
- *
- * @param origin 原始字符串
- * @param anno 注解信息 // TODO 不要这样的缩写哈,anno -> annotation
- * @return 脱敏后的字符串
- */
- String desensitize(String origin, T anno);
-
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/EmailDesensitize.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/EmailDesensitize.java
deleted file mode 100644
index ebd754b..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/EmailDesensitize.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.regex.annotation;
-
-import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize;
-import cn.iocoder.yudao.framework.desensitize.core.regex.handler.EmailDesensitizationHandler;
-import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 邮箱
- */
-@Documented
-@Target({ElementType.FIELD})
-@Retention(RetentionPolicy.RUNTIME)
-@JacksonAnnotationsInside
-@Desensitize(desensitizationBy = EmailDesensitizationHandler.class)
-public @interface EmailDesensitize {
- /**
- * 匹配的正则表达式
- */
- String regex() default "(^.)[^@]*(@.*$)";
-
- /**
- * 替换规则,邮箱;比如:example@gmail.com脱敏之后为e****@gmail.com
- */
- String replacer() default "$1****$2";
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/RegexDesensitize.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/RegexDesensitize.java
deleted file mode 100644
index 7ee6fad..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/RegexDesensitize.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.regex.annotation;
-
-import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize;
-import cn.iocoder.yudao.framework.desensitize.core.regex.handler.DefaultRegexDesensitizationHandler;
-import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 正则脱敏注解
- */
-@Documented
-@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-@JacksonAnnotationsInside
-@Desensitize(desensitizationBy = DefaultRegexDesensitizationHandler.class)
-public @interface RegexDesensitize {
- /**
- * 匹配的正则表达式(默认匹配所有)
- */
- String regex() default "^[\\s\\S]*$";
-
- /**
- * 替换规则,会将匹配到的字符串全部替换成 replacer
- * 例如:regex=123; replacer=******
- * 原始字符串 123456789
- * 脱敏后字符串 ******456789
- */
- String replacer() default "******";
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/AbstractRegexDesensitizationHandler.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/AbstractRegexDesensitizationHandler.java
deleted file mode 100644
index a9d495a..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/AbstractRegexDesensitizationHandler.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.regex.handler;
-
-import cn.iocoder.yudao.framework.desensitize.core.base.handler.DesensitizationHandler;
-
-import java.lang.annotation.Annotation;
-
-public abstract class AbstractRegexDesensitizationHandler implements DesensitizationHandler {
-
- @Override
- public String desensitize(String origin, T anno) {
- Object[] args = getArgs(anno);
- String regex = (String) args[0];
- String replacer = (String) args[1];
-
- return origin.replaceAll(regex, replacer);
- }
-
- // TODO @城:是不是抽象两个方法,一个拿 regex;一个拿 replacer
-
- /**
- * 获取注解的参数
- *
- * @param anno 注解信息
- * @return 注解的参数
- */
- abstract Object[] getArgs(T anno);
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/DefaultRegexDesensitizationHandler.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/DefaultRegexDesensitizationHandler.java
deleted file mode 100644
index a217349..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/DefaultRegexDesensitizationHandler.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.regex.handler;
-
-import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.RegexDesensitize;
-
-/**
- * 正则脱敏处理器
- */
-public class DefaultRegexDesensitizationHandler extends AbstractRegexDesensitizationHandler {
-
- @Override
- Object[] getArgs(RegexDesensitize anno) {
- return new Object[]{anno.regex(), anno.replacer()};
- }
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/EmailDesensitizationHandler.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/EmailDesensitizationHandler.java
deleted file mode 100644
index 9336351..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/EmailDesensitizationHandler.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.regex.handler;
-
-import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.EmailDesensitize;
-
-public class EmailDesensitizationHandler extends AbstractRegexDesensitizationHandler {
-
- @Override
- Object[] getArgs(EmailDesensitize anno) {
- return new Object[]{anno.regex(), anno.replacer()};
- }
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/BankCard.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/BankCard.java
deleted file mode 100644
index 4c41569..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/BankCard.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.slider.annotation;
-
-import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize;
-import cn.iocoder.yudao.framework.desensitize.core.slider.handler.BankCardDesensitization;
-import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 银行卡号
- */
-@Documented
-@Target({ElementType.FIELD})
-@Retention(RetentionPolicy.RUNTIME)
-@JacksonAnnotationsInside
-@Desensitize(desensitizationBy = BankCardDesensitization.class)
-public @interface BankCard {
-
- /**
- * 前缀保留长度
- */
- int prefixKeep() default 6;
-
- /**
- * 后缀保留长度
- */
- int suffixKeep() default 2;
-
- /**
- * 替换规则,银行卡号;比如:9988002866797031脱敏之后为998800********31
- */
- String replacer() default "*";
-
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/CarLicense.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/CarLicense.java
deleted file mode 100644
index fb89ddb..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/CarLicense.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.slider.annotation;
-
-import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize;
-import cn.iocoder.yudao.framework.desensitize.core.slider.handler.CarLicenseDesensitization;
-import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 车牌号
- */
-@Documented
-@Target({ElementType.FIELD})
-@Retention(RetentionPolicy.RUNTIME)
-@JacksonAnnotationsInside
-@Desensitize(desensitizationBy = CarLicenseDesensitization.class)
-public @interface CarLicense {
-
- /**
- * 前缀保留长度
- */
- int prefixKeep() default 3;
-
- /**
- * 后缀保留长度
- */
- int suffixKeep() default 1;
-
- /**
- * 替换规则,车牌号;比如:粤A66666脱敏之后为粤A6***6
- */
- String replacer() default "*";
-
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/ChineseName.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/ChineseName.java
deleted file mode 100644
index 3b4a1a5..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/ChineseName.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.slider.annotation;
-
-import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize;
-import cn.iocoder.yudao.framework.desensitize.core.slider.handler.ChineseNameDesensitization;
-import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 中文名
- */
-@Documented
-@Target({ElementType.FIELD})
-@Retention(RetentionPolicy.RUNTIME)
-@JacksonAnnotationsInside
-@Desensitize(desensitizationBy = ChineseNameDesensitization.class)
-public @interface ChineseName {
-
- /**
- * 前缀保留长度
- */
- int prefixKeep() default 1;
-
- /**
- * 后缀保留长度
- */
- int suffixKeep() default 0;
-
- /**
- * 替换规则,中文名;比如:刘子豪脱敏之后为刘**
- */
- String replacer() default "*";
-
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/FixedPhone.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/FixedPhone.java
deleted file mode 100644
index 663388d..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/FixedPhone.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.slider.annotation;
-
-import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize;
-import cn.iocoder.yudao.framework.desensitize.core.slider.handler.FixedPhoneDesensitization;
-import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 固定电话
- */
-@Documented
-@Target({ElementType.FIELD})
-@Retention(RetentionPolicy.RUNTIME)
-@JacksonAnnotationsInside
-@Desensitize(desensitizationBy = FixedPhoneDesensitization.class)
-public @interface FixedPhone {
-
- /**
- * 前缀保留长度
- */
- int prefixKeep() default 4;
-
- /**
- * 后缀保留长度
- */
- int suffixKeep() default 2;
-
- /**
- * 替换规则,固定电话;比如:01086551122脱敏之后为0108*****22
- */
- String replacer() default "*";
-
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/IdCard.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/IdCard.java
deleted file mode 100644
index ac2ba9c..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/IdCard.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.slider.annotation;
-
-import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize;
-import cn.iocoder.yudao.framework.desensitize.core.slider.handler.IdCardDesensitization;
-import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 身份证
- */
-@Documented
-@Target({ElementType.FIELD})
-@Retention(RetentionPolicy.RUNTIME)
-@JacksonAnnotationsInside
-@Desensitize(desensitizationBy = IdCardDesensitization.class)
-public @interface IdCard {
-
- /**
- * 前缀保留长度
- */
- int prefixKeep() default 6;
-
- /**
- * 后缀保留长度
- */
- int suffixKeep() default 2;
-
- /**
- * 替换规则,身份证号码;比如:530321199204074611脱敏之后为530321**********11
- */
- String replacer() default "*";
-
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Password.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Password.java
deleted file mode 100644
index c4bb6e1..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Password.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.slider.annotation;
-
-import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize;
-import cn.iocoder.yudao.framework.desensitize.core.slider.handler.PasswordDesensitization;
-import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 密码
- */
-@Documented
-@Target({ElementType.FIELD})
-@Retention(RetentionPolicy.RUNTIME)
-@JacksonAnnotationsInside
-@Desensitize(desensitizationBy = PasswordDesensitization.class)
-public @interface Password {
-
- /**
- * 前缀保留长度
- */
- int prefixKeep() default 0;
-
- /**
- * 后缀保留长度
- */
- int suffixKeep() default 0;
-
- /**
- * 替换规则,密码;比如:123456脱敏之后为******
- */
- String replacer() default "*";
-
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/PhoneNumber.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/PhoneNumber.java
deleted file mode 100644
index c78354d..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/PhoneNumber.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.slider.annotation;
-
-import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize;
-import cn.iocoder.yudao.framework.desensitize.core.slider.handler.PhoneNumberDesensitization;
-import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 手机号
- */
-@Documented
-@Target({ElementType.FIELD})
-@Retention(RetentionPolicy.RUNTIME)
-@JacksonAnnotationsInside
-@Desensitize(desensitizationBy = PhoneNumberDesensitization.class)
-public @interface PhoneNumber {
-
- /**
- * 前缀保留长度
- */
- int prefixKeep() default 3;
-
- /**
- * 后缀保留长度
- */
- int suffixKeep() default 4;
-
- /**
- * 替换规则,手机号;比如:13248765917脱敏之后为132****5917
- */
- String replacer() default "*";
-
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Slider.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Slider.java
deleted file mode 100644
index c752df3..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Slider.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.slider.annotation;
-
-import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize;
-import cn.iocoder.yudao.framework.desensitize.core.slider.handler.DefaultDesensitizationHandler;
-import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 滑动脱敏注解
- */
-@Documented
-@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-@JacksonAnnotationsInside
-@Desensitize(desensitizationBy = DefaultDesensitizationHandler.class)
-public @interface Slider {
-
- /**
- * 后缀保留长度
- */
- int suffixKeep() default 0;
-
- /**
- * 替换规则,会将前缀后缀保留后,全部替换成 replacer
- * 例如:prefixKeep = 1; suffixKeep = 2; replacer = "*";
- * 原始字符串 123456
- * 脱敏后 1***56
- */
- String replacer() default "*";
-
- /**
- * 前缀保留长度
- */
- int prefixKeep() default 0;
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/AbstractDesensitizationHandler.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/AbstractDesensitizationHandler.java
deleted file mode 100644
index 0b25cdb..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/AbstractDesensitizationHandler.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
-
-import cn.iocoder.yudao.framework.desensitize.core.base.handler.DesensitizationHandler;
-
-import java.lang.annotation.Annotation;
-
-public abstract class AbstractDesensitizationHandler implements DesensitizationHandler {
-
- @Override
- public String desensitize(String origin, T anno) {
- Object[] args = getArgs(anno);
- int prefixKeep = (Integer) args[0];
- int suffixKeep = (Integer) args[1];
- String replacer = (String) args[2];
- int length = origin.length();
-
- // 情况一:原始字符串长度小于等于保留长度,则原始字符串全部替换
- if (prefixKeep >= length || suffixKeep >= length) {
- return buildReplacerByLength(replacer, length);
- }
-
- // 情况二:如果原始字符串小于等于前后缀保留字符串长度,则原始字符串全部替换
- if ((prefixKeep + suffixKeep) >= length) {
- return buildReplacerByLength(replacer, length);
- }
-
- // 情况三:TODO 城
- int interval = length - prefixKeep - suffixKeep;
- return origin.substring(0, prefixKeep) +
- buildReplacerByLength(replacer, interval) +
- origin.substring(prefixKeep + interval);
- }
-
- // TODO @城:类似,子类直接获取到参数哈
- /**
- * 获取注解的参数
- *
- * @param anno 注解信息
- * @return 注解的参数
- */
- abstract Object[] getArgs(T anno);
-
- /**
- * 根据长度循环构建替换符
- *
- * @param replacer 替换符
- * @param length 长度
- * @return 构建后的替换符
- */
- private String buildReplacerByLength(String replacer, int length) {
- return String.valueOf(replacer).repeat(Math.max(0, length));
- }
-
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/BankCardDesensitization.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/BankCardDesensitization.java
deleted file mode 100644
index 942ca25..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/BankCardDesensitization.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
-
-import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.BankCard;
-
-public class BankCardDesensitization extends AbstractDesensitizationHandler {
-
- @Override
- Object[] getArgs(BankCard anno) {
- return new Object[]{anno.prefixKeep(), anno.suffixKeep(), anno.replacer()};
- }
-}
\ No newline at end of file
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/CarLicenseDesensitization.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/CarLicenseDesensitization.java
deleted file mode 100644
index d7cef7d..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/CarLicenseDesensitization.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
-
-import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.CarLicense;
-
-public class CarLicenseDesensitization extends AbstractDesensitizationHandler {
- @Override
- Object[] getArgs(CarLicense anno) {
- return new Object[]{anno.prefixKeep(), anno.suffixKeep(), anno.replacer()};
- }
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/ChineseNameDesensitization.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/ChineseNameDesensitization.java
deleted file mode 100644
index ba0a660..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/ChineseNameDesensitization.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
-
-import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.ChineseName;
-
-public class ChineseNameDesensitization extends AbstractDesensitizationHandler {
- @Override
- Object[] getArgs(ChineseName anno) {
- return new Object[]{anno.prefixKeep(), anno.suffixKeep(), anno.replacer()};
- }
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/DefaultDesensitizationHandler.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/DefaultDesensitizationHandler.java
deleted file mode 100644
index 3be33a0..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/DefaultDesensitizationHandler.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
-
-import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.Slider;
-
-/**
- * 滑动脱敏处理器
- */
-public class DefaultDesensitizationHandler extends AbstractDesensitizationHandler {
-
- @Override
- Object[] getArgs(Slider anno) {
- return new Object[]{anno.prefixKeep(), anno.suffixKeep(), anno.replacer()};
- }
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/FixedPhoneDesensitization.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/FixedPhoneDesensitization.java
deleted file mode 100644
index 8fb7128..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/FixedPhoneDesensitization.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
-
-import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.FixedPhone;
-
-public class FixedPhoneDesensitization extends AbstractDesensitizationHandler {
- @Override
- Object[] getArgs(FixedPhone anno) {
- return new Object[]{anno.prefixKeep(), anno.suffixKeep(), anno.replacer()};
- }
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/IdCardDesensitization.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/IdCardDesensitization.java
deleted file mode 100644
index ce76b35..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/IdCardDesensitization.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
-
-import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.IdCard;
-
-public class IdCardDesensitization extends AbstractDesensitizationHandler {
- @Override
- Object[] getArgs(IdCard anno) {
- return new Object[]{anno.prefixKeep(), anno.suffixKeep(), anno.replacer()};
- }
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PasswordDesensitization.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PasswordDesensitization.java
deleted file mode 100644
index 35a656c..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PasswordDesensitization.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
-
-import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.Password;
-
-public class PasswordDesensitization extends AbstractDesensitizationHandler {
- @Override
- Object[] getArgs(Password anno) {
- return new Object[]{anno.prefixKeep(), anno.suffixKeep(), anno.replacer()};
- }
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PhoneNumberDesensitization.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PhoneNumberDesensitization.java
deleted file mode 100644
index 0525cb8..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PhoneNumberDesensitization.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
-
-import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.PhoneNumber;
-
-public class PhoneNumberDesensitization extends AbstractDesensitizationHandler {
-
- @Override
- Object[] getArgs(PhoneNumber anno) {
- return new Object[]{anno.prefixKeep(), anno.suffixKeep(), anno.replacer()};
- }
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/serializer/StringDesensitizeSerializer.java b/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/serializer/StringDesensitizeSerializer.java
deleted file mode 100644
index accfa77..0000000
--- a/yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/serializer/StringDesensitizeSerializer.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package cn.iocoder.yudao.framework.desensitize.serializer;
-
-import cn.hutool.core.annotation.AnnotationUtil;
-import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.util.ReflectUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.framework.desensitize.core.base.annotation.Desensitize;
-import cn.iocoder.yudao.framework.desensitize.core.base.handler.DesensitizationHandler;
-import cn.iocoder.yudao.framework.desensitize.core.base.DesensitizationHandlerHolder;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.BeanProperty;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
-import com.fasterxml.jackson.databind.ser.std.StdSerializer;
-
-import java.io.IOException;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-
-// TODO @城:挪到 base/serializer 包下
-/**
- * 脱敏序列化器
- */
-public class StringDesensitizeSerializer extends StdSerializer implements ContextualSerializer {
-
- private DesensitizationHandler desensitizationHandler;
-
- protected StringDesensitizeSerializer() {
- super(String.class);
- }
-
- // TODO @城:get 和 set 方法是必须的么?如果是的话,可以换成 lombok 注解哈,简洁一点~
- public DesensitizationHandler getDesensitizationHandler() {
- return desensitizationHandler;
- }
-
- public void setDesensitizationHandler(DesensitizationHandler desensitizationHandler) {
- this.desensitizationHandler = desensitizationHandler;
- }
-
- @Override
- public JsonSerializer> createContextual(SerializerProvider serializerProvider, BeanProperty beanProperty) throws JsonMappingException {
- Desensitize annotation = beanProperty.getAnnotation(Desensitize.class);
- if (annotation == null) {
- return this;
- }
- StringDesensitizeSerializer serializer = new StringDesensitizeSerializer();
- serializer.setDesensitizationHandler(DesensitizationHandlerHolder.getDesensitizationHandler(annotation.desensitizationBy()));
- return serializer;
- }
-
- @Override
- public void serialize(String value, JsonGenerator gen, SerializerProvider serializerProvider) throws IOException {
- if (StrUtil.isBlank(value)) {
- gen.writeNull();
- return;
- }
-
- // TODO @城:抽个 private getField 方法。让这个方法的逻辑主干,更清晰
- String currentName = gen.getOutputContext().getCurrentName();
- Object currentValue = gen.getCurrentValue();
- Class> currentValueClass = currentValue.getClass();
- Field field = ReflectUtil.getField(currentValueClass, currentName);
-
- // 自定义处理器
- Desensitize[] annotations = AnnotationUtil.getCombinationAnnotations(field, Desensitize.class);
- if (ArrayUtil.isEmpty(annotations)) {
- gen.writeString(value);
- return;
- }
- for (Annotation annotation : field.getAnnotations()) {
- if (AnnotationUtil.hasAnnotation(annotation.annotationType(), Desensitize.class)) {
- value = this.desensitizationHandler.desensitize(value, annotation);
- gen.writeString(value);
- return;
- }
- }
- gen.writeString(value);
- }
-
-}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/pom.xml b/yudao-framework/yudao-spring-boot-starter-desensitize/pom.xml
new file mode 100644
index 0000000..53879bd
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/pom.xml
@@ -0,0 +1,38 @@
+
+
+ 4.0.0
+
+ yudao-framework
+ cn.iocoder.boot
+ ${revision}
+
+
+ yudao-spring-boot-starter-desensitize
+ 脱敏组件
+
+
+
+ cn.iocoder.boot
+ yudao-common
+
+
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+
+
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-test
+ test
+
+
+
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/DesensitizationHandlerFactory.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/DesensitizationHandlerFactory.java
new file mode 100644
index 0000000..abd756e
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/DesensitizationHandlerFactory.java
@@ -0,0 +1,38 @@
+package cn.iocoder.yudao.framework.desensitize.core.base;
+
+import cn.hutool.core.util.ReflectUtil;
+import cn.iocoder.yudao.framework.desensitize.core.base.handler.DesensitizationHandler;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * 脱敏处理器 Holder
+ *
+ * @author gaibu
+ */
+public class DesensitizationHandlerFactory {
+
+ /**
+ * handler 缓存,默认初始化内置的处理器
+ */
+ private static final Map, DesensitizationHandler> HANDLER_MAP = new ConcurrentHashMap, DesensitizationHandler>();
+
+ public static DesensitizationHandler getDesensitizationHandler(Class extends DesensitizationHandler> clazz) {
+ DesensitizationHandler handler = HANDLER_MAP.get(clazz);
+ if (handler != null) {
+ return handler;
+ }
+ synchronized (DesensitizationHandlerFactory.class) {
+ handler = HANDLER_MAP.get(clazz);
+ // 双重校验锁
+ if (handler != null) {
+ return handler;
+ }
+ handler = ReflectUtil.newInstanceIfPossible(clazz);
+ HANDLER_MAP.put(clazz, handler);
+ }
+ return handler;
+ }
+
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/annotation/DesensitizeBy.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/annotation/DesensitizeBy.java
new file mode 100644
index 0000000..d06e633
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/annotation/DesensitizeBy.java
@@ -0,0 +1,30 @@
+package cn.iocoder.yudao.framework.desensitize.core.base.annotation;
+
+import cn.iocoder.yudao.framework.desensitize.core.base.handler.DesensitizationHandler;
+import cn.iocoder.yudao.framework.desensitize.core.base.serializer.StringDesensitizeSerializer;
+import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 顶级脱敏注解,自定义注解需要使用此注解。
+ *
+ * @author gaibu
+ */
+@Documented
+@Target(ElementType.ANNOTATION_TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+@JacksonAnnotationsInside // 此注解是其他所有 jackson 注解的元注解,打上了此注解的注解表明是 jackson 注解的一部分
+@JsonSerialize(using = StringDesensitizeSerializer.class) // 指定序列化器
+public @interface DesensitizeBy {
+
+ /**
+ * 脱敏处理器
+ */
+ Class extends DesensitizationHandler> handler();
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/handler/DesensitizationHandler.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/handler/DesensitizationHandler.java
new file mode 100644
index 0000000..e59d96c
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/handler/DesensitizationHandler.java
@@ -0,0 +1,19 @@
+package cn.iocoder.yudao.framework.desensitize.core.base.handler;
+
+import java.lang.annotation.Annotation;
+
+/**
+ * 脱敏处理器接口
+ */
+public interface DesensitizationHandler {
+
+ /**
+ * 脱敏
+ *
+ * @param origin 原始字符串
+ * @param annotation 注解信息
+ * @return 脱敏后的字符串
+ */
+ String desensitize(String origin, T annotation);
+
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/serializer/StringDesensitizeSerializer.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/serializer/StringDesensitizeSerializer.java
new file mode 100644
index 0000000..85dee2f
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/serializer/StringDesensitizeSerializer.java
@@ -0,0 +1,88 @@
+package cn.iocoder.yudao.framework.desensitize.core.base.serializer;
+
+import cn.hutool.core.annotation.AnnotationUtil;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.ReflectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.framework.desensitize.core.base.annotation.DesensitizeBy;
+import cn.iocoder.yudao.framework.desensitize.core.base.handler.DesensitizationHandler;
+import cn.iocoder.yudao.framework.desensitize.core.base.DesensitizationHandlerFactory;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.BeanProperty;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.ser.ContextualSerializer;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.IOException;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+
+/**
+ * 脱敏序列化器
+ *
+ * @author gaibu
+ */
+public class StringDesensitizeSerializer extends StdSerializer implements ContextualSerializer {
+
+ @Getter
+ @Setter
+ private DesensitizationHandler desensitizationHandler;
+
+ protected StringDesensitizeSerializer() {
+ super(String.class);
+ }
+
+ @Override
+ public JsonSerializer> createContextual(SerializerProvider serializerProvider, BeanProperty beanProperty) throws JsonMappingException {
+ DesensitizeBy annotation = beanProperty.getAnnotation(DesensitizeBy.class);
+ if (annotation == null) {
+ return this;
+ }
+ StringDesensitizeSerializer serializer = new StringDesensitizeSerializer();
+ serializer.setDesensitizationHandler(DesensitizationHandlerFactory.getDesensitizationHandler(annotation.handler()));
+ return serializer;
+ }
+
+ @Override
+ public void serialize(String value, JsonGenerator gen, SerializerProvider serializerProvider) throws IOException {
+ if (StrUtil.isBlank(value)) {
+ gen.writeNull();
+ return;
+ }
+ // 获取序列化字段
+ Field field = getField(gen);
+
+ // 自定义处理器
+ DesensitizeBy[] annotations = AnnotationUtil.getCombinationAnnotations(field, DesensitizeBy.class);
+ if (ArrayUtil.isEmpty(annotations)) {
+ gen.writeString(value);
+ return;
+ }
+ for (Annotation annotation : field.getAnnotations()) {
+ if (AnnotationUtil.hasAnnotation(annotation.annotationType(), DesensitizeBy.class)) {
+ value = this.desensitizationHandler.desensitize(value, annotation);
+ gen.writeString(value);
+ return;
+ }
+ }
+ gen.writeString(value);
+ }
+
+ /**
+ * 获取字段
+ *
+ * @param gen JsonGenerator
+ * @return 字段
+ */
+ private Field getField(JsonGenerator gen) {
+ String currentName = gen.getOutputContext().getCurrentName();
+ Object currentValue = gen.getCurrentValue();
+ Class> currentValueClass = currentValue.getClass();
+ return ReflectUtil.getField(currentValueClass, currentName);
+ }
+
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/EmailDesensitize.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/EmailDesensitize.java
new file mode 100644
index 0000000..303320b
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/EmailDesensitize.java
@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.framework.desensitize.core.regex.annotation;
+
+import cn.iocoder.yudao.framework.desensitize.core.base.annotation.DesensitizeBy;
+import cn.iocoder.yudao.framework.desensitize.core.regex.handler.EmailDesensitizationHandler;
+import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 邮箱
+ *
+ * @author gaibu
+ */
+@Documented
+@Target({ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+@JacksonAnnotationsInside
+@DesensitizeBy(handler = EmailDesensitizationHandler.class)
+public @interface EmailDesensitize {
+
+ /**
+ * 匹配的正则表达式
+ */
+ String regex() default "(^.)[^@]*(@.*$)";
+
+ /**
+ * 替换规则,邮箱;比如:example@gmail.com脱敏之后为e****@gmail.com
+ */
+ String replacer() default "$1****$2";
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/RegexDesensitize.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/RegexDesensitize.java
new file mode 100644
index 0000000..6c457fd
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/annotation/RegexDesensitize.java
@@ -0,0 +1,37 @@
+package cn.iocoder.yudao.framework.desensitize.core.regex.annotation;
+
+import cn.iocoder.yudao.framework.desensitize.core.base.annotation.DesensitizeBy;
+import cn.iocoder.yudao.framework.desensitize.core.regex.handler.DefaultRegexDesensitizationHandler;
+import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 正则脱敏注解
+ *
+ * @author gaibu
+ */
+@Documented
+@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@JacksonAnnotationsInside
+@DesensitizeBy(handler = DefaultRegexDesensitizationHandler.class)
+public @interface RegexDesensitize {
+
+ /**
+ * 匹配的正则表达式(默认匹配所有)
+ */
+ String regex() default "^[\\s\\S]*$";
+
+ /**
+ * 替换规则,会将匹配到的字符串全部替换成 replacer
+ * 例如:regex=123; replacer=******
+ * 原始字符串 123456789
+ * 脱敏后字符串 ******456789
+ */
+ String replacer() default "******";
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/AbstractRegexDesensitizationHandler.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/AbstractRegexDesensitizationHandler.java
new file mode 100644
index 0000000..158c6de
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/AbstractRegexDesensitizationHandler.java
@@ -0,0 +1,37 @@
+package cn.iocoder.yudao.framework.desensitize.core.regex.handler;
+
+import cn.iocoder.yudao.framework.desensitize.core.base.handler.DesensitizationHandler;
+
+import java.lang.annotation.Annotation;
+
+/**
+ * 正则表达式脱敏处理器抽象类,已实现通用的方法
+ *
+ * @author gaibu
+ */
+public abstract class AbstractRegexDesensitizationHandler implements DesensitizationHandler {
+
+ @Override
+ public String desensitize(String origin, T annotation) {
+ String regex = getRegex(annotation);
+ String replacer = getReplacer(annotation);
+
+ return origin.replaceAll(regex, replacer);
+ }
+
+ /**
+ * 获取注解上的 regex 参数
+ *
+ * @param annotation 注解信息
+ * @return 正则表达式
+ */
+ abstract String getRegex(T annotation);
+
+ /**
+ * 获取注解上的 replacer 参数
+ *
+ * @param annotation 注解信息
+ * @return 待替换的字符串
+ */
+ abstract String getReplacer(T annotation);
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/DefaultRegexDesensitizationHandler.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/DefaultRegexDesensitizationHandler.java
new file mode 100644
index 0000000..b3a788a
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/DefaultRegexDesensitizationHandler.java
@@ -0,0 +1,22 @@
+package cn.iocoder.yudao.framework.desensitize.core.regex.handler;
+
+import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.RegexDesensitize;
+
+/**
+ * 默认正则脱敏处理器
+ *
+ * @author gaibu
+ */
+public class DefaultRegexDesensitizationHandler extends AbstractRegexDesensitizationHandler {
+
+
+ @Override
+ String getRegex(RegexDesensitize annotation) {
+ return annotation.regex();
+ }
+
+ @Override
+ String getReplacer(RegexDesensitize annotation) {
+ return annotation.replacer();
+ }
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/EmailDesensitizationHandler.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/EmailDesensitizationHandler.java
new file mode 100644
index 0000000..5313381
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/EmailDesensitizationHandler.java
@@ -0,0 +1,21 @@
+package cn.iocoder.yudao.framework.desensitize.core.regex.handler;
+
+import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.EmailDesensitize;
+
+/**
+ * 邮箱脱敏处理器
+ *
+ * @author gaibu
+ */
+public class EmailDesensitizationHandler extends AbstractRegexDesensitizationHandler {
+
+ @Override
+ String getRegex(EmailDesensitize annotation) {
+ return annotation.regex();
+ }
+
+ @Override
+ String getReplacer(EmailDesensitize annotation) {
+ return annotation.replacer();
+ }
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/BankCard.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/BankCard.java
new file mode 100644
index 0000000..762ce31
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/BankCard.java
@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.framework.desensitize.core.slider.annotation;
+
+import cn.iocoder.yudao.framework.desensitize.core.base.annotation.DesensitizeBy;
+import cn.iocoder.yudao.framework.desensitize.core.slider.handler.BankCardDesensitization;
+import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 银行卡号
+ *
+ * @author gaibu
+ */
+@Documented
+@Target({ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+@JacksonAnnotationsInside
+@DesensitizeBy(handler = BankCardDesensitization.class)
+public @interface BankCard {
+
+ /**
+ * 前缀保留长度
+ */
+ int prefixKeep() default 6;
+
+ /**
+ * 后缀保留长度
+ */
+ int suffixKeep() default 2;
+
+ /**
+ * 替换规则,银行卡号;比如:9988002866797031脱敏之后为998800********31
+ */
+ String replacer() default "*";
+
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/CarLicense.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/CarLicense.java
new file mode 100644
index 0000000..d3d09ad
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/CarLicense.java
@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.framework.desensitize.core.slider.annotation;
+
+import cn.iocoder.yudao.framework.desensitize.core.base.annotation.DesensitizeBy;
+import cn.iocoder.yudao.framework.desensitize.core.slider.handler.CarLicenseDesensitization;
+import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 车牌号
+ *
+ * @author gaibu
+ */
+@Documented
+@Target({ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+@JacksonAnnotationsInside
+@DesensitizeBy(handler = CarLicenseDesensitization.class)
+public @interface CarLicense {
+
+ /**
+ * 前缀保留长度
+ */
+ int prefixKeep() default 3;
+
+ /**
+ * 后缀保留长度
+ */
+ int suffixKeep() default 1;
+
+ /**
+ * 替换规则,车牌号;比如:粤A66666脱敏之后为粤A6***6
+ */
+ String replacer() default "*";
+
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/ChineseName.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/ChineseName.java
new file mode 100644
index 0000000..92e46e5
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/ChineseName.java
@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.framework.desensitize.core.slider.annotation;
+
+import cn.iocoder.yudao.framework.desensitize.core.base.annotation.DesensitizeBy;
+import cn.iocoder.yudao.framework.desensitize.core.slider.handler.ChineseNameDesensitization;
+import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 中文名
+ *
+ * @author gaibu
+ */
+@Documented
+@Target({ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+@JacksonAnnotationsInside
+@DesensitizeBy(handler = ChineseNameDesensitization.class)
+public @interface ChineseName {
+
+ /**
+ * 前缀保留长度
+ */
+ int prefixKeep() default 1;
+
+ /**
+ * 后缀保留长度
+ */
+ int suffixKeep() default 0;
+
+ /**
+ * 替换规则,中文名;比如:刘子豪脱敏之后为刘**
+ */
+ String replacer() default "*";
+
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/FixedPhone.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/FixedPhone.java
new file mode 100644
index 0000000..8675521
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/FixedPhone.java
@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.framework.desensitize.core.slider.annotation;
+
+import cn.iocoder.yudao.framework.desensitize.core.base.annotation.DesensitizeBy;
+import cn.iocoder.yudao.framework.desensitize.core.slider.handler.FixedPhoneDesensitization;
+import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 固定电话
+ *
+ * @author gaibu
+ */
+@Documented
+@Target({ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+@JacksonAnnotationsInside
+@DesensitizeBy(handler = FixedPhoneDesensitization.class)
+public @interface FixedPhone {
+
+ /**
+ * 前缀保留长度
+ */
+ int prefixKeep() default 4;
+
+ /**
+ * 后缀保留长度
+ */
+ int suffixKeep() default 2;
+
+ /**
+ * 替换规则,固定电话;比如:01086551122脱敏之后为0108*****22
+ */
+ String replacer() default "*";
+
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/IdCard.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/IdCard.java
new file mode 100644
index 0000000..7b976ba
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/IdCard.java
@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.framework.desensitize.core.slider.annotation;
+
+import cn.iocoder.yudao.framework.desensitize.core.base.annotation.DesensitizeBy;
+import cn.iocoder.yudao.framework.desensitize.core.slider.handler.IdCardDesensitization;
+import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 身份证
+ *
+ * @author gaibu
+ */
+@Documented
+@Target({ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+@JacksonAnnotationsInside
+@DesensitizeBy(handler = IdCardDesensitization.class)
+public @interface IdCard {
+
+ /**
+ * 前缀保留长度
+ */
+ int prefixKeep() default 6;
+
+ /**
+ * 后缀保留长度
+ */
+ int suffixKeep() default 2;
+
+ /**
+ * 替换规则,身份证号码;比如:530321199204074611脱敏之后为530321**********11
+ */
+ String replacer() default "*";
+
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Password.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Password.java
new file mode 100644
index 0000000..bbe067a
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Password.java
@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.framework.desensitize.core.slider.annotation;
+
+import cn.iocoder.yudao.framework.desensitize.core.base.annotation.DesensitizeBy;
+import cn.iocoder.yudao.framework.desensitize.core.slider.handler.PasswordDesensitization;
+import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 密码
+ *
+ * @author gaibu
+ */
+@Documented
+@Target({ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+@JacksonAnnotationsInside
+@DesensitizeBy(handler = PasswordDesensitization.class)
+public @interface Password {
+
+ /**
+ * 前缀保留长度
+ */
+ int prefixKeep() default 0;
+
+ /**
+ * 后缀保留长度
+ */
+ int suffixKeep() default 0;
+
+ /**
+ * 替换规则,密码;比如:123456脱敏之后为******
+ */
+ String replacer() default "*";
+
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/PhoneNumber.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/PhoneNumber.java
new file mode 100644
index 0000000..87d7893
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/PhoneNumber.java
@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.framework.desensitize.core.slider.annotation;
+
+import cn.iocoder.yudao.framework.desensitize.core.base.annotation.DesensitizeBy;
+import cn.iocoder.yudao.framework.desensitize.core.slider.handler.PhoneNumberDesensitization;
+import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 手机号
+ *
+ * @author gaibu
+ */
+@Documented
+@Target({ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+@JacksonAnnotationsInside
+@DesensitizeBy(handler = PhoneNumberDesensitization.class)
+public @interface PhoneNumber {
+
+ /**
+ * 前缀保留长度
+ */
+ int prefixKeep() default 3;
+
+ /**
+ * 后缀保留长度
+ */
+ int suffixKeep() default 4;
+
+ /**
+ * 替换规则,手机号;比如:13248765917脱敏之后为132****5917
+ */
+ String replacer() default "*";
+
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Slider.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Slider.java
new file mode 100644
index 0000000..4d3cac7
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/annotation/Slider.java
@@ -0,0 +1,42 @@
+package cn.iocoder.yudao.framework.desensitize.core.slider.annotation;
+
+import cn.iocoder.yudao.framework.desensitize.core.base.annotation.DesensitizeBy;
+import cn.iocoder.yudao.framework.desensitize.core.slider.handler.DefaultDesensitizationHandler;
+import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 滑动脱敏注解
+ *
+ * @author gaibu
+ */
+@Documented
+@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@JacksonAnnotationsInside
+@DesensitizeBy(handler = DefaultDesensitizationHandler.class)
+public @interface Slider {
+
+ /**
+ * 后缀保留长度
+ */
+ int suffixKeep() default 0;
+
+ /**
+ * 替换规则,会将前缀后缀保留后,全部替换成 replacer
+ * 例如:prefixKeep = 1; suffixKeep = 2; replacer = "*";
+ * 原始字符串 123456
+ * 脱敏后 1***56
+ */
+ String replacer() default "*";
+
+ /**
+ * 前缀保留长度
+ */
+ int prefixKeep() default 0;
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/AbstractDesensitizationHandler.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/AbstractDesensitizationHandler.java
new file mode 100644
index 0000000..bd5ca92
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/AbstractDesensitizationHandler.java
@@ -0,0 +1,77 @@
+package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
+
+import cn.iocoder.yudao.framework.desensitize.core.base.handler.DesensitizationHandler;
+
+import java.lang.annotation.Annotation;
+
+/**
+ * 滑动脱敏处理器抽象类,已实现通用的方法
+ *
+ * @author gaibu
+ */
+public abstract class AbstractDesensitizationHandler implements DesensitizationHandler {
+
+ @Override
+ public String desensitize(String origin, T annotation) {
+ int prefixKeep = getPrefixKeep(annotation);
+ int suffixKeep = getSuffixKeep(annotation);
+ String replacer = getReplacer(annotation);
+ int length = origin.length();
+
+ // 情况一:原始字符串长度小于等于保留长度,则原始字符串全部替换
+ if (prefixKeep >= length || suffixKeep >= length) {
+ return buildReplacerByLength(replacer, length);
+ }
+
+ // 情况二:原始字符串长度小于等于前后缀保留字符串长度,则原始字符串全部替换
+ if ((prefixKeep + suffixKeep) >= length) {
+ return buildReplacerByLength(replacer, length);
+ }
+
+ // 情况三:原始字符串长度大于前后缀保留字符串长度,则替换中间字符串
+ int interval = length - prefixKeep - suffixKeep;
+ return origin.substring(0, prefixKeep) +
+ buildReplacerByLength(replacer, interval) +
+ origin.substring(prefixKeep + interval);
+ }
+
+ /**
+ * 前缀保留长度
+ *
+ * @param annotation 注解信息
+ * @return 前缀保留长度
+ */
+ abstract Integer getPrefixKeep(T annotation);
+
+ /**
+ * 后缀保留长度
+ *
+ * @param annotation 注解信息
+ * @return 后缀保留长度
+ */
+ abstract Integer getSuffixKeep(T annotation);
+
+ /**
+ * 替换符
+ *
+ * @param annotation 注解信息
+ * @return 替换符
+ */
+ abstract String getReplacer(T annotation);
+
+ /**
+ * 根据长度循环构建替换符
+ *
+ * @param replacer 替换符
+ * @param length 长度
+ * @return 构建后的替换符
+ */
+ private String buildReplacerByLength(String replacer, int length) {
+ StringBuilder builder = new StringBuilder();
+ for (int i = 0; i < length; i++) {
+ builder.append(replacer);
+ }
+ return builder.toString();
+ }
+
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/BankCardDesensitization.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/BankCardDesensitization.java
new file mode 100644
index 0000000..76e63a6
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/BankCardDesensitization.java
@@ -0,0 +1,27 @@
+package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
+
+import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.BankCard;
+
+/**
+ * 银行卡脱敏处理器
+ *
+ * @author gaibu
+ */
+public class BankCardDesensitization extends AbstractDesensitizationHandler {
+
+ @Override
+ Integer getPrefixKeep(BankCard annotation) {
+ return annotation.prefixKeep();
+ }
+
+ @Override
+ Integer getSuffixKeep(BankCard annotation) {
+ return annotation.suffixKeep();
+ }
+
+ @Override
+ String getReplacer(BankCard annotation) {
+ return annotation.replacer();
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/CarLicenseDesensitization.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/CarLicenseDesensitization.java
new file mode 100644
index 0000000..742851a
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/CarLicenseDesensitization.java
@@ -0,0 +1,25 @@
+package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
+
+import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.CarLicense;
+
+/**
+ * 车牌号脱敏处理器
+ *
+ * @author gaibu
+ */
+public class CarLicenseDesensitization extends AbstractDesensitizationHandler {
+ @Override
+ Integer getPrefixKeep(CarLicense annotation) {
+ return annotation.prefixKeep();
+ }
+
+ @Override
+ Integer getSuffixKeep(CarLicense annotation) {
+ return annotation.suffixKeep();
+ }
+
+ @Override
+ String getReplacer(CarLicense annotation) {
+ return annotation.replacer();
+ }
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/ChineseNameDesensitization.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/ChineseNameDesensitization.java
new file mode 100644
index 0000000..f731486
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/ChineseNameDesensitization.java
@@ -0,0 +1,25 @@
+package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
+
+import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.ChineseName;
+
+/**
+ * 中文姓名脱敏处理器
+ *
+ * @author gaibu
+ */
+public class ChineseNameDesensitization extends AbstractDesensitizationHandler {
+ @Override
+ Integer getPrefixKeep(ChineseName annotation) {
+ return annotation.prefixKeep();
+ }
+
+ @Override
+ Integer getSuffixKeep(ChineseName annotation) {
+ return annotation.suffixKeep();
+ }
+
+ @Override
+ String getReplacer(ChineseName annotation) {
+ return annotation.replacer();
+ }
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/DefaultDesensitizationHandler.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/DefaultDesensitizationHandler.java
new file mode 100644
index 0000000..0c498b0
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/DefaultDesensitizationHandler.java
@@ -0,0 +1,25 @@
+package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
+
+import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.Slider;
+
+/**
+ * 滑动脱敏处理器
+ *
+ * @author gaibu
+ */
+public class DefaultDesensitizationHandler extends AbstractDesensitizationHandler {
+ @Override
+ Integer getPrefixKeep(Slider annotation) {
+ return annotation.prefixKeep();
+ }
+
+ @Override
+ Integer getSuffixKeep(Slider annotation) {
+ return annotation.suffixKeep();
+ }
+
+ @Override
+ String getReplacer(Slider annotation) {
+ return annotation.replacer();
+ }
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/FixedPhoneDesensitization.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/FixedPhoneDesensitization.java
new file mode 100644
index 0000000..50672ce
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/FixedPhoneDesensitization.java
@@ -0,0 +1,25 @@
+package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
+
+import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.FixedPhone;
+
+/**
+ * 固定电话脱敏处理器
+ *
+ * @author gaibu
+ */
+public class FixedPhoneDesensitization extends AbstractDesensitizationHandler {
+ @Override
+ Integer getPrefixKeep(FixedPhone annotation) {
+ return annotation.prefixKeep();
+ }
+
+ @Override
+ Integer getSuffixKeep(FixedPhone annotation) {
+ return annotation.suffixKeep();
+ }
+
+ @Override
+ String getReplacer(FixedPhone annotation) {
+ return annotation.replacer();
+ }
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/IdCardDesensitization.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/IdCardDesensitization.java
new file mode 100644
index 0000000..657a191
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/IdCardDesensitization.java
@@ -0,0 +1,25 @@
+package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
+
+import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.IdCard;
+
+/**
+ * 身份证脱敏处理器
+ *
+ * @author gaibu
+ */
+public class IdCardDesensitization extends AbstractDesensitizationHandler {
+ @Override
+ Integer getPrefixKeep(IdCard annotation) {
+ return annotation.prefixKeep();
+ }
+
+ @Override
+ Integer getSuffixKeep(IdCard annotation) {
+ return annotation.suffixKeep();
+ }
+
+ @Override
+ String getReplacer(IdCard annotation) {
+ return annotation.replacer();
+ }
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PasswordDesensitization.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PasswordDesensitization.java
new file mode 100644
index 0000000..d3561ce
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PasswordDesensitization.java
@@ -0,0 +1,25 @@
+package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
+
+import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.Password;
+
+/**
+ * 密码脱敏处理器
+ *
+ * @author gaibu
+ */
+public class PasswordDesensitization extends AbstractDesensitizationHandler {
+ @Override
+ Integer getPrefixKeep(Password annotation) {
+ return annotation.prefixKeep();
+ }
+
+ @Override
+ Integer getSuffixKeep(Password annotation) {
+ return annotation.suffixKeep();
+ }
+
+ @Override
+ String getReplacer(Password annotation) {
+ return annotation.replacer();
+ }
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PhoneNumberDesensitization.java b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PhoneNumberDesensitization.java
new file mode 100644
index 0000000..e6c11bd
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/PhoneNumberDesensitization.java
@@ -0,0 +1,26 @@
+package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
+
+import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.PhoneNumber;
+
+/**
+ * 手机号脱敏处理器
+ *
+ * @author gaibu
+ */
+public class PhoneNumberDesensitization extends AbstractDesensitizationHandler {
+
+ @Override
+ Integer getPrefixKeep(PhoneNumber annotation) {
+ return annotation.prefixKeep();
+ }
+
+ @Override
+ Integer getSuffixKeep(PhoneNumber annotation) {
+ return annotation.suffixKeep();
+ }
+
+ @Override
+ String getReplacer(PhoneNumber annotation) {
+ return annotation.replacer();
+ }
+}
--
libgit2 0.21.4