From 95252f3775d7972cd84f7d76ebd64128f6096dfc Mon Sep 17 00:00:00 2001 From: xiang Date: Thu, 4 Sep 2025 21:31:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E9=AA=8C=E8=AF=81=E7=A0=81=EF=BC=88?= =?UTF-8?q?=E9=80=9A=E7=94=A8=E6=95=B0=E5=AD=97=E5=AD=97=E6=AF=8D=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E7=A0=81=EF=BC=89=E6=8E=A5=E5=8F=A3=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CaptchaImageController.java | 41 +++++++++++++++++++ .../service/CaptchaGenerateFactory.java | 6 ++- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 xs-server/src/main/java/com/xiang/xservice/auth/server/controller/CaptchaImageController.java diff --git a/xs-server/src/main/java/com/xiang/xservice/auth/server/controller/CaptchaImageController.java b/xs-server/src/main/java/com/xiang/xservice/auth/server/controller/CaptchaImageController.java new file mode 100644 index 0000000..25f91bf --- /dev/null +++ b/xs-server/src/main/java/com/xiang/xservice/auth/server/controller/CaptchaImageController.java @@ -0,0 +1,41 @@ +package com.xiang.xservice.auth.server.controller; + +import com.xiang.xservice.auth.service.enums.CaptchaTypeEnum; +import com.xiang.xservice.auth.service.service.CaptchaGenerateFactory; +import com.xiang.xservice.basic.common.resp.Result; +import com.xiang.xservice.basic.utils.RandomCodeUtils; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; + +@Slf4j +@RestController +@RequiredArgsConstructor +public class CaptchaImageController { + + private final CaptchaGenerateFactory captchaGenerateFactory; + + @PostMapping("/public/captchaImage") + public Result getCaptchaImage() { + try { + String randomCode = RandomCodeUtils.getNumberRandomCode(1); + String captchaImage; + if (StringUtils.isBlank(randomCode)) { + captchaImage = captchaGenerateFactory.get(CaptchaTypeEnum.NORMAL_CAPTCHA_IMAGE.getType()).getCaptchaImage(); + } else { + try { + int i = Integer.parseInt(randomCode); + captchaImage = captchaGenerateFactory.get(i).getCaptchaImage(); + } catch (Exception e) { + captchaImage = captchaGenerateFactory.get(CaptchaTypeEnum.NORMAL_CAPTCHA_IMAGE.getType()).getCaptchaImage(); + } + } + return Result.success(captchaImage); + } catch (Exception e) { + log.error("获取验证码失败", e); + } + return Result.error(); + } +} diff --git a/xs-service/src/main/java/com/xiang/xservice/auth/service/service/CaptchaGenerateFactory.java b/xs-service/src/main/java/com/xiang/xservice/auth/service/service/CaptchaGenerateFactory.java index 9bec7bb..c219d59 100644 --- a/xs-service/src/main/java/com/xiang/xservice/auth/service/service/CaptchaGenerateFactory.java +++ b/xs-service/src/main/java/com/xiang/xservice/auth/service/service/CaptchaGenerateFactory.java @@ -23,6 +23,10 @@ public class CaptchaGenerateFactory { if (Objects.isNull(type)) { return strategies.get(CaptchaTypeEnum.NORMAL_CAPTCHA_IMAGE.getType()); } - return strategies.get(type); + ICaptchaService captchaService = strategies.get(type); + if (Objects.isNull(captchaService)) { + return strategies.get(CaptchaTypeEnum.NORMAL_CAPTCHA_IMAGE.getType()); + } + return captchaService; } }