diff --git a/src/main/java/com/gxwebsoft/common/system/controller/MainController.java b/src/main/java/com/gxwebsoft/common/system/controller/MainController.java index 2a380ad..19f1e10 100644 --- a/src/main/java/com/gxwebsoft/common/system/controller/MainController.java +++ b/src/main/java/com/gxwebsoft/common/system/controller/MainController.java @@ -877,6 +877,31 @@ public class MainController extends BaseController { } } + @Operation(summary = "校验邮箱验证码") + @PostMapping("/verifyEmailCaptcha") + public ApiResult verifyEmailCaptcha(@RequestBody EmailCaptchaParam param) { + if (param == null || StrUtil.isBlank(param.getEmail())) { + return fail("邮箱不能为空"); + } + if (!CommonUtil.isValidEmail(param.getEmail())) { + return fail("请输入有效的邮箱地址"); + } + if (StrUtil.isBlank(param.getCode())) { + return fail("验证码不能为空"); + } + // 与 sendEmailCaptcha 写入的 key 保持一致:emailCode:邮箱 + String key = RedisConstants.EMAIL_CODE_KEY + ":" + param.getEmail(); + String cachedCode = redisUtil.get(key); + String devCode = redisUtil.get(CACHE_KEY_VERIFICATION_CODE_BY_DEV_SMS); + if (cachedCode == null + || (!param.getCode().equals(cachedCode) && !param.getCode().equals(devCode))) { + return fail("邮箱验证码不正确"); + } + // 校验通过即删除,防止重复使用 + redisUtil.delete(key); + return success("邮箱验证通过"); + } + @OperationLog @Operation(summary = "重置密码") @PutMapping("/password") diff --git a/src/main/java/com/gxwebsoft/common/system/param/EmailCaptchaParam.java b/src/main/java/com/gxwebsoft/common/system/param/EmailCaptchaParam.java index a9dd144..68a0593 100644 --- a/src/main/java/com/gxwebsoft/common/system/param/EmailCaptchaParam.java +++ b/src/main/java/com/gxwebsoft/common/system/param/EmailCaptchaParam.java @@ -21,6 +21,9 @@ public class EmailCaptchaParam implements Serializable { @Schema(description = "邮箱") private String email; + @Schema(description = "邮箱验证码(校验时使用)") + private String code; + @Schema(description = "租户ID") private String tenantId;