完善代码

This commit is contained in:
刘伟龙 2020-03-19 09:49:02 +08:00
parent 1ee8b79248
commit 6ea24f4d64
2 changed files with 18 additions and 12 deletions

View File

@ -69,17 +69,10 @@ public class PatternPool {
/** 社会统一信用代码 */ /** 社会统一信用代码 */
public static final String REGEX = "^[A-Z0-9]{18}$"; public static final String CREDIT_CODE = "^[A-Z0-9]{18}$";
public static final String BASE_CODE_STRING = "0123456789ABCDEFGHJKLMNPQRTUWXY"; public static final String BASE_CODE_REGEX = "[0-9A-Y]{18}";
public static final String BASE_CODE_REGEX = "[" + BASE_CODE_STRING + "]{18}";
public static final List<Character> BASE_CODES = new ArrayList<>();
public static final int[] WEIGHT = {1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28};
public static final char[] BASE_CODE_ARRAY = BASE_CODE_STRING.toCharArray();
// ------------------------------------------------------------------------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------------------------------------------------------------------------
/** Pattern池 */ /** Pattern池 */

View File

@ -8,6 +8,8 @@ import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -87,6 +89,17 @@ public class Validator {
*/ */
public final static Pattern PLATE_NUMBER = PatternPool.PLATE_NUMBER; public final static Pattern PLATE_NUMBER = PatternPool.PLATE_NUMBER;
/**
* 社会统一信用代码
*/
public static final List<Character> BASE_CODES = new ArrayList<>();
public static final String BASE_CODE_STRING = "0123456789ABCDEFGHJKLMNPQRTUWXY";
public static final int[] WEIGHT = {1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28};
public static final char[] BASE_CODE_ARRAY = BASE_CODE_STRING.toCharArray();
/** /**
* 给定值是否为<code>true</code> * 给定值是否为<code>true</code>
* *
@ -1115,7 +1128,7 @@ public class Validator {
if (StrUtil.isBlank(creditCode)) { if (StrUtil.isBlank(creditCode)) {
return false; return false;
} }
return Pattern.matches(PatternPool.REGEX, creditCode); return Pattern.matches(PatternPool.CREDIT_CODE, creditCode);
} }
/** /**
@ -1133,9 +1146,9 @@ public class Validator {
int sum = 0, length = 17; int sum = 0, length = 17;
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
char key = businessCodeArray[i]; char key = businessCodeArray[i];
sum += (PatternPool.BASE_CODES.indexOf(key) * PatternPool.WEIGHT[i]); sum += (BASE_CODES.indexOf(key) * WEIGHT[i]);
} }
int value = 31 - sum % 31; int value = 31 - sum % 31;
return check == PatternPool.BASE_CODE_ARRAY[value % 31]; return check == BASE_CODE_ARRAY[value % 31];
} }
} }