refactor: 代码质量优化 + 安全修复 + 性能提升
P0 安全修复: - 修复 DatabaseFieldAdder.java 硬编码密码 → 改为环境变量 - 修复 11 个文件空 catch 块 → 添加日志记录 - 修复 40 个文件 System.out → 改为 SLF4J Logger P1 性能优化: - 启用 Spring Boot Actuator 健康检查 (health/info/metrics) - 为字典数据查询添加 @Cacheable 缓存 P2 测试: - 添加 Convert 工具类单元测试 (10 个测试用例) - 添加 spring-boot-starter-test 依赖 P3 版本升级: - hutool: 5.8.35 → 5.8.36 - httpclient 5.x (跳过, 改动量大) 验证: 编译通过 / 测试通过
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
package com.openhis.common.utils;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.Period;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
@@ -13,6 +16,7 @@ import java.time.format.DateTimeParseException;
|
||||
* @Version 1.0
|
||||
**/
|
||||
public class IdCardAgeCalculator {
|
||||
private static final Logger log = LoggerFactory.getLogger(IdCardAgeCalculator.class);
|
||||
/**
|
||||
* 根据身份证号计算年龄(支持15/18位)
|
||||
* @param idCard 身份证号
|
||||
@@ -21,7 +25,7 @@ public class IdCardAgeCalculator {
|
||||
public static int calculateAge(String idCard) {
|
||||
// 1. 校验身份证号合法性(基础校验:长度、非空)
|
||||
if (!isValidIdCard(idCard)) {
|
||||
System.out.println("身份证号格式非法!");
|
||||
log.info("身份证号格式非法!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -33,7 +37,7 @@ public class IdCardAgeCalculator {
|
||||
try {
|
||||
birthDate = LocalDate.parse(birthDateStr, DateTimeFormatter.ofPattern("yyyyMMdd"));
|
||||
} catch (DateTimeParseException e) {
|
||||
System.out.println("出生日期解析失败,身份证号可能非法!");
|
||||
log.info("出生日期解析失败,身份证号可能非法!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -93,18 +97,18 @@ public class IdCardAgeCalculator {
|
||||
public static void main(String[] args) {
|
||||
// 测试1:18位身份证(出生日期2000-01-01,当前日期2024-05-20 → 年龄24)
|
||||
String idCard18 = "110101200001011234";
|
||||
System.out.println("18位身份证年龄:" + calculateAge(idCard18));
|
||||
log.info("18位身份证年龄:" + calculateAge(idCard18));
|
||||
|
||||
// 测试2:15位身份证(出生日期2000-01-01 → 15位表示为000101,补全后20000101)
|
||||
String idCard15 = "110101000101123";
|
||||
System.out.println("15位身份证年龄:" + calculateAge(idCard15));
|
||||
log.info("15位身份证年龄:" + calculateAge(idCard15));
|
||||
|
||||
// 测试3:未过生日的情况(出生日期2000-06-01,当前日期2024-05-20 → 年龄23)
|
||||
String idCardNotBirthday = "110101200006011234";
|
||||
System.out.println("未过生日的年龄:" + calculateAge(idCardNotBirthday));
|
||||
log.info("未过生日的年龄:" + calculateAge(idCardNotBirthday));
|
||||
|
||||
// 测试4:非法身份证号(长度错误)
|
||||
String idCardInvalid = "11010120000101123"; // 17位
|
||||
System.out.println("非法身份证年龄:" + calculateAge(idCardInvalid));
|
||||
log.info("非法身份证年龄:" + calculateAge(idCardInvalid));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user