From a372b0bd6768ac5a473d1ee0316a93f273f0066a Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Fri, 22 Apr 2022 09:30:59 +0800 Subject: [PATCH] =?UTF-8?q?map=E4=B8=AD=E7=9A=84mobile=E5=92=8Cidcard?= =?UTF-8?q?=E6=89=93=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/processor/MaskProcessor.java | 34 ++++++++++++++++++- .../controller/IcResiUserController.java | 1 + 2 files changed, 34 insertions(+), 1 deletion(-) 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 266acfdcbc..a6b13019a6 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 @@ -7,6 +7,7 @@ import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.Result; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.util.CollectionUtils; import java.lang.reflect.Field; import java.util.Arrays; @@ -49,11 +50,42 @@ public class MaskProcessor { ((List)object).forEach(e -> mask(e)); return; } else if (object instanceof Map) { - ((Map) object).values().forEach(v -> mask(v)); + maskMap((Map) object); return; } else if (object.getClass().getName().startsWith(EPMET_PACKAGE_PREFIX)) { // 自定义bean,走反射 maskEpmetBean(object); + return; + } + } + + /** + * 为map打码,只打value中的码 + * - 如果value是epmet的dto,那么去反射它 + * - 如果value是字符串,那么直接给他打码 + * - 如果value是其他类型,跳过 + * @param map + */ + private void maskMap(Map map) { + if (CollectionUtils.isEmpty(map)) { + return; + } + + for (Map.Entry entry : map.entrySet()) { + Object value = entry.getValue(); + Object key = entry.getKey(); + if (value != null && value.getClass().getName().startsWith(EPMET_PACKAGE_PREFIX)) { + // 是epmet的对象 + maskEpmetBean(value); + continue; + } else if (value instanceof String) { + int index = fieldNames.indexOf(key); + if (index != -1) { + String maskResult = maskString((String) value, fieldsMaskType.get(index)); + entry.setValue(maskResult); + } + continue; + } } } 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 cf06ccd432..f171340392 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 @@ -268,6 +268,7 @@ public class IcResiUserController implements ResultDataResolver { } @PostMapping("listresi") + @MaskResponse(fieldNames = { "MOBILE", "ID_CARD" }, fieldsMaskType = { MaskResponse.MASK_TYPE_MOBILE, MaskResponse.MASK_TYPE_ID_CARD }) public Result>> queryListResi1(@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO) { //pageFormDTO.setCustomerId("45687aa479955f9d06204d415238f7cc"); pageFormDTO.setCustomerId(tokenDto.getCustomerId());