CaptchaCodeManager
发布时间:2020-12-15 04:41:46 所属栏目:Java 来源:网络整理
导读:package org.linlinjava.litemall.wx.service; import org.linlinjava.litemall.wx.dto.CaptchaItem; import java.time.LocalDateTime; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * 缓存系统中
package org.linlinjava.litemall.wx.service; import org.linlinjava.litemall.wx.dto.CaptchaItem; import java.time.LocalDateTime; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * 缓存系统中的验证码 */ public class CaptchaCodeManager { private static ConcurrentHashMap<String,CaptchaItem> captchaCodeCache = new ConcurrentHashMap<>(); /** * 添加到缓存 * * @param phoneNumber 电话号码 * @param code 验证码 */ public static boolean addToCache(String phoneNumber,String code) { //已经发过验证码且验证码还未过期 if (captchaCodeCache.get(phoneNumber) != null) { if (captchaCodeCache.get(phoneNumber).getExpireTime().isAfter(LocalDateTime.now())) { return false; } else { //存在但是已过期,删掉 captchaCodeCache.remove(phoneNumber); } } CaptchaItem captchaItem = new CaptchaItem(); captchaItem.setPhoneNumber(phoneNumber); captchaItem.setCode(code); // 有效期为1分钟 captchaItem.setExpireTime(LocalDateTime.now().plusMinutes(1)); captchaCodeCache.put(phoneNumber,captchaItem); return true; } /** * 获取缓存的验证码 * * @param phoneNumber 关联的电话号码 * @return 验证码 */ public static String getCachedCaptcha(String phoneNumber) { //没有这个电话记录 if (captchaCodeCache.get(phoneNumber) == null) return null; //有电话记录但是已经过期 if (captchaCodeCache.get(phoneNumber).getExpireTime().isBefore(LocalDateTime.now())) { return null; } return captchaCodeCache.get(phoneNumber).getCode(); } } package org.linlinjava.litemall.wx.dto; import java.time.LocalDateTime; /** * 验证码实体类,用于缓存验证码发送 */ public class CaptchaItem { private String phoneNumber; private String code; private LocalDateTime expireTime; public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public LocalDateTime getExpireTime() { return expireTime; } public void setExpireTime(LocalDateTime expireTime) { this.expireTime = expireTime; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |