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.
56 lines
1.4 KiB
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();
|
|
}
|
|
}
|
|
}
|