diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/ValidateCodeHandler.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/ValidateCodeHandler.java index 5544c2456..f3168bccc 100644 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/ValidateCodeHandler.java +++ b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/ValidateCodeHandler.java @@ -3,6 +3,7 @@ package com.ruoyi.gateway.handler; import java.io.IOException; import java.util.Objects; +import com.ruoyi.common.core.utils.uuid.IdUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; @@ -35,7 +36,10 @@ public class ValidateCodeHandler implements HandlerFunction switch (serverRequest.queryParam("type").orElse("image")) { case "sms": if (Objects.nonNull(serverRequest.queryParam("receiver").orElse(null))) { - ajax = validateCodeService.createSMSCaptcha(serverRequest.queryParam("receiver").orElse(null)); + ajax = validateCodeService.createSMSCaptcha( + serverRequest.queryParam("receiver").orElse(null), + serverRequest.queryParam("uuid").orElse(IdUtils.simpleUUID()) + ); break; } default: diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/ValidateCodeService.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/ValidateCodeService.java index 051631a0a..c1e0d5c7e 100644 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/ValidateCodeService.java +++ b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/ValidateCodeService.java @@ -19,7 +19,7 @@ public interface ValidateCodeService /** * 生成短信验证码 */ - public AjaxResult createSMSCaptcha(String receiver) throws IOException, CaptchaException; + public AjaxResult createSMSCaptcha(String receiver,String uuid) throws IOException, CaptchaException; /** * 校验验证码 diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java index e7367344b..d2d169429 100644 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java +++ b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java @@ -104,20 +104,23 @@ public class ValidateCodeServiceImpl implements ValidateCodeService } @Override - public AjaxResult createSMSCaptcha(String receiver) throws IOException, CaptchaException { + public AjaxResult createSMSCaptcha(String receiver, String uuid) throws IOException, CaptchaException { AjaxResult ajax = AjaxResult.success(); boolean captchaEnabled = captchaProperties.getEnabled(); ajax.put("captchaEnabled", captchaEnabled); - if (!captchaEnabled) - { + if (!captchaEnabled) { return ajax; } // 保存验证码信息 - String uuid = IdUtils.simpleUUID(); String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid; - String code = captchaProducerNumber.createText(); - redisService.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); - ajax.put("code", code); + long expire = redisService.getExpire(verifyKey); + if (expire <= 0) { + String code = captchaProducerNumber.createText(); + redisService.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); + ajax.put("code", code); + expire = redisService.getExpire(verifyKey); + } + ajax.put("expire", expire); ajax.put("uuid", uuid); return ajax; }