浏览代码

feature: 增加脱敏工具方法

Walker 2 年之前
父节点
当前提交
e61959bf5c

+ 22 - 0
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/core/utils/BizUtil.java

@@ -22,4 +22,26 @@ public final class BizUtil {
                 return 0;
         }
     }
+
+
+    /**
+     * 字符串脱敏,指定保留前后 resBit 位明文显示,剩余字符串以`*`号显示。若字符串长度小于等于 2*resBit,则全部明文显示
+     *
+     * @param s 待处理字符串
+     * @return 处理后的字符串
+     */
+    public static String masked(String s, int resBit) {
+        if (s == null) return "";
+        if (s.length() <= 2 * resBit) return s;
+        int maskedBitLen = s.length() - 2 * resBit;
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < maskedBitLen; i++) {
+            sb.append("*");
+        }
+        return s.substring(0, resBit) + sb.toString() + s.substring(s.length() - resBit);
+    }
+
+    public static String masked(String s) {
+        return masked(s, 3);
+    }
 }

+ 2 - 2
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/service/impl/IsvMedicCardServiceImpl.java

@@ -364,9 +364,9 @@ public class IsvMedicCardServiceImpl implements IsvMedicCardService {
                     r.setName(c.getPatientName());
                     r.setAge(getAgeFromMedicalCard(c));
                     r.setSex(SexEnum.getSexDisplayName(c.getSex()));
-                    r.setPhoneNumber(c.getMobile());
+                    r.setPhoneNumber(BizUtil.masked(c.getMobile()));
                     r.setBirthDay(c.getBirthday());
-                    r.setIdCardNo(c.getIdNo());
+                    r.setIdCardNo(BizUtil.masked(c.getIdNo()));
                     r.setRelationShip(RelationshipEnum.valueOf(c.getRelationship()).getDisplayName());
                     r.setDefaultPatient(false); // TODO: 怎么确定默认就诊人
                     r.setBindCardNum(c.getCardNo());