签入版本

This commit is contained in:
2026-09-10 21:41:50 +08:00
commit 717116a605
2693 changed files with 355025 additions and 0 deletions
@@ -0,0 +1,132 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.sensitive.annotation;
import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.xiaomayi.sensitive.enums.SensitiveMode;
import com.xiaomayi.sensitive.enums.SensitiveType;
import com.xiaomayi.sensitive.utils.DesensitizationSerializer;
import java.lang.annotation.*;
/**
* <p>
* 脱敏注解
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-05-21
*/
// 该注解有一个ElementType数组类型的字段,主要用于标识自定义注解使用的位置
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.CONSTRUCTOR})
// 该元注解有一个RetentionPolicy类型的字段,主要用于标识自定义注解的生命周期
@Retention(RetentionPolicy.RUNTIME)
// 主要用于指示编译器将被注解元素的注释信息包含在生成的API文档中
@Documented
// 用来指示自定义注解是否可以被继承
@Inherited
@JacksonAnnotationsInside
@JsonSerialize(using = DesensitizationSerializer.class)
public @interface Sensitive {
/**
* 脱敏数据类型
*/
SensitiveType type() default SensitiveType.DEFAULT;
/**
* 脱敏方式,默认方式不需要定义下面脱敏长度等信息,根据脱敏的隐私数据类型自动脱敏
*/
SensitiveMode mode() default SensitiveMode.DEFAULT;
/**
* 尾部不脱敏的长度,当mode为HEAD或MIDDLE时使用
*/
int tailNoMaskLen() default 1;
/**
* 头部不脱敏的长度,当mode为TAIL或MIDDLE时使用
*/
int headNoMaskLen() default 1;
/**
* 中间不脱敏的长度,当mode为HEAD_TAIL时使用
*/
int middleNoMaskLen() default 1;
/**
* 脱敏打码符号,默认星号"*"
*/
char maskCode() default '*';
}
@@ -0,0 +1,113 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.sensitive.enums;
/**
* <p>
* 数据脱敏方式枚举
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-05-21
*/
public enum SensitiveMode {
/**
* 默认方式
*/
DEFAULT,
/**
* 头部脱敏
*/
HEAD,
/**
* 尾部脱敏
*/
TAIL,
/**
* 中间脱敏
*/
MIDDLE,
/**
* 头尾脱敏
*/
HEAD_TAIL,
/**
* 全部脱敏
*/
ALL,
/**
* 不脱敏,相当于没打这个注解
*/
NONE;
}
@@ -0,0 +1,122 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.sensitive.enums;
/**
* <p>
* 数据脱敏类型枚举
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-05-21
*/
public enum SensitiveType {
/**
* 默认类型,此类型为自定义类型,需在后面自定义脱敏的长度等
*/
DEFAULT,
/**
* 中文名
*/
CHINESE_NAME,
/**
* 固话
*/
FIXED_PHONE,
/**
* 手机号
*/
MOBILE_PHONE,
/**
* 住址
*/
ADDRESS,
/**
* 密码
*/
PASSWORD,
/**
* 银行卡号
*/
BANK_CARD,
/**
* 邮箱
*/
EMAIL,
/**
* 身份证
*/
ID_CARD
}
@@ -0,0 +1,332 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.sensitive.utils;
import cn.hutool.core.util.DesensitizedUtil;
import cn.hutool.core.util.StrUtil;
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.xiaomayi.core.utils.StringUtils;
import com.xiaomayi.sensitive.annotation.Sensitive;
import com.xiaomayi.sensitive.enums.SensitiveMode;
import com.xiaomayi.sensitive.enums.SensitiveType;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import java.io.IOException;
import java.util.Objects;
/**
* <p>
* 数据脱敏注解
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-05-21
*/
@AllArgsConstructor
@NoArgsConstructor
public class DesensitizationSerializer extends JsonSerializer<String> implements ContextualSerializer {
private Sensitive sensitive;
/**
* 序列化
*
* @param s 参数
* @param jsonGenerator JSON生成器
* @param serializerProvider 序列化
* @throws IOException 异常处理
*/
@Override
public void serialize(String s, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeString(desensitize(s));
}
/**
* 集成重写方法
* 备注:此方法只会在第一次序列化字段时调用
*
* @param serializerProvider 序列化
* @param beanProperty Bean属性
* @return 返回结果
* @throws JsonMappingException 异常处理
*/
@Override
public JsonSerializer<?> createContextual(SerializerProvider serializerProvider, BeanProperty beanProperty) throws JsonMappingException {
// 属性判空
if (StringUtils.isNull(beanProperty)) {
return serializerProvider.findNullValueSerializer(null);
}
// 判断属性类型是否String类型
if (Objects.equals(beanProperty.getType().getRawClass(), String.class)) {
// 获取注解
Sensitive annotation = beanProperty.getAnnotation(Sensitive.class);
if (StringUtils.isNull(annotation)) {
// 注解为空则获取注解对象
annotation = beanProperty.getContextAnnotation(Sensitive.class);
}
// 返回序列化结果
return new DesensitizationSerializer(annotation);
}
return serializerProvider.findValueSerializer(beanProperty.getType(), beanProperty);
}
/**
* 数据脱敏处理
*
* @param data 数据源
* @return 返回结果
*/
private String desensitize(String data) {
if (StrUtil.isNotBlank(data)) {
// 脱敏类型
SensitiveType type = sensitive.type();
// 脱敏方式
SensitiveMode mode = sensitive.mode();
switch (mode) {
case DEFAULT:
// 默认方式,根据type自动选择脱敏方式
data = autoDesensitize(data, type);
break;
case HEAD:
// 头部脱敏
data = headDesensitize(data);
break;
case TAIL:
// 尾部脱敏
data = tailDesensitize(data);
break;
case MIDDLE:
data = middleDesensitize(data);
break;
case HEAD_TAIL:
data = headTailDesensitize(data);
break;
case ALL:
data = allDesensitize(data);
break;
case NONE:
// 不做脱敏,此时不做任何处理
break;
default:
}
}
return data;
}
/**
* 全部脱敏,比如密码
*
* @param data 数据源
* @return 返回结果
*/
private String allDesensitize(String data) {
return String.valueOf(sensitive.maskCode()).repeat(data.length());
}
/**
* 头尾脱敏
*
* @param data 数据源
* @return 返回结果
*/
private String headTailDesensitize(String data) {
// 获取中间不脱敏长度
int middleNoMaskLen = sensitive.middleNoMaskLen();
// 脱敏长度MAX值校验
if (middleNoMaskLen >= data.length()) {
// 如果中间不脱敏的长度大于等于字符串的长度,不进行脱敏
return data;
}
int len = data.length() - middleNoMaskLen;
// 头部脱敏
int headStart = 0;
int headEnd = len / 2;
data = StrUtil.replace(data, headStart, headEnd, sensitive.maskCode());
// 尾部脱敏
int tailStart = data.length() - (len - len / 2);
int tailEnd = data.length();
return StrUtil.replace(data, tailStart, tailEnd, sensitive.maskCode());
}
/**
* 中间脱敏
*
* @param data 数据源
* @return 返回结果
*/
private String middleDesensitize(String data) {
// 获取头部不脱敏长度
int headNoMaskLen = sensitive.headNoMaskLen();
// 获取尾部不脱敏长度
int tailNoMaskLen = sensitive.tailNoMaskLen();
// 如果头部不脱敏的长度+尾部不脱敏长度 大于等于字符串的长度,不进行脱敏
if (headNoMaskLen + tailNoMaskLen >= data.length()) {
return data;
}
// 脱敏起始位置
int start = headNoMaskLen;
// 脱敏结束位置
int end = data.length() - tailNoMaskLen;
// 脱敏处理并返回结果
return StrUtil.replace(data, start, end, sensitive.maskCode());
}
/**
* 尾部脱敏
*
* @param data 数据源
* @return 返回结果
*/
private String tailDesensitize(String data) {
// 获取头部不脱敏长度
int headNoMaskLen = sensitive.headNoMaskLen();
// 如果头部不脱敏的长度大于等于字符串的长度,不进行脱敏
if (headNoMaskLen >= data.length()) {
return data;
}
// 脱敏起始位置
int start = headNoMaskLen;
// 脱敏结束位置
int end = data.length();
// 脱敏处理并返回结果
return StrUtil.replace(data, start, end, sensitive.maskCode());
}
/**
* 头部脱敏
*
* @param data 数据源
* @return 返回结果
*/
private String headDesensitize(String data) {
// 获取尾部不脱敏长度
int tailNoMaskLen = sensitive.tailNoMaskLen();
// 如果尾部不脱敏的长度大于等于字符串的长度,不进行脱敏
if (tailNoMaskLen >= data.length()) {
return data;
}
// 脱敏起始位置
int start = 0;
// 脱敏结束位置
int end = data.length() - tailNoMaskLen;
// 脱敏处理并返回结果
return StrUtil.replace(data, start, end, sensitive.maskCode());
}
/**
* 根据脱敏类型自动脱敏,包括但不限于:手机号、邮件、身份证号等
*
* @param data 数据源
* @param type 脱敏类型
* @return 返回结果
*/
private String autoDesensitize(String data, SensitiveType type) {
switch (type) {
case CHINESE_NAME:
data = DesensitizedUtil.chineseName(data);
break;
case FIXED_PHONE:
data = DesensitizedUtil.fixedPhone(data);
break;
case MOBILE_PHONE:
data = DesensitizedUtil.mobilePhone(data);
break;
case ADDRESS:
data = DesensitizedUtil.address(data, 8);
break;
case PASSWORD:
data = DesensitizedUtil.password(data);
break;
case BANK_CARD:
data = DesensitizedUtil.bankCard(data);
break;
case EMAIL:
data = DesensitizedUtil.email(data);
break;
case ID_CARD:
data = DesensitizedUtil.idCardNum(data, 1, 2);
break;
case DEFAULT:
// 其他类型的不支持以默认方式脱敏,直接返回
break;
default:
}
return data;
}
}