fix:手机验证码

This commit is contained in:
xiang
2025-09-06 22:57:47 +08:00
parent 813eec5e7f
commit d887faea42
5 changed files with 23 additions and 4 deletions

View File

@@ -76,6 +76,12 @@
<artifactId>mapstruct</artifactId> <artifactId>mapstruct</artifactId>
<version>1.5.5.Final</version> <version>1.5.5.Final</version>
</dependency> </dependency>
<dependency>
<groupId>com.xiang</groupId>
<artifactId>xservice-message-starter</artifactId>
<version>2.0</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@@ -2,9 +2,13 @@ package com.xiang;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
@SpringBootApplication @SpringBootApplication
@ConfigurationPropertiesScan(basePackages = {
"com.xiang.xservice.basic.xservice.aliyun.config"
})
@EnableMethodSecurity(prePostEnabled = true) @EnableMethodSecurity(prePostEnabled = true)
public class AuthApplication { public class AuthApplication {
public static void main(String[] args) { public static void main(String[] args) {

View File

@@ -6,6 +6,7 @@ import com.xiang.xservice.auth.service.enums.CaptchaTypeEnum;
import com.xiang.xservice.auth.service.service.ValidCodeGenerateFactory; import com.xiang.xservice.auth.service.service.ValidCodeGenerateFactory;
import com.xiang.xservice.basic.common.resp.Result; import com.xiang.xservice.basic.common.resp.Result;
import com.xiang.xservice.basic.utils.RandomCodeUtils; import com.xiang.xservice.basic.utils.RandomCodeUtils;
import com.xiang.xservice.basic.xservice.aliyun.smscode.ISmsCodeService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -23,6 +24,7 @@ import java.util.Objects;
public class ValidationCodeController { public class ValidationCodeController {
private final ValidCodeGenerateFactory validCodeGenerateFactory; private final ValidCodeGenerateFactory validCodeGenerateFactory;
private final ISmsCodeService smsCodeService;
@PostMapping("/public/captchaImage") @PostMapping("/public/captchaImage")
public Result<CaptchaDTO> getCaptchaImage(@RequestBody @NotNull(message = "请求参数不能为空") @Valid CaptchaImageRequest request) { public Result<CaptchaDTO> getCaptchaImage(@RequestBody @NotNull(message = "请求参数不能为空") @Valid CaptchaImageRequest request) {
@@ -53,11 +55,13 @@ public class ValidationCodeController {
@PostMapping("/public/getSmsCode") @PostMapping("/public/getSmsCode")
public Result<Void> getSmsCode(@RequestBody @NotNull(message = "请求参数不能为空") @Valid CaptchaImageRequest request) { public Result<Void> getSmsCode(@RequestBody @NotNull(message = "请求参数不能为空") @Valid CaptchaImageRequest request) {
if (Objects.isNull(request.getNumber())) { if (Objects.isNull(request.getNumber())) {
request.setNumber(4); request.setNumber(6);
} }
try { try {
validCodeGenerateFactory.get(CaptchaTypeEnum.NUMBER_CAPTCHA_CODE.getType()).getCaptchaImage(request); CaptchaDTO captchaImage = validCodeGenerateFactory.get(CaptchaTypeEnum.NUMBER_CAPTCHA_CODE.getType()).getCaptchaImage(request);
String code = captchaImage.getCaptchaImageCode();
smsCodeService.asyncSendPhoneValidCode4DaXiangNet(request.getUsername(), code);
return Result.success(); return Result.success();
} catch (Exception e) { } catch (Exception e) {
log.error("获取验证码失败", e); log.error("获取验证码失败", e);

View File

@@ -40,3 +40,8 @@ user:
# 移动端 APP 自定义 Scheme # 移动端 APP 自定义 Scheme
# myapp://callback # myapp://callback
redirectUrl: http://localhost:8080/login/oauth2/code/oauth-client-init redirectUrl: http://localhost:8080/login/oauth2/code/oauth-client-init
aliyun:
auth:
accessKeyId: LTAI5tDMjaVF8Bbqcpp4dmvP
accessKeySecret: nkmnaNjWQy5984C5kjyS0oDmdMKGQd

View File

@@ -19,7 +19,7 @@ public class NumberCaptchaCode implements ICaptchaService {
@Override @Override
public CaptchaDTO getCaptchaImage(CaptchaImageRequest request) { public CaptchaDTO getCaptchaImage(CaptchaImageRequest request) {
String randomCode = RandomCodeUtils.getMixtureRandomCode(request.getNumber()); String randomCode = RandomCodeUtils.getNumberRandomCode(request.getNumber());
redisService.set(RedisConstant.XS_SMS_CODE_KEY + request.getUsername(), randomCode, 5, TimeUnit.MINUTES); redisService.set(RedisConstant.XS_SMS_CODE_KEY + request.getUsername(), randomCode, 5, TimeUnit.MINUTES);
CaptchaDTO captchaDTO = new CaptchaDTO(); CaptchaDTO captchaDTO = new CaptchaDTO();
captchaDTO.setCaptchaImageCode(randomCode); captchaDTO.setCaptchaImageCode(randomCode);