From 0f516da9b4c9a147d18ade7fbb9cef730794e2b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E7=88=B1=E6=9C=89=E6=83=85?= Date: Thu, 24 Feb 2022 16:53:07 +0800 Subject: [PATCH] =?UTF-8?q?U=20=E4=BC=98=E5=8C=96=E7=BC=93=E5=AD=98=20U=20?= =?UTF-8?q?=E5=8D=87=E7=BA=A7=E7=89=88=E6=9C=AC=20=E6=94=B9=E4=B8=BA1.2.7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- readme.md | 2 +- .../slider/CacheSliderCaptchaTemplate.java | 31 +++++++++++++------ 3 files changed, 23 insertions(+), 12 deletions(-) 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();