From b043270e52e3df2215c7f72a60e9b29c37a1d2f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Fri, 7 Aug 2026 01:42:54 +0800 Subject: [PATCH] =?UTF-8?q?feat(auth):=20=E6=B7=BB=E5=8A=A0=E9=82=AE?= =?UTF-8?q?=E7=AE=B1=E9=AA=8C=E8=AF=81=E7=A0=81=E6=A0=A1=E9=AA=8C=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在EmailCaptchaParam中新增验证码字段code,用于验证码校验 - 新增/verifyEmailCaptcha接口,支持邮箱验证码的校验逻辑 - 实现邮箱格式和验证码非空校验,提供错误反馈 - 验证通过后删除Redis中对应验证码,防止重复使用 - 支持开发环境验证码验证,方便调试验证流程 --- .../system/controller/MainController.java | 25 +++++++++++++++++++ .../system/param/EmailCaptchaParam.java | 3 +++ 2 files changed, 28 insertions(+) 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;