CaptchaCodeManager
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; } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步