From e725886b4210e444bc67ac105f970e09f5d18dd0 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 30 Aug 2022 15:12:44 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E9=80=9A=E7=94=A8=E3=80=91=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=AF=B9=E4=B8=AD=E6=96=87=E5=90=8D=E5=AD=97=E7=9A=84?= =?UTF-8?q?=E6=89=93=E7=A0=81=E8=A7=84=E5=88=99=EF=BC=9B=E3=80=90=E4=BA=94?= =?UTF-8?q?=E5=A4=A7=E5=9B=BE=E5=B1=82=E3=80=91=E7=BB=BC=E5=90=88=E6=B2=BB?= =?UTF-8?q?=E7=90=86=E5=9B=BE=E5=B1=82=E5=88=97=E8=A1=A8=E5=AF=B9=E4=B8=AD?= =?UTF-8?q?=E6=96=87=E5=90=8D=E5=AD=97=E6=89=93=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/annotation/MaskResponse.java | 1 + .../tools/processor/MaskProcessor.java | 24 +++++++++++++++++++ .../controller/IcResiUserController.java | 3 ++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/annotation/MaskResponse.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/annotation/MaskResponse.java index bb889a5913..26a0e2d01a 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/annotation/MaskResponse.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/annotation/MaskResponse.java @@ -15,6 +15,7 @@ public @interface MaskResponse { */ String MASK_TYPE_ID_CARD = "ID_CARD"; String MASK_TYPE_MOBILE = "MOBILE"; + String MASK_TYPE_CHINESE_NAME = "CHINESE_NAME"; ///** // * 默认的一些字段,如果没有手动指定,就会使用默认的。如果手动指定了,就不再使用默认的 diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/processor/MaskProcessor.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/processor/MaskProcessor.java index 11b5c5ce4f..a3169a2ec6 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/processor/MaskProcessor.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/processor/MaskProcessor.java @@ -133,11 +133,35 @@ public class MaskProcessor { return maskIdCard(originString); } else if (MaskResponse.MASK_TYPE_MOBILE.equals(maskType)) { return maskMobile(originString); + } else if (MaskResponse.MASK_TYPE_CHINESE_NAME.equals(maskType)) { + return maskChineseName(originString); } else { return originString; } } + /** + * 对中文人名进行打码 + * @param originString + * @return + */ + private String maskChineseName(String originString) { + if (StringUtils.isBlank(originString)) { + // 空串,或者只有一个字的,不打码,直接返回 + return originString; + } + + int length = originString.length(); + // 2个字以上的,首位字母明文,中间* + // 中文不能用\\w,要用[\u4e00-\u9fa5] + if (length == 2) { + return originString.replaceAll("^([\\u4e00-\\u9fa5]).*$", "$1*"); + } else { + String maskStr = StrUtil.repeat("*", length - 2); + return originString.replaceAll("^([\\u4e00-\\u9fa5]).*([\\u4e00-\\u9fa5])$", "$1" + maskStr + "$2"); + } + } + /** * 唯一整件号打码,可能是身份证号或者是护照号 * 将明文字符串打码变为掩码。保留前6,后面打码 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 3ef123383f..a62980703a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -1365,7 +1365,8 @@ public class IcResiUserController implements ResultDataResolver { * @return */ @PostMapping("listresi-zhzl") - @MaskResponse(fieldNames = {"MOBILE", "ID_CARD"}, fieldsMaskType = {MaskResponse.MASK_TYPE_MOBILE, MaskResponse.MASK_TYPE_ID_CARD}) + @MaskResponse(fieldNames = {"MOBILE", "ID_CARD", "NAME"}, + fieldsMaskType = {MaskResponse.MASK_TYPE_MOBILE, MaskResponse.MASK_TYPE_ID_CARD, MaskResponse.MASK_TYPE_CHINESE_NAME}) public Result>> listResiZhzl(@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO) { pageFormDTO.setCustomerId(tokenDto.getCustomerId()); pageFormDTO.setStaffId(tokenDto.getUserId());