package Send_Email; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class Deal_i_code{ private static final Map codeMap = new ConcurrentHashMap<>(); private static class I_Code { String code; long createTime; private static final long EXPIRATION_TIME = 5 * 60 * 1000; I_Code(String code) { this.code = code; this.createTime = System.currentTimeMillis(); } boolean isExpired() { return System.currentTimeMillis() - createTime > EXPIRATION_TIME; } } public static String generate_code(String email) { String code = Generate_i_code.generateCode(6); codeMap.put(email, new I_Code(code)); return code; } public static boolean judge_code(String email, String inputCode) { I_Code codeInfo = codeMap.get(email); if (codeInfo == null) { return false; } if (codeInfo.isExpired()) { codeMap.remove(email); return false; } boolean isValid = codeInfo.code.equals(inputCode); if (isValid) { codeMap.remove(email); } return isValid; } public static void clean_codes() { codeMap.entrySet().removeIf(entry -> entry.getValue().isExpired()); } public static void clean_all_codes(){ if (!codeMap.isEmpty()) { codeMap.clear(); } } }