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; } }