Selaa lähdekoodia

改为中间四位为星号

skyfffire 1 kuukausi sitten
vanhempi
commit
b355747c8f
1 muutettua tiedostoa jossa 23 lisäystä ja 8 poistoa
  1. 23 8
      src/main/java/modules/user/UserService.java

+ 23 - 8
src/main/java/modules/user/UserService.java

@@ -115,16 +115,31 @@ public class UserService {
         // 遍历 List<User>,对每个 User 的 mobile_number 进行脱敏处理
         for (User user : teamUserList) {
             String originalMobileNumber = user.getStr("mobile_number");
-            if (originalMobileNumber != null && originalMobileNumber.length() > 4) {
-                // 保留前几位,末尾四位替换为星号
-                String maskedMobileNumber = originalMobileNumber.substring(0, originalMobileNumber.length() - 4) + "****";
-                user.set("mobile_number", maskedMobileNumber);
+            String maskedMobileNumber;
+
+            if (originalMobileNumber != null && originalMobileNumber.length() == 11) {
+                // 假设手机号是标准的11位
+                // 截取前3位:originalMobileNumber.substring(0, 3) 
+                // 截取后4位:originalMobileNumber.substring(7) (从第7位开始到结束)
+                maskedMobileNumber = originalMobileNumber.substring(0, 3) + "****" + originalMobileNumber.substring(7);
             } else if (originalMobileNumber != null && !originalMobileNumber.isEmpty()) {
-                // 如果手机号不足四位,但非空,直接全部替换为星号 (或者根据需求保留前1位)
-                user.set("mobile_number", "****");
+                // 处理非11位手机号或短号的情况
+                // 例如:如果长度小于7位,或者其他不规范的手机号
+                // 这里可以根据实际需求进行更复杂的判断,例如:
+                // 如果长度 >= 7,保留前3后4,中间替换
+                // 如果长度 < 7,直接显示所有星号
+                if (originalMobileNumber.length() >= 7) { // 至少能保留前3后4
+                    maskedMobileNumber = originalMobileNumber.substring(0, 3) + "****" + originalMobileNumber.substring(originalMobileNumber.length() - 4);
+                } else {
+                    // 如果手机号过短,直接全部替换为星号
+                    maskedMobileNumber = "********"; // 示例,也可以是固定长度的星号
+                }
+            } else {
+                // originalMobileNumber == null 或者 originalMobileNumber.isEmpty()
+                maskedMobileNumber = ""; // 或者设置为 null,或者你想表示为 "N/A"
             }
-            // 如果 originalMobileNumber 是 null,则保持 null 或者设置为 "" 或者 "****"
-            // user.set("mobile_number", "****"); // 也可以直接设置为星号来统一处理
+
+            user.set("mobile_number", maskedMobileNumber);
         }
         
         Map<String, Object> rst = new HashMap<>();