From 2914eea299ec5a1d6bfdf40b2743226ef9cbc5af Mon Sep 17 00:00:00 2001
From: 刘帅 <rr.iii@qq.com>
Date: 星期一, 28 九月 2026 11:43:04 +0800
Subject: [PATCH] 脱敏接口调整及返回数据调整

---
 cloud-server-account/src/main/java/com/dsh/privacy/SensitiveDataMaskingAdvice.java |   18 +++++++++++++++---
 1 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/cloud-server-account/src/main/java/com/dsh/privacy/SensitiveDataMaskingAdvice.java b/cloud-server-account/src/main/java/com/dsh/privacy/SensitiveDataMaskingAdvice.java
index 0565e3c..a484a09 100644
--- a/cloud-server-account/src/main/java/com/dsh/privacy/SensitiveDataMaskingAdvice.java
+++ b/cloud-server-account/src/main/java/com/dsh/privacy/SensitiveDataMaskingAdvice.java
@@ -7,6 +7,9 @@
 import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
 import java.lang.reflect.Array;
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
@@ -22,6 +25,11 @@
 @ControllerAdvice
 public class SensitiveDataMaskingAdvice implements ResponseBodyAdvice<Object> {
     private static final String INTERNAL_SENSITIVE_ACCESS = "X-Internal-Sensitive-Access";
+    /** APP endpoints whose clients receive original values and mask only when displaying them. */
+    private static final Set<String> APP_UNMASKED_PATHS = new HashSet<String>(Arrays.asList(
+            "/base/exploreWP/storeDetail",
+            "/base/exploreWP/customerList"
+    ));
 
     private final HttpServletRequest request;
 
@@ -31,9 +39,13 @@
 
     @Override
     public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
-        // The only unmasked account response is the management-only endpoint.
-        return !(request.getRequestURI().startsWith("/internal/sensitive/")
-                && "true".equalsIgnoreCase(request.getHeader(INTERNAL_SENSITIVE_ACCESS)));
+        String path = request.getRequestURI();
+        // Internal management calls require their sensitive-access header. The
+        // two explicitly listed APP endpoints return original values for
+        // client-side display masking; all other account responses are masked.
+        return !(APP_UNMASKED_PATHS.contains(path)
+                || (path.startsWith("/internal/sensitive/")
+                && "true".equalsIgnoreCase(request.getHeader(INTERNAL_SENSITIVE_ACCESS))));
     }
 
     @Override

--
Gitblit v1.7.1