From d4cc1dfc5b4e95603c39e96bc012ce36ab96fa7e Mon Sep 17 00:00:00 2001 From: Charles7c Date: Fri, 24 Nov 2023 23:44:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=9B=BE=E5=BD=A2?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E7=A0=81=E8=87=AA=E5=8A=A8=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=EF=BC=88=E9=AA=8C=E8=AF=81=E7=A0=81=E6=A8=A1=E5=9D=97=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../continew-starter-captcha-graphic/pom.xml | 25 ++++++ .../GraphicCaptchaAutoConfiguration.java | 41 +++++++++ .../GraphicCaptchaProperties.java | 89 +++++++++++++++++++ .../graphic/enums/GraphicCaptchaTypeEnum.java | 64 +++++++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + continew-starter-captcha/pom.xml | 29 ++++++ .../MybatisPlusAutoConfiguration.java | 2 +- continew-starter-dependencies/pom.xml | 15 ++++ pom.xml | 1 + 9 files changed, 266 insertions(+), 1 deletion(-) create mode 100644 continew-starter-captcha/continew-starter-captcha-graphic/pom.xml create mode 100644 continew-starter-captcha/continew-starter-captcha-graphic/src/main/java/top/charles7c/continew/starter/captcha/graphic/autoconfigure/GraphicCaptchaAutoConfiguration.java create mode 100644 continew-starter-captcha/continew-starter-captcha-graphic/src/main/java/top/charles7c/continew/starter/captcha/graphic/autoconfigure/GraphicCaptchaProperties.java create mode 100644 continew-starter-captcha/continew-starter-captcha-graphic/src/main/java/top/charles7c/continew/starter/captcha/graphic/enums/GraphicCaptchaTypeEnum.java create mode 100644 continew-starter-captcha/continew-starter-captcha-graphic/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 continew-starter-captcha/pom.xml diff --git a/continew-starter-captcha/continew-starter-captcha-graphic/pom.xml b/continew-starter-captcha/continew-starter-captcha-graphic/pom.xml new file mode 100644 index 00000000..d0c4d43d --- /dev/null +++ b/continew-starter-captcha/continew-starter-captcha-graphic/pom.xml @@ -0,0 +1,25 @@ + + + 4.0.0 + + top.charles7c.continew + continew-starter-captcha + ${revision} + + + continew-starter-captcha-graphic + jar + + ${project.artifactId} + ContiNew Starter 验证码模块 - 图形验证码 + + + + + com.github.whvcse + easy-captcha + + + \ No newline at end of file diff --git a/continew-starter-captcha/continew-starter-captcha-graphic/src/main/java/top/charles7c/continew/starter/captcha/graphic/autoconfigure/GraphicCaptchaAutoConfiguration.java b/continew-starter-captcha/continew-starter-captcha-graphic/src/main/java/top/charles7c/continew/starter/captcha/graphic/autoconfigure/GraphicCaptchaAutoConfiguration.java new file mode 100644 index 00000000..51ff0b3b --- /dev/null +++ b/continew-starter-captcha/continew-starter-captcha-graphic/src/main/java/top/charles7c/continew/starter/captcha/graphic/autoconfigure/GraphicCaptchaAutoConfiguration.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. + *

+ * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.gnu.org/licenses/lgpl.html + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package top.charles7c.continew.starter.captcha.graphic.autoconfigure; + +import jakarta.annotation.PostConstruct; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; + +/** + * 图形验证码自动配置 + * + * @author Charles7c + * @since 1.0.0 + */ +@Slf4j +@AutoConfiguration +@EnableConfigurationProperties(GraphicCaptchaProperties.class) +@ConditionalOnProperty(prefix = "captcha.graphic", name = "enabled", havingValue = "true") +public class GraphicCaptchaAutoConfiguration { + + @PostConstruct + public void postConstruct() { + log.info("[ContiNew Starter] - Auto Configuration 'Graphic Captcha' completed initialization."); + } +} diff --git a/continew-starter-captcha/continew-starter-captcha-graphic/src/main/java/top/charles7c/continew/starter/captcha/graphic/autoconfigure/GraphicCaptchaProperties.java b/continew-starter-captcha/continew-starter-captcha-graphic/src/main/java/top/charles7c/continew/starter/captcha/graphic/autoconfigure/GraphicCaptchaProperties.java new file mode 100644 index 00000000..9e662e8d --- /dev/null +++ b/continew-starter-captcha/continew-starter-captcha-graphic/src/main/java/top/charles7c/continew/starter/captcha/graphic/autoconfigure/GraphicCaptchaProperties.java @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. + *

+ * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.gnu.org/licenses/lgpl.html + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package top.charles7c.continew.starter.captcha.graphic.autoconfigure; + +import cn.hutool.core.util.ReflectUtil; +import cn.hutool.core.util.StrUtil; +import com.wf.captcha.base.Captcha; +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import top.charles7c.continew.starter.captcha.graphic.enums.GraphicCaptchaTypeEnum; + +import java.awt.*; + +/** + * 图形验证码配置属性 + * + * @author Charles7c + * @since 1.0.0 + */ +@Data +@ConfigurationProperties(prefix = "captcha.graphic") +public class GraphicCaptchaProperties { + + /** + * 是否启用图形验证码 + */ + private boolean enabled = false; + + /** + * 类型 + */ + private GraphicCaptchaTypeEnum type; + + /** + * 内容长度 + */ + private int length = 4; + + /** + * 宽度 + */ + private int width = 111; + + /** + * 高度 + */ + private int height = 36; + + /** + * 字体 + */ + private String fontName; + + /** + * 字体大小 + */ + private int fontSize = 25; + + /** + * 获取图形验证码 + * + * @return 图形验证码 + */ + public Captcha getCaptcha() { + if (this.enabled) { + Captcha captcha = ReflectUtil.newInstance(this.type.getCaptchaImpl(), this.width, this.height); + captcha.setLen(this.length); + if (StrUtil.isNotBlank(this.fontName)) { + captcha.setFont(new Font(fontName, Font.PLAIN, this.fontSize)); + } + return captcha; + } + return null; + } +} diff --git a/continew-starter-captcha/continew-starter-captcha-graphic/src/main/java/top/charles7c/continew/starter/captcha/graphic/enums/GraphicCaptchaTypeEnum.java b/continew-starter-captcha/continew-starter-captcha-graphic/src/main/java/top/charles7c/continew/starter/captcha/graphic/enums/GraphicCaptchaTypeEnum.java new file mode 100644 index 00000000..4eb227ae --- /dev/null +++ b/continew-starter-captcha/continew-starter-captcha-graphic/src/main/java/top/charles7c/continew/starter/captcha/graphic/enums/GraphicCaptchaTypeEnum.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. + *

+ * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.gnu.org/licenses/lgpl.html + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package top.charles7c.continew.starter.captcha.graphic.enums; + +import com.wf.captcha.*; +import com.wf.captcha.base.Captcha; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * 图形验证码类型枚举 + * + * @author Charles7c + * @since 1.0.0 + */ +@Getter +@RequiredArgsConstructor +public enum GraphicCaptchaTypeEnum { + + /** + * 算术 + */ + ARITHMETIC(ArithmeticCaptcha.class), + + /** + * 中文 + */ + CHINESE(ChineseCaptcha.class), + + /** + * 中文闪图 + */ + CHINESE_GIF(ChineseGifCaptcha.class), + + /** + * 闪图 + */ + GIF(GifCaptcha.class), + + /** + * 特殊类型 + */ + SPEC(SpecCaptcha.class), + ; + + /** + * 验证码实现 + */ + private final Class captchaImpl; +} \ No newline at end of file diff --git a/continew-starter-captcha/continew-starter-captcha-graphic/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/continew-starter-captcha/continew-starter-captcha-graphic/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..32a02773 --- /dev/null +++ b/continew-starter-captcha/continew-starter-captcha-graphic/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +top.charles7c.continew.starter.captcha.graphic.autoconfigure.GraphicCaptchaAutoConfiguration \ No newline at end of file diff --git a/continew-starter-captcha/pom.xml b/continew-starter-captcha/pom.xml new file mode 100644 index 00000000..49357f8f --- /dev/null +++ b/continew-starter-captcha/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + + top.charles7c.continew + continew-starter + ${revision} + + + continew-starter-captcha + pom + + ${project.artifactId} + ContiNew Starter 验证码模块 + + + continew-starter-captcha-graphic + + + + + + top.charles7c.continew + continew-starter-core + + + \ No newline at end of file diff --git a/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/autoconfigure/MybatisPlusAutoConfiguration.java b/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/autoconfigure/MybatisPlusAutoConfiguration.java index 1f6df2a2..e446a28a 100644 --- a/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/autoconfigure/MybatisPlusAutoConfiguration.java +++ b/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/autoconfigure/MybatisPlusAutoConfiguration.java @@ -36,7 +36,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.transaction.annotation.EnableTransactionManagement; /** - * MyBatis Plus 配置 + * MyBatis Plus 自动配置 * * @author Charles7c * @since 1.0.0 diff --git a/continew-starter-dependencies/pom.xml b/continew-starter-dependencies/pom.xml index cbb20f3e..a3aaa543 100644 --- a/continew-starter-dependencies/pom.xml +++ b/continew-starter-dependencies/pom.xml @@ -59,6 +59,7 @@ 4.2.0 3.9.1 3.24.3 + 1.6.2 4.3.0 5.8.23 @@ -93,6 +94,13 @@ ${redisson.version} + + + com.github.whvcse + easy-captcha + ${easy-captcha.version} + + com.github.xiaoymin @@ -124,6 +132,13 @@ ${revision} + + + top.charles7c.continew + continew-starter-captcha-graphic + ${revision} + + top.charles7c.continew diff --git a/pom.xml b/pom.xml index 7f9022c8..d0175e3b 100644 --- a/pom.xml +++ b/pom.xml @@ -71,6 +71,7 @@ continew-starter-core continew-starter-json continew-starter-api-doc + continew-starter-captcha continew-starter-cache continew-starter-data