From 0a4785ae1b93f77a95128b70d8709a88ea053ada Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Mon, 6 Jul 2026 17:24:47 +0800 Subject: [PATCH] 1 --- .../adapter/web/AccountController.java | 2 +- .../domain/exception/ErrorCode.java | 3 +++ .../infrastructure/remote/SmsRemote.java | 22 ++++++++++++++++--- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java index 16e981c..ad6cf4b 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java @@ -74,7 +74,7 @@ public class AccountController { @ApiOperation("发送短信") @PostMapping("/sendMessage") - public com.alibaba.cola.dto.SingleResponse sendMessage(@Validated @RequestBody SendMessageCmd cmd) { + public com.alibaba.cola.dto.SingleResponse sendMessage(@Validated @RequestBody SendMessageCmd cmd) { return smsRemote.sign(cmd.getMobile()); } diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java index 4170674..ee5f0ec 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java @@ -94,10 +94,13 @@ public enum ErrorCode { * 短信码不存在 */ SMS_SOURCE_CODE_NOT_EXIST("04-01-001", "短信码不存在"), + SMS_CODE_EXPIRED("04-01-002", "验证码过期,请重新发送"), + SMS_CODE_NOT_RIGHT("04-01-003", "验证码不正确"), // gbs GBS_USER_ERROR("04-01-001", "gbs用户未登录"), + /** * 未知错误 */ diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/remote/SmsRemote.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/remote/SmsRemote.java index 1673381..2c67665 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/remote/SmsRemote.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/remote/SmsRemote.java @@ -2,6 +2,7 @@ package org.qinan.safetyeval.infrastructure.remote; import cn.hutool.json.JSONUtil; import com.alibaba.cola.dto.SingleResponse; +import com.jjb.saas.framework.redis.service.RedisService; import com.jjb.saas.message.client.message.facede.MessageFacade; import com.jjb.saas.message.client.message.request.MessageSendCmd; import com.jjb.saas.message.client.message.request.MessageTargetCmd; @@ -33,7 +34,7 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; -import static org.qinan.safetyeval.domain.exception.ErrorCode.SMS_SOURCE_CODE_NOT_EXIST; +import static org.qinan.safetyeval.domain.exception.ErrorCode.*; /** * 助通短信平台(融合云 v2)远程调用 @@ -57,6 +58,7 @@ public class SmsRemote { @DubboReference private MessageFacade messageFacade; + private final RedisService redisService; @Value("${sms.sign.sourceCode:}") @@ -85,11 +87,25 @@ public class SmsRemote { return sendSms(mobile, content); } - public SingleResponse sign(String mobile) { + public SingleResponse sign(String mobile) { String validCode = generateVerificationCode(); + String bizId = cn.hutool.core.lang.UUID.fastUUID().toString(); String content = "【秦安安全】您正在注册本系统,验证码:" + validCode + ",5分钟内有效,请勿泄露给他人,如非本人操作请忽略本条短信。"; sendSms(mobile, content); - return SingleResponse.of(true); + redisService.set(bizId, validCode, 5 * 60 * 1000); + return SingleResponse.of(bizId); + } + + public SingleResponse signValidCode(String mobile, String validCode) { + String bizId = cn.hutool.core.lang.UUID.fastUUID().toString(); + Object code = redisService.get(bizId); + if (code == null) { + throw new BizException(SMS_CODE_EXPIRED); + } + if (code.toString().equals(validCode)) { + throw new BizException(SMS_CODE_NOT_RIGHT); + } + return SingleResponse.of(bizId); } /**