添加一体机登录接口

This commit is contained in:
chenshaohua
2026-05-12 13:07:58 +08:00
parent 0648e1f70c
commit aed2093175
6 changed files with 175 additions and 2 deletions

View File

@@ -1,5 +1,7 @@
package com.ruoyi.common.utils;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
@@ -681,4 +683,54 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
}
return sb.toString();
}
/**
* 验证身份证有效期
* @param expireDate
* @return
*/
public static String checkIdCardExpire(String expireDate) {
// 空、空白 判定无效证件
if (expireDate == null || "".equals(expireDate.trim())) {
return "身份证无效,请重新刷卡";
}
String date = expireDate.trim();
// 长期有效 直接通过
if ("99991231".equals(date)) {
return "";
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
String nowDate = LocalDate.now().format(formatter);
// 已过期
if (nowDate.compareTo(date) >= 0) {
return "身份证已过有效期,请更换有效证件";
}
// 正常有效
return "";
}
/**
* 校验身份证号码是否合法18位支持校验码
*/
public static boolean isIdCardValid(String idCard) {
if (idCard == null || idCard.trim().length() != 18) {
return false;
}
// 前17位都是数字
String code = idCard.trim();
if (!code.substring(0, 17).matches("[0-9]+")) {
return false;
}
// 校验码验证(标准算法)
char[] chars = code.toCharArray();
int[] weights = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char[] codes = {'1','0','X','9','8','7','6','5','4','3','2'};
int sum = 0;
for (int i = 0; i < 17; i++) {
sum += (chars[i] - '0') * weights[i];
}
int mod = sum % 11;
return chars[17] == codes[mod];
}
}