diff --git a/pom.xml b/pom.xml index 0ba842e..54749ef 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 cloud.tianai.captcha tianai-captcha - 1.2.6 + 1.2.7 tianai-captcha 滑块验证码 diff --git a/readme.md b/readme.md index 83f1de0..2c2fd0d 100644 --- a/readme.md +++ b/readme.md @@ -21,7 +21,7 @@ cloud.tianai.captcha tianai-captcha - 1.2.6 + 1.2.7 ``` 2. 使用 `SliderCaptchaTemplate`获取滑块验证码 diff --git a/src/main/java/cloud/tianai/captcha/template/slider/CacheSliderCaptchaTemplate.java b/src/main/java/cloud/tianai/captcha/template/slider/CacheSliderCaptchaTemplate.java index f0ea322..728423d 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/CacheSliderCaptchaTemplate.java +++ b/src/main/java/cloud/tianai/captcha/template/slider/CacheSliderCaptchaTemplate.java @@ -1,5 +1,7 @@ package cloud.tianai.captcha.template.slider; +import lombok.Getter; +import lombok.Setter; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -17,16 +19,20 @@ import java.util.concurrent.atomic.AtomicInteger; @Slf4j public class CacheSliderCaptchaTemplate implements SliderCaptchaTemplate { - private final ScheduledExecutorService scheduledExecutor = new ScheduledThreadPoolExecutor(1, new NamedThreadFactory("slider-captcha-queue")); - private ConcurrentLinkedQueue queue; - private AtomicInteger pos = new AtomicInteger(0); - private SliderCaptchaTemplate target; - private int size; + protected final ScheduledExecutorService scheduledExecutor = new ScheduledThreadPoolExecutor(1, new NamedThreadFactory("slider-captcha-queue")); + protected ConcurrentLinkedQueue queue; + protected AtomicInteger pos = new AtomicInteger(0); + protected SliderCaptchaTemplate target; + protected int size; /** 等待时间,一般报错或者拉取为空时会休眠一段时间再试. */ - private int waitTime = 1000; + protected int waitTime = 1000; /** 调度器检查缓存的间隔时间. */ - private int period = 100; - private GenerateParam generateParam; + protected int period = 100; + protected GenerateParam generateParam; + + @Getter + @Setter + protected boolean requiredGetCaptcha = true; public CacheSliderCaptchaTemplate(SliderCaptchaTemplate target, GenerateParam generateParam, int size) { this.target = target; @@ -91,11 +97,16 @@ public class CacheSliderCaptchaTemplate implements SliderCaptchaTemplate { @SneakyThrows @Override public SliderCaptchaInfo getSlideImageInfo() { + return getSlideImageInfo(this.requiredGetCaptcha); + } + + @SneakyThrows + public SliderCaptchaInfo getSlideImageInfo(boolean requiredGetCaptcha) { SliderCaptchaInfo poll = queue.poll(); - if (poll == null) { + if (poll == null && requiredGetCaptcha) { log.warn("滑块验证码缓存不足, genParam:{}", generateParam); // 如果池内没数据, 则直接生成 - return target.getSlideImageInfo(); + return target.getSlideImageInfo(generateParam); } // 减1 pos.decrementAndGet();