You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Math_Learning/src/Send_Email/Deal_i_code.java

56 lines
1.4 KiB

package Send_Email;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class Deal_i_code{
private static final Map<String, I_Code> 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();
}
}
}