From 25bf75b80453109ed214f8374d7b0160e1f8a957 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E7=88=B1=E6=9C=89=E6=83=85?= Date: Mon, 30 Jun 2025 16:59:16 +0800 Subject: [PATCH] =?UTF-8?q?refactor(resource):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E5=AD=98=E5=82=A8=E5=92=8C=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除了 AbstractResourceStore 类 - 新增了 CrudResourceStore 接口,定义了 CRUD操作 - 修改了 DefaultImageCaptchaResourceManager,支持批量获取资源和模板 - 重构了 FontCache 类,改为实现 ResourceStore 接口 - 更新了相关应用类,使用新的资源管理逻辑 --- .../tianai/captcha/application/TACBuilder.java | 4 ++-- .../test/java/example/readme/ApplicationTest.java | 4 ++-- .../test/java/example/readme/TACBuilderTest.java | 3 ++- .../test/java/example/readme/TACBuilderTest2.java | 14 ++------------ src/main/test/java/example/readme/Test6.java | 3 ++- .../test/java/example/readme/TestImageCaptcha.java | 3 ++- 6 files changed, 12 insertions(+), 19 deletions(-) diff --git a/src/main/java/cloud/tianai/captcha/application/TACBuilder.java b/src/main/java/cloud/tianai/captcha/application/TACBuilder.java index a86544a..122d3f4 100644 --- a/src/main/java/cloud/tianai/captcha/application/TACBuilder.java +++ b/src/main/java/cloud/tianai/captcha/application/TACBuilder.java @@ -46,8 +46,8 @@ public class TACBuilder { } public TACBuilder addDefaultTemplate(String defaultPathPrefix) { -// DefaultBuiltInResources defaultBuiltInResources = new DefaultBuiltInResources(defaultPathPrefix); -// defaultBuiltInResources.addDefaultTemplate(resourceStore); + DefaultBuiltInResources defaultBuiltInResources = new DefaultBuiltInResources(defaultPathPrefix); + defaultBuiltInResources.addDefaultTemplate(resourceStore); return this; } diff --git a/src/main/test/java/example/readme/ApplicationTest.java b/src/main/test/java/example/readme/ApplicationTest.java index bb812ed..92adcd0 100644 --- a/src/main/test/java/example/readme/ApplicationTest.java +++ b/src/main/test/java/example/readme/ApplicationTest.java @@ -29,12 +29,12 @@ public class ApplicationTest { public static void main(String[] args) { ImageCaptchaApplication application = createImageCaptchaApplication(); // 生成验证码数据, 可以将该数据直接返回给前端 , 可配合 tianai-captcha-web-sdk 使用 - CaptchaResponse res = application.generateCaptcha("SLIDER"); + ApiResponse res = application.generateCaptcha("SLIDER"); System.out.println(res); // 校验验证码, ImageCaptchaTrack 和 id 均为前端传开的参数, 可将 valid数据直接返回给 前端 // 注意: 该项目只负责生成和校验验证码数据, 至于二次验证等需要自行扩展 - String id =res.getId(); + String id =res.getData().getId(); ImageCaptchaTrack imageCaptchaTrack = null; ApiResponse valid = application.matching(id, imageCaptchaTrack); System.out.println(valid.isSuccess()); diff --git a/src/main/test/java/example/readme/TACBuilderTest.java b/src/main/test/java/example/readme/TACBuilderTest.java index c5cff1b..91b9c2a 100644 --- a/src/main/test/java/example/readme/TACBuilderTest.java +++ b/src/main/test/java/example/readme/TACBuilderTest.java @@ -7,6 +7,7 @@ import cloud.tianai.captcha.application.vo.CaptchaResponse; import cloud.tianai.captcha.application.vo.ImageCaptchaVO; import cloud.tianai.captcha.cache.impl.LocalCacheStore; import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.common.response.ApiResponse; import cloud.tianai.captcha.generator.impl.StandardSliderImageCaptchaGenerator; import cloud.tianai.captcha.generator.impl.transform.Base64ImageTransform; import cloud.tianai.captcha.interceptor.EmptyCaptchaInterceptor; @@ -54,7 +55,7 @@ public class TACBuilderTest { while (true){ long start = System.currentTimeMillis(); - CaptchaResponse response = application.generateCaptcha("SLIDER"); + ApiResponse response = application.generateCaptcha("SLIDER"); System.out.println("耗时:" + (System.currentTimeMillis() - start)); // System.out.println(response); Thread.sleep(1000); diff --git a/src/main/test/java/example/readme/TACBuilderTest2.java b/src/main/test/java/example/readme/TACBuilderTest2.java index a8fb8e9..f2e7a0b 100644 --- a/src/main/test/java/example/readme/TACBuilderTest2.java +++ b/src/main/test/java/example/readme/TACBuilderTest2.java @@ -4,6 +4,7 @@ import cloud.tianai.captcha.application.ImageCaptchaApplication; import cloud.tianai.captcha.application.TACBuilder; import cloud.tianai.captcha.application.vo.CaptchaResponse; import cloud.tianai.captcha.application.vo.ImageCaptchaVO; +import cloud.tianai.captcha.common.response.ApiResponse; import cloud.tianai.captcha.generator.common.model.dto.GenerateParam; import cloud.tianai.captcha.interceptor.CaptchaInterceptor; import cloud.tianai.captcha.interceptor.Context; @@ -17,9 +18,6 @@ import java.io.IOException; public class TACBuilderTest2 { public static void main(String[] args) throws IOException, FontFormatException { - FileInputStream fileInputStream = new FileInputStream("C:\\Users\\Thinkpad\\Desktop\\captcha\\手写字体\\ttf\\千图小兔体.ttf"); - Font font = Font.createFont(Font.TRUETYPE_FONT, fileInputStream); - fileInputStream.close(); ImageCaptchaApplication application = TACBuilder.builder() .addDefaultTemplate() .expire("default", 10000L) @@ -27,16 +25,8 @@ public class TACBuilderTest2 { .addResource("SLIDER", new Resource("classpath", "META-INF/cut-image/resource/1.jpg")) .addResource("WORD_IMAGE_CLICK", new Resource("classpath", "META-INF/cut-image/resource/1.jpg")) .addResource("ROTATE", new Resource("classpath", "META-INF/cut-image/resource/1.jpg")) - .setInterceptor(new CaptchaInterceptor() { - @Override - public CaptchaResponse beforeGenerateCaptcha(Context context, String type, GenerateParam param) { - System.out.println("before generator"); - return CaptchaInterceptor.super.beforeGenerateCaptcha(context, type, param); - } - }) - .addFont(new Resource("file", "C:\\Users\\Thinkpad\\Desktop\\captcha\\手写字体\\ttf\\千图小兔体.ttf")) .build(); - CaptchaResponse response = application.generateCaptcha("WORD_IMAGE_CLICK"); + ApiResponse response = application.generateCaptcha("WORD_IMAGE_CLICK"); System.out.println(response); } diff --git a/src/main/test/java/example/readme/Test6.java b/src/main/test/java/example/readme/Test6.java index f34b9b3..86e83e4 100644 --- a/src/main/test/java/example/readme/Test6.java +++ b/src/main/test/java/example/readme/Test6.java @@ -2,6 +2,7 @@ package example.readme; import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; import cloud.tianai.captcha.generator.impl.StandardSliderImageCaptchaGenerator; +import cloud.tianai.captcha.resource.CrudResourceStore; import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; import cloud.tianai.captcha.resource.ResourceStore; import cloud.tianai.captcha.resource.common.model.dto.Resource; @@ -13,7 +14,7 @@ public class Test6 { public static void main(String[] args) { ImageCaptchaResourceManager imageCaptchaResourceManager = new DefaultImageCaptchaResourceManager(); // 通过资源管理器或者资源存储器 - ResourceStore resourceStore = imageCaptchaResourceManager.getResourceStore(); + CrudResourceStore resourceStore = (CrudResourceStore) imageCaptchaResourceManager.getResourceStore(); // 添加滑块验证码模板.模板图片由三张图片组成 ResourceMap template1 = new ResourceMap("default", 4); template1.put(StandardSliderImageCaptchaGenerator.TEMPLATE_ACTIVE_IMAGE_NAME, new Resource(ClassPathResourceProvider.NAME, "/active.png")); diff --git a/src/main/test/java/example/readme/TestImageCaptcha.java b/src/main/test/java/example/readme/TestImageCaptcha.java index 01d0061..c4b77cf 100644 --- a/src/main/test/java/example/readme/TestImageCaptcha.java +++ b/src/main/test/java/example/readme/TestImageCaptcha.java @@ -1,6 +1,7 @@ package example.readme; import cloud.tianai.captcha.common.constant.CaptchaTypeConstant; +import cloud.tianai.captcha.resource.CrudResourceStore; import cloud.tianai.captcha.resource.ImageCaptchaResourceManager; import cloud.tianai.captcha.resource.ResourceStore; import cloud.tianai.captcha.resource.common.model.dto.Resource; @@ -15,7 +16,7 @@ public class TestImageCaptcha { public static void main(String[] args) { ImageCaptchaResourceManager imageCaptchaResourceManager = new DefaultImageCaptchaResourceManager(); // 通过资源管理器或者资源存储器 - ResourceStore resourceStore = imageCaptchaResourceManager.getResourceStore(); + CrudResourceStore resourceStore = (CrudResourceStore) imageCaptchaResourceManager.getResourceStore(); // 添加classpath目录下的 aa.jpg 图片 resourceStore.addResource(CaptchaTypeConstant.SLIDER, new Resource(ClassPathResourceProvider.NAME, "/aa.jpg")); // 添加远程url图片资源