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.

67 lines
1.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.xmomen.module.sms.model;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.concurrent.TimeUnit;
import lombok.Data;
// 定义一个验证码模型类
public @Data class IdentifyCodeModel {
// 验证码
private String identifyCode;
// 创建时间
private Date createTime;
// 过期时间
private Date expiredTime;
// 构造函数,传入验证码、有效时间和时间单位
public IdentifyCodeModel(String identifyCode, Long validTime, TimeUnit timeUnit) {
this.identifyCode = identifyCode;
Calendar calendar = new GregorianCalendar();
createTime = calendar.getTime();
if(validTime != null) {
if(validTime > 0) {
switch(timeUnit) {
case SECONDS: {
expiredTime = new Date(createTime.getTime() + validTime * 1000);
break;
}
case MINUTES: {
expiredTime = new Date(createTime.getTime() + validTime * 1000 * 60);
break;
}
default: {
throw new IllegalArgumentException("不支持其他时间类型");
}
}
} else {
throw new IllegalArgumentException("不合法有效时间值");
}
}
}
// 构造函数,传入验证码和有效时间,默认时间单位为秒
public IdentifyCodeModel(String identifyCode, Long validTime) {
this(identifyCode, validTime, TimeUnit.SECONDS);
}
// 构造函数传入验证码默认有效时间为null
public IdentifyCodeModel(String identifyCode) {
this(identifyCode, null);
}
// 判断验证码是否过期
public boolean isExpired() {
Date now = new Date();
if(expiredTime == null) return false;
if(now.getTime() > expiredTime.getTime()) {
return true;
}
return false;
}
}