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; } }