Browse Source

优化身份证相关的计算

lighter 1 year ago
parent
commit
98abd53c20

+ 2 - 1
src/main/java/thyyxxk/wxservice_server/constant/Gender.java

@@ -2,7 +2,8 @@ package thyyxxk.wxservice_server.constant;
 
 public enum Gender {
     MALE(1, "男"),
-    FEMALE(2, "女");
+    FEMALE(2, "女"),
+    UNKNOWN(9, "未知");
 
     private final int code;
     private final String label;

+ 18 - 0
src/main/java/thyyxxk/wxservice_server/utils/IdCardUtil.java

@@ -238,11 +238,29 @@ public class IdCardUtil {
     }
 
     public static Gender getGenderByIdCard(String idCard) {
+        if (idCard.length() < 15) {
+            return Gender.UNKNOWN;
+        }
+        if (idCard.length() == 15) {
+            idCard = convertIdcarBy15bit(idCard);
+        }
+        if (StringUtil.isBlank(idCard) || idCard.length() != 18) {
+            return Gender.UNKNOWN;
+        }
         String gender = idCard.substring(16, 17);
         return Integer.parseInt(gender) % 2 == 0 ? Gender.FEMALE : Gender.MALE;
     }
 
     public static String getBirthDayByIdCard(String idCard) {
+        if (idCard.length() < 15) {
+            return "";
+        }
+        if (idCard.length() == 15) {
+            idCard = convertIdcarBy15bit(idCard);
+        }
+        if (StringUtil.isBlank(idCard) || idCard.length() != 18) {
+            return "";
+        }
         String rawbirth = idCard.substring(6, 14);
         return rawbirth.substring(0, 4) + "-"
                 + rawbirth.substring(4, 6) + "-"