From af351e04b9ea9fc8f81f8a9d89f9df05e29d8201 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Tue, 5 Dec 2023 20:57:06 +0800 Subject: [PATCH 1/6] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 77 ++++++++++++++++++--------- continew-starter-dependencies/pom.xml | 2 +- 2 files changed, 52 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 21f9f1df..907d4901 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ License -Release +Release GitHub stars @@ -48,8 +48,8 @@ ContiNew Starter 就是将脚手架项目中的通用基础配置进行了封装 ## 项目源码 -| 开源平台 | 源码地址 | -| ------------- | ------------------------------------------- | +| 开源平台 | 源码地址 | +| :------------ | :-------------------------------------------- | | GitHub | https://github.com/Charles7c/continew-starter | | Gitee(码云) | https://gitee.com/Charles7c/continew-starter | @@ -63,7 +63,7 @@ ContiNew Starter 就是将脚手架项目中的通用基础配置进行了封装 top.charles7c.continew continew-starter - 1.0.0 + {latest-version} ``` @@ -83,7 +83,7 @@ ContiNew Starter 就是将脚手架项目中的通用基础配置进行了封装 top.charles7c.continew continew-starter-dependencies - 1.0.0 + {latest-version} pom import @@ -121,6 +121,31 @@ cors: exposed-headers: '*' ``` +
+ 抢先体验快照(SNAPSHOT)版本💡 + +> **注意:** 快照版本目前处于开发测试阶段,其中很多特性或改动尚不稳定,可能会因为修复或优化而频繁调整。因此,仅可用于体验,切勿用于生产环境! + +1.在项目 pom.xml 中配置 SNAPSHOT(快照)仓库地址(如果你已配有其他仓库地址,追加下方快照仓库地址即可) + +```xml + + + sonatype-nexus-snapshots + Sonatype Nexus Snapshots + https://s01.oss.sonatype.org/content/repositories/snapshots/ + + always + true + + + +``` + +2.将 ContiNew Starter 版本改为对应快照版本,例如:1.0.1-SNAPSHOT + +
+ ## 模块结构 | 模块名称 | 模块说明 | 依赖版本 | @@ -140,6 +165,10 @@ cors: ![模块依赖图](.image/模块依赖图.png) +## 谁在使用? + +- ✨[ContiNew Admin](https://github.com/Charles7c/continew-admin):ContiNew Admin (Continue New Admin)中后台管理框架/脚手架,持续以最新流行技术栈构建,拥抱变化,迭代优化。依托开源协作模式,提升技术透明度、放大集体智慧、共创优秀实践,源源不断地为企业级项目开发提供助力。当前采用的技术栈:Spring Boot3(Java17)、Vue3 & Arco Design、Sa-Token、MyBatis Plus、Redisson、Liquibase、JustAuth、Easy Excel、Hutool、TypeScript、Vite4 等。 + ## 贡献代码 ### 分支说明 @@ -171,9 +200,24 @@ ContiNew Starter 的分支目前分为下个大版本的开发分支和上个大 > 2. 在提交代码前,请按照 [Angular 提交规范](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular) 编写 commit 的 message(建议在 IntelliJ IDEA 中下载并安装 Git Commit Template 插件,以便按照规范进行 commit) > 3. 提交代码之前,请关闭所有代码窗口,执行 mvn compile 命令,编译通过后,不要再打开查看任何代码窗口,直接提交即可 -## 谁在使用? +## 反馈交流 -- ✨[ContiNew Admin](https://github.com/Charles7c/continew-admin):ContiNew Admin (Continue New Admin)中后台管理框架/脚手架,持续以最新流行技术栈构建,拥抱变化,迭代优化。依托开源协作模式,提升技术透明度、放大集体智慧、共创优秀实践,源源不断地为企业级项目开发提供助力。当前采用的技术栈:Spring Boot3(Java17)、Vue3 & Arco Design、Sa-Token、MyBatis Plus、Redisson、Liquibase、JustAuth、Easy Excel、Hutool、TypeScript、Vite4 等。 +💬 欢迎各位小伙伴儿扫描下方二维码加好友,备注 `cnadmin`,拉你进群,探讨技术、提提需求~ + +加入交流群后,你将会: + +- 第一时间收到框架动态 +- 第一时间收到框架更新通知 +- 第一时间收到框架 Bug 通知 +- 和众多大佬互相 (huá shuǐ) 交流 (mō yú) + +
+ 二维码 +
+
+无加群意愿 +💬 如无加群意愿,欢迎在 Issues 中反馈交流~ 🍻 +
## 鸣谢 @@ -195,25 +239,6 @@ ContiNew Starter 的分支目前分为下个大版本的开发分支和上个大 - e.g. 使用 Dante-Engine 项目封装的 Redisson 相关配置 - 感谢项目使用或未使用到的每一款开源组件,致敬各位开源先驱 :fire: -## 反馈交流 - -💬 欢迎各位小伙伴儿扫描下方二维码加好友,备注 `cnadmin`,拉你进群,探讨技术、提提需求~ - -加入交流群后,你将会: - -- 第一时间收到框架动态 -- 第一时间收到框架更新通知 -- 第一时间收到框架 Bug 通知 -- 和众多大佬互相 (huá shuǐ) 交流 (mō yú) - -
- 二维码 -
-
-无加群意愿 -💬 如无加群意愿,欢迎在 Issues 中反馈交流~ 🍻 -
- ## License - 遵循 LGPL-3.0 开源许可协议 diff --git a/continew-starter-dependencies/pom.xml b/continew-starter-dependencies/pom.xml index 9599c798..691e9909 100644 --- a/continew-starter-dependencies/pom.xml +++ b/continew-starter-dependencies/pom.xml @@ -54,7 +54,7 @@ - 1.0.0 + 1.0.1-SNAPSHOT 1.16.5 1.37.0 3.5.4.1 From 083bc7b38a861339ceb7a06acdd20ea64bc84990 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Tue, 5 Dec 2023 20:57:34 +0800 Subject: [PATCH 2/6] =?UTF-8?q?refactor:=20=E8=B0=83=E6=95=B4=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=86=85=E5=AE=B9=E6=89=80=E5=B1=9E=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.校验等工具类 crud => core 2.@Query crud => mybatis-plus --- .../starter/core}/exception/BadRequestException.java | 3 +-- .../starter/core}/exception/BusinessException.java | 3 +-- .../continew/starter/core}/util/ReflectUtils.java | 2 +- .../starter/core}/util/validate/CheckUtils.java | 4 ++-- .../starter/core}/util/validate/ValidationUtils.java | 4 ++-- .../starter/core}/util/validate/Validator.java | 2 +- .../starter/data/mybatis/plus}/annotation/Query.java | 4 ++-- .../starter/data/mybatis/plus/enums}/IBaseEnum.java | 2 +- .../data/mybatis/plus}/enums/QueryTypeEnum.java | 3 +-- .../starter/data/mybatis/plus}/util/QueryHelper.java | 11 ++++++----- .../starter/extension/crud/base/BaseServiceImpl.java | 6 +++--- .../starter/extension/crud/util/TreeUtils.java | 2 +- 12 files changed, 22 insertions(+), 24 deletions(-) rename {continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud => continew-starter-core/src/main/java/top/charles7c/continew/starter/core}/exception/BadRequestException.java (87%) rename {continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud => continew-starter-core/src/main/java/top/charles7c/continew/starter/core}/exception/BusinessException.java (86%) rename {continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud => continew-starter-core/src/main/java/top/charles7c/continew/starter/core}/util/ReflectUtils.java (97%) rename {continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud => continew-starter-core/src/main/java/top/charles7c/continew/starter/core}/util/validate/CheckUtils.java (98%) rename {continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud => continew-starter-core/src/main/java/top/charles7c/continew/starter/core}/util/validate/ValidationUtils.java (97%) rename {continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud => continew-starter-core/src/main/java/top/charles7c/continew/starter/core}/util/validate/Validator.java (98%) rename {continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud => continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus}/annotation/Query.java (90%) rename {continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/base => continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/enums}/IBaseEnum.java (94%) rename {continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud => continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus}/enums/QueryTypeEnum.java (94%) rename {continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud => continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus}/util/QueryHelper.java (93%) diff --git a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/exception/BadRequestException.java b/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/exception/BadRequestException.java similarity index 87% rename from continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/exception/BadRequestException.java rename to continew-starter-core/src/main/java/top/charles7c/continew/starter/core/exception/BadRequestException.java index 32aacde1..48197912 100644 --- a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/exception/BadRequestException.java +++ b/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/exception/BadRequestException.java @@ -14,10 +14,9 @@ * limitations under the License. */ -package top.charles7c.continew.starter.extension.crud.exception; +package top.charles7c.continew.starter.core.exception; import lombok.NoArgsConstructor; -import top.charles7c.continew.starter.core.exception.BaseException; /** * 自定义验证异常-错误请求 diff --git a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/exception/BusinessException.java b/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/exception/BusinessException.java similarity index 86% rename from continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/exception/BusinessException.java rename to continew-starter-core/src/main/java/top/charles7c/continew/starter/core/exception/BusinessException.java index e24ea14b..10cfe9e8 100644 --- a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/exception/BusinessException.java +++ b/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/exception/BusinessException.java @@ -14,10 +14,9 @@ * limitations under the License. */ -package top.charles7c.continew.starter.extension.crud.exception; +package top.charles7c.continew.starter.core.exception; import lombok.NoArgsConstructor; -import top.charles7c.continew.starter.core.exception.BaseException; /** * 业务异常 diff --git a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/ReflectUtils.java b/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/util/ReflectUtils.java similarity index 97% rename from continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/ReflectUtils.java rename to continew-starter-core/src/main/java/top/charles7c/continew/starter/core/util/ReflectUtils.java index e2253c54..816b9c7f 100644 --- a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/ReflectUtils.java +++ b/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/util/ReflectUtils.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.charles7c.continew.starter.extension.crud.util; +package top.charles7c.continew.starter.core.util; import cn.hutool.core.util.ReflectUtil; import lombok.AccessLevel; diff --git a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/validate/CheckUtils.java b/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/util/validate/CheckUtils.java similarity index 98% rename from continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/validate/CheckUtils.java rename to continew-starter-core/src/main/java/top/charles7c/continew/starter/core/util/validate/CheckUtils.java index 7bdced75..cf153047 100644 --- a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/validate/CheckUtils.java +++ b/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/util/validate/CheckUtils.java @@ -14,14 +14,14 @@ * limitations under the License. */ -package top.charles7c.continew.starter.extension.crud.util.validate; +package top.charles7c.continew.starter.core.util.validate; import cn.hutool.core.util.StrUtil; import lombok.AccessLevel; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import top.charles7c.continew.starter.core.constant.StringConstants; -import top.charles7c.continew.starter.extension.crud.exception.BusinessException; +import top.charles7c.continew.starter.core.exception.BusinessException; import java.util.function.BooleanSupplier; diff --git a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/validate/ValidationUtils.java b/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/util/validate/ValidationUtils.java similarity index 97% rename from continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/validate/ValidationUtils.java rename to continew-starter-core/src/main/java/top/charles7c/continew/starter/core/util/validate/ValidationUtils.java index 18e2c368..b1d25811 100644 --- a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/validate/ValidationUtils.java +++ b/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/util/validate/ValidationUtils.java @@ -14,13 +14,13 @@ * limitations under the License. */ -package top.charles7c.continew.starter.extension.crud.util.validate; +package top.charles7c.continew.starter.core.util.validate; import cn.hutool.core.util.StrUtil; import lombok.AccessLevel; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; -import top.charles7c.continew.starter.extension.crud.exception.BadRequestException; +import top.charles7c.continew.starter.core.exception.BadRequestException; import java.util.function.BooleanSupplier; diff --git a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/validate/Validator.java b/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/util/validate/Validator.java similarity index 98% rename from continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/validate/Validator.java rename to continew-starter-core/src/main/java/top/charles7c/continew/starter/core/util/validate/Validator.java index 5731c8c2..ee43f605 100644 --- a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/validate/Validator.java +++ b/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/util/validate/Validator.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.charles7c.continew.starter.extension.crud.util.validate; +package top.charles7c.continew.starter.core.util.validate; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ReflectUtil; diff --git a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/annotation/Query.java b/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/annotation/Query.java similarity index 90% rename from continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/annotation/Query.java rename to continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/annotation/Query.java index 4f15be77..c10cc2b6 100644 --- a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/annotation/Query.java +++ b/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/annotation/Query.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package top.charles7c.continew.starter.extension.crud.annotation; +package top.charles7c.continew.starter.data.mybatis.plus.annotation; -import top.charles7c.continew.starter.extension.crud.enums.QueryTypeEnum; +import top.charles7c.continew.starter.data.mybatis.plus.enums.QueryTypeEnum; import java.lang.annotation.*; diff --git a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/base/IBaseEnum.java b/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/enums/IBaseEnum.java similarity index 94% rename from continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/base/IBaseEnum.java rename to continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/enums/IBaseEnum.java index c6c60a64..fb32c320 100644 --- a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/base/IBaseEnum.java +++ b/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/enums/IBaseEnum.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.charles7c.continew.starter.extension.crud.base; +package top.charles7c.continew.starter.data.mybatis.plus.enums; import com.baomidou.mybatisplus.annotation.IEnum; diff --git a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/enums/QueryTypeEnum.java b/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/enums/QueryTypeEnum.java similarity index 94% rename from continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/enums/QueryTypeEnum.java rename to continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/enums/QueryTypeEnum.java index d05d2ffc..e2e09ea1 100644 --- a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/enums/QueryTypeEnum.java +++ b/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/enums/QueryTypeEnum.java @@ -14,11 +14,10 @@ * limitations under the License. */ -package top.charles7c.continew.starter.extension.crud.enums; +package top.charles7c.continew.starter.data.mybatis.plus.enums; import lombok.Getter; import lombok.RequiredArgsConstructor; -import top.charles7c.continew.starter.extension.crud.base.IBaseEnum; /** * 查询类型枚举 diff --git a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/QueryHelper.java b/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/util/QueryHelper.java similarity index 93% rename from continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/QueryHelper.java rename to continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/util/QueryHelper.java index 78f73783..b2c28a6b 100644 --- a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/QueryHelper.java +++ b/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/util/QueryHelper.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.charles7c.continew.starter.extension.crud.util; +package top.charles7c.continew.starter.data.mybatis.plus.util; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjectUtil; @@ -23,10 +23,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.AccessLevel; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; -import top.charles7c.continew.starter.extension.crud.annotation.Query; -import top.charles7c.continew.starter.extension.crud.enums.QueryTypeEnum; -import top.charles7c.continew.starter.extension.crud.exception.BadRequestException; -import top.charles7c.continew.starter.extension.crud.util.validate.ValidationUtils; +import top.charles7c.continew.starter.core.exception.BadRequestException; +import top.charles7c.continew.starter.core.util.ReflectUtils; +import top.charles7c.continew.starter.core.util.validate.ValidationUtils; +import top.charles7c.continew.starter.data.mybatis.plus.annotation.Query; +import top.charles7c.continew.starter.data.mybatis.plus.enums.QueryTypeEnum; import java.lang.reflect.Field; import java.util.ArrayList; diff --git a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/base/BaseServiceImpl.java b/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/base/BaseServiceImpl.java index c6ba2883..ce4f4d57 100644 --- a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/base/BaseServiceImpl.java +++ b/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/base/BaseServiceImpl.java @@ -34,14 +34,14 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.transaction.annotation.Transactional; import top.charles7c.continew.starter.core.util.ExceptionUtils; +import top.charles7c.continew.starter.core.util.ReflectUtils; +import top.charles7c.continew.starter.core.util.validate.CheckUtils; +import top.charles7c.continew.starter.data.mybatis.plus.util.QueryHelper; import top.charles7c.continew.starter.extension.crud.annotation.TreeField; import top.charles7c.continew.starter.extension.crud.model.query.PageQuery; import top.charles7c.continew.starter.extension.crud.model.query.SortQuery; import top.charles7c.continew.starter.extension.crud.model.resp.PageDataResp; -import top.charles7c.continew.starter.extension.crud.util.QueryHelper; -import top.charles7c.continew.starter.extension.crud.util.ReflectUtils; import top.charles7c.continew.starter.extension.crud.util.TreeUtils; -import top.charles7c.continew.starter.extension.crud.util.validate.CheckUtils; import top.charles7c.continew.starter.file.excel.util.ExcelUtils; import java.lang.reflect.Field; diff --git a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/TreeUtils.java b/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/TreeUtils.java index dae1eb12..048f5605 100644 --- a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/TreeUtils.java +++ b/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/util/TreeUtils.java @@ -24,8 +24,8 @@ import cn.hutool.core.lang.tree.parser.NodeParser; import cn.hutool.core.util.ReflectUtil; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import top.charles7c.continew.starter.core.util.validate.CheckUtils; import top.charles7c.continew.starter.extension.crud.annotation.TreeField; -import top.charles7c.continew.starter.extension.crud.util.validate.CheckUtils; import java.util.ArrayList; import java.util.List; From 7997267060b3e79f80dd73cec722bc295635a93b Mon Sep 17 00:00:00 2001 From: Charles7c Date: Tue, 12 Dec 2023 20:35:13 +0800 Subject: [PATCH 3/6] =?UTF-8?q?refactor(api-doc):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=89=B4=E6=9D=83=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SpringDocAutoConfiguration.java | 62 ++++++++++++++++--- .../SpringDocExtensionProperties.java | 40 ++++++++++++ 2 files changed, 95 insertions(+), 7 deletions(-) create mode 100644 continew-starter-api-doc/src/main/java/top/charles7c/continew/starter/apidoc/autoconfigure/SpringDocExtensionProperties.java diff --git a/continew-starter-api-doc/src/main/java/top/charles7c/continew/starter/apidoc/autoconfigure/SpringDocAutoConfiguration.java b/continew-starter-api-doc/src/main/java/top/charles7c/continew/starter/apidoc/autoconfigure/SpringDocAutoConfiguration.java index a9103d7a..2029d65c 100644 --- a/continew-starter-api-doc/src/main/java/top/charles7c/continew/starter/apidoc/autoconfigure/SpringDocAutoConfiguration.java +++ b/continew-starter-api-doc/src/main/java/top/charles7c/continew/starter/apidoc/autoconfigure/SpringDocAutoConfiguration.java @@ -16,15 +16,21 @@ package top.charles7c.continew.starter.apidoc.autoconfigure; +import cn.hutool.core.map.MapUtil; +import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Contact; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; import jakarta.annotation.PostConstruct; import lombok.extern.slf4j.Slf4j; +import org.springdoc.core.customizers.GlobalOpenApiCustomizer; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.PropertySource; import org.springframework.http.CacheControl; @@ -34,6 +40,8 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import top.charles7c.continew.starter.core.autoconfigure.project.ProjectProperties; import top.charles7c.continew.starter.core.handler.GeneralPropertySourceFactory; +import java.util.List; +import java.util.Map; import java.util.concurrent.TimeUnit; @@ -47,6 +55,7 @@ import java.util.concurrent.TimeUnit; @EnableWebMvc @AutoConfiguration @ConditionalOnProperty(name = "springdoc.swagger-ui.enabled", havingValue = "true") +@EnableConfigurationProperties(SpringDocExtensionProperties.class) @PropertySource(value = "classpath:default-api-doc.yml", factory = GeneralPropertySourceFactory.class) public class SpringDocAutoConfiguration implements WebMvcConfigurer { @@ -63,23 +72,62 @@ public class SpringDocAutoConfiguration implements WebMvcConfigurer { */ @Bean @ConditionalOnMissingBean - public OpenAPI openApi(ProjectProperties properties) { + public OpenAPI openApi(ProjectProperties projectProperties, SpringDocExtensionProperties properties) { Info info = new Info() - .title(String.format("%s %s", properties.getName(), "API 文档")) - .version(properties.getVersion()) - .description(properties.getDescription()); - ProjectProperties.Contact contact = properties.getContact(); + .title(String.format("%s %s", projectProperties.getName(), "API 文档")) + .version(projectProperties.getVersion()) + .description(projectProperties.getDescription()); + ProjectProperties.Contact contact = projectProperties.getContact(); if (null != contact) { info.contact(new Contact().name(contact.getName()) .email(contact.getEmail()) .url(contact.getUrl())); } - ProjectProperties.License license = properties.getLicense(); + ProjectProperties.License license = projectProperties.getLicense(); if (null != license) { info.license(new License().name(license.getName()) .url(license.getUrl())); } - return new OpenAPI().info(info); + OpenAPI openAPI = new OpenAPI(); + openAPI.info(info); + Components components = properties.getComponents(); + if (null != components) { + openAPI.components(components); + // 鉴权配置 + Map securitySchemeMap = components.getSecuritySchemes(); + if (MapUtil.isNotEmpty(securitySchemeMap)) { + SecurityRequirement securityRequirement = new SecurityRequirement(); + List list = securitySchemeMap.values().stream().map(SecurityScheme::getName).toList(); + list.forEach(securityRequirement::addList); + openAPI.addSecurityItem(securityRequirement); + } + } + return openAPI; + } + + /** + * 全局自定义配置(全局添加鉴权参数) + */ + @Bean + @ConditionalOnMissingBean + public GlobalOpenApiCustomizer globalOpenApiCustomizer(SpringDocExtensionProperties properties) { + return openApi -> { + if (null != openApi.getPaths()) { + openApi.getPaths().forEach((s, pathItem) -> { + // 为所有接口添加鉴权 + Components components = properties.getComponents(); + if (null != components && MapUtil.isNotEmpty(components.getSecuritySchemes())) { + Map securitySchemeMap = components.getSecuritySchemes(); + pathItem.readOperations().forEach(operation -> { + SecurityRequirement securityRequirement = new SecurityRequirement(); + List list = securitySchemeMap.values().stream().map(SecurityScheme::getName).toList(); + list.forEach(securityRequirement::addList); + operation.addSecurityItem(securityRequirement); + }); + } + }); + } + }; } @PostConstruct diff --git a/continew-starter-api-doc/src/main/java/top/charles7c/continew/starter/apidoc/autoconfigure/SpringDocExtensionProperties.java b/continew-starter-api-doc/src/main/java/top/charles7c/continew/starter/apidoc/autoconfigure/SpringDocExtensionProperties.java new file mode 100644 index 00000000..323c2aff --- /dev/null +++ b/continew-starter-api-doc/src/main/java/top/charles7c/continew/starter/apidoc/autoconfigure/SpringDocExtensionProperties.java @@ -0,0 +1,40 @@ +/* + * 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.apidoc.autoconfigure; + +import io.swagger.v3.oas.models.Components; +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.NestedConfigurationProperty; + + +/** + * API 文档扩展配置属性 + * + * @author Charles7c + * @since 1.0.1 + */ +@Data +@ConfigurationProperties(prefix = "springdoc") +public class SpringDocExtensionProperties { + + /** + * 组件配置(包括鉴权配置等) + */ + @NestedConfigurationProperty + private Components components; +} From bc00c9bab0ed4508fd1dc0da8a76ef96739cce1d Mon Sep 17 00:00:00 2001 From: Charles7c Date: Wed, 13 Dec 2023 23:24:17 +0800 Subject: [PATCH 4/6] =?UTF-8?q?refactor(data):=20MyBatis=20Plus=20QueryTyp?= =?UTF-8?q?eEnum=20=3D>=20QueryType=EF=BC=8C=E5=B9=B6=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=20IBaseEnum=20=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../continew/starter/data/mybatis/plus/annotation/Query.java | 4 ++-- .../mybatis/plus/enums/{QueryTypeEnum.java => QueryType.java} | 2 +- .../continew/starter/data/mybatis/plus/util/QueryHelper.java | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) rename continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/enums/{QueryTypeEnum.java => QueryType.java} (97%) diff --git a/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/annotation/Query.java b/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/annotation/Query.java index c10cc2b6..6cfdc9b4 100644 --- a/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/annotation/Query.java +++ b/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/annotation/Query.java @@ -16,7 +16,7 @@ package top.charles7c.continew.starter.data.mybatis.plus.annotation; -import top.charles7c.continew.starter.data.mybatis.plus.enums.QueryTypeEnum; +import top.charles7c.continew.starter.data.mybatis.plus.enums.QueryType; import java.lang.annotation.*; @@ -40,7 +40,7 @@ public @interface Query { /** * 查询类型(等值查询、模糊查询、范围查询等) */ - QueryTypeEnum type() default QueryTypeEnum.EQUAL; + QueryType type() default QueryType.EQUAL; /** * 多属性模糊查询,仅支持 String 类型属性 diff --git a/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/enums/QueryTypeEnum.java b/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/enums/QueryType.java similarity index 97% rename from continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/enums/QueryTypeEnum.java rename to continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/enums/QueryType.java index e2e09ea1..c964e560 100644 --- a/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/enums/QueryTypeEnum.java +++ b/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/enums/QueryType.java @@ -27,7 +27,7 @@ import lombok.RequiredArgsConstructor; */ @Getter @RequiredArgsConstructor -public enum QueryTypeEnum implements IBaseEnum { +public enum QueryType { /** * 等值查询,例如:WHERE `age` = 18 diff --git a/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/util/QueryHelper.java b/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/util/QueryHelper.java index b2c28a6b..f8e313c4 100644 --- a/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/util/QueryHelper.java +++ b/continew-starter-data/continew-starter-data-mybatis-plus/src/main/java/top/charles7c/continew/starter/data/mybatis/plus/util/QueryHelper.java @@ -27,7 +27,7 @@ import top.charles7c.continew.starter.core.exception.BadRequestException; import top.charles7c.continew.starter.core.util.ReflectUtils; import top.charles7c.continew.starter.core.util.validate.ValidationUtils; import top.charles7c.continew.starter.data.mybatis.plus.annotation.Query; -import top.charles7c.continew.starter.data.mybatis.plus.enums.QueryTypeEnum; +import top.charles7c.continew.starter.data.mybatis.plus.enums.QueryType; import java.lang.reflect.Field; import java.util.ArrayList; @@ -130,7 +130,7 @@ public class QueryHelper { // 注意:数据库规范中列采用下划线连接法命名,程序规范中变量采用驼峰法命名 String property = queryAnnotation.property(); String columnName = StrUtil.toUnderlineCase(StrUtil.blankToDefault(property, fieldName)); - QueryTypeEnum queryType = queryAnnotation.type(); + QueryType queryType = queryAnnotation.type(); switch (queryType) { case EQUAL -> queryWrapper.eq(columnName, fieldValue); case NOT_EQUAL -> queryWrapper.ne(columnName, fieldValue); From 1adfddfa3b276e764b098512b2e9c75f007d13c1 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Wed, 13 Dec 2023 23:44:23 +0800 Subject: [PATCH 5/6] =?UTF-8?q?fix(extension/crud):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=20CrudRequestMapping=20=E5=90=8E=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=20API=20=E4=B8=8D=E6=98=BE=E7=A4=BA=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crud/handler/CrudRequestMappingHandlerMapping.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/handler/CrudRequestMappingHandlerMapping.java b/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/handler/CrudRequestMappingHandlerMapping.java index 6a167b59..26ec032f 100644 --- a/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/handler/CrudRequestMappingHandlerMapping.java +++ b/continew-starter-extension/continew-starter-extension-crud/src/main/java/top/charles7c/continew/starter/extension/crud/handler/CrudRequestMappingHandlerMapping.java @@ -49,11 +49,11 @@ public class CrudRequestMappingHandlerMapping extends RequestMappingHandlerMappi if (!handlerType.isAnnotationPresent(CrudRequestMapping.class)) { return requestMappingInfo; } - // 过滤 API,如果 API 列表中不包含,则忽略 CrudRequestMapping crudRequestMapping = handlerType.getDeclaredAnnotation(CrudRequestMapping.class); + // 过滤 API,如果非本类中定义,且 API 列表中不包含,则忽略 Api[] apiArr = crudRequestMapping.api(); Api api = ExceptionUtils.exToNull(() -> Api.valueOf(method.getName().toUpperCase())); - if (!ArrayUtil.containsAny(apiArr, Api.ALL, api)) { + if (method.getDeclaringClass() != handlerType && !ArrayUtil.containsAny(apiArr, Api.ALL, api)) { return null; } // 拼接路径(合并了 @RequestMapping 的部分能力) From ac70c385f70cda86fb04dce8e4c07d0cdec4fea9 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Thu, 14 Dec 2023 00:00:58 +0800 Subject: [PATCH 6/6] release: v1.0.1 --- CHANGELOG.md | 16 ++++++++++++++++ README.md | 2 +- continew-starter-dependencies/pom.xml | 2 +- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8bb9360b..602aa7c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,19 @@ +## [v1.0.1](https://github.com/Charles7c/continew-starter/compare/v1.0.0...v1.0.1) (2023-12-13) + +### 💎 功能优化 + +- 【data/mybatis-plus】QueryTypeEnum => QueryType,并取消实现 IBaseEnum 接口 ([bc00c9b](https://github.com/Charles7c/continew-starter/commit/bc00c9bab0ed4508fd1dc0da8a76ef96739cce1d)) +- 【api-doc】新增鉴权配置 ([7997267](https://github.com/Charles7c/continew-starter/commit/7997267060b3e79f80dd73cec722bc295635a93b)) + +### 🐛 问题修复 + +- 【extension/crud】修复使用 @CrudRequestMapping 后自定义 API 不显示的问题 ([1adfddf](https://github.com/Charles7c/continew-starter/commit/1adfddfa3b276e764b098512b2e9c75f007d13c1)) + +### 💥 破坏性变更 + +- 【extension/crud】调整通用查询注解所属模块 crud => mybatis-plus ([083bc7b](https://github.com/Charles7c/continew-starter/commit/083bc7b38a861339ceb7a06acdd20ea64bc84990)) +- 【extension/crud】调整校验工具类所属模块 crud => core ([083bc7b](https://github.com/Charles7c/continew-starter/commit/083bc7b38a861339ceb7a06acdd20ea64bc84990)) + ## v1.0.0 (2023-12-02) ### ✨ 新特性 diff --git a/README.md b/README.md index 907d4901..2f131b12 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ License -Release +Release GitHub stars diff --git a/continew-starter-dependencies/pom.xml b/continew-starter-dependencies/pom.xml index 691e9909..51a6faf8 100644 --- a/continew-starter-dependencies/pom.xml +++ b/continew-starter-dependencies/pom.xml @@ -54,7 +54,7 @@ - 1.0.1-SNAPSHOT + 1.0.1 1.16.5 1.37.0 3.5.4.1