From 979403df066780fe48bd46eeececa895acb13361 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Wed, 1 Oct 2025 21:37:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- continew-common/pom.xml | 9 +++++++-- .../common/base/controller/BaseController.java | 2 +- .../admin/common/config/RsaProperties.java | 4 ++-- .../doc/OperationDescriptionCustomizer.java | 2 +- .../continew/admin/open/mapper/AppMapper.java | 2 +- .../continew/admin/open/model/entity/AppDO.java | 4 ++-- .../continew/admin/ContiNewAdminApplication.java | 16 ++++++++++++++++ .../main/resources/config/application-dev.yml | 15 ++++++++------- .../main/resources/config/application-prod.yml | 15 ++++++++------- .../src/main/resources/config/application.yml | 4 ++-- .../admin/auth/service/impl/AuthServiceImpl.java | 2 +- .../admin/system/controller/DeptController.java | 2 +- .../admin/system/controller/MenuController.java | 2 +- .../admin/system/mapper/user/UserMapper.java | 2 +- .../admin/system/model/entity/SmsConfigDO.java | 2 +- .../admin/system/model/entity/StorageDO.java | 2 +- .../admin/system/model/entity/user/UserDO.java | 6 +++--- .../system/model/resp/user/UserDetailResp.java | 2 +- .../system/service/impl/FileServiceImpl.java | 3 ++- .../system/service/impl/UserServiceImpl.java | 2 +- pom.xml | 2 +- 22 files changed, 63 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index 75acb5ed..4e77ec58 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,7 @@ ContiNew Admin(Continue New Admin),页面现代美观,且专注设计与 ```java @Tag(name = "部门管理 API") @RestController -@CrudRequestMapping(value = "/system/dept", api = {Api.TREE, Api.GET, Api.CREATE, Api.UPDATE, Api.DELETE, Api.EXPORT, Api.DICT_TREE}) +@CrudRequestMapping(value = "/system/dept", api = {Api.TREE, Api.GET, Api.CREATE, Api.UPDATE, Api.DELETE, Api.EXPORT, Api.TREE_DICT}) public class DeptController extends BaseController {} ``` diff --git a/continew-common/pom.xml b/continew-common/pom.xml index 46e495e7..2a27cc71 100644 --- a/continew-common/pom.xml +++ b/continew-common/pom.xml @@ -108,10 +108,15 @@ continew-starter-auth-justauth - + top.continew.starter - continew-starter-security-crypto + continew-starter-encrypt-field + + + + top.continew.starter + continew-starter-encrypt-password-encoder diff --git a/continew-common/src/main/java/top/continew/admin/common/base/controller/BaseController.java b/continew-common/src/main/java/top/continew/admin/common/base/controller/BaseController.java index 0567f433..175cbadf 100644 --- a/continew-common/src/main/java/top/continew/admin/common/base/controller/BaseController.java +++ b/continew-common/src/main/java/top/continew/admin/common/base/controller/BaseController.java @@ -74,7 +74,7 @@ public class BaseController, L, D, Q, C> exten } } // 不需要校验 DICT、DICT_TREE 接口权限 - if (Api.DICT.equals(crudApi.value()) || Api.DICT_TREE.equals(crudApi.value())) { + if (Api.DICT.equals(crudApi.value()) || Api.TREE_DICT.equals(crudApi.value())) { return; } // 校验权限,例如:创建用户接口(POST /system/user) => 校验 system:user:create 权限 diff --git a/continew-common/src/main/java/top/continew/admin/common/config/RsaProperties.java b/continew-common/src/main/java/top/continew/admin/common/config/RsaProperties.java index 91d6d6b6..5158db2a 100644 --- a/continew-common/src/main/java/top/continew/admin/common/config/RsaProperties.java +++ b/continew-common/src/main/java/top/continew/admin/common/config/RsaProperties.java @@ -34,8 +34,8 @@ public class RsaProperties { public static final String PUBLIC_KEY; static { - PRIVATE_KEY = SpringUtil.getProperty("continew-starter.security.crypto.private-key"); - PUBLIC_KEY = SpringUtil.getProperty("continew-starter.security.crypto.public-key"); + PRIVATE_KEY = SpringUtil.getProperty("continew-starter.encrypt.field.private-key"); + PUBLIC_KEY = SpringUtil.getProperty("continew-starter.encrypt.field.public-key"); } private RsaProperties() { diff --git a/continew-common/src/main/java/top/continew/admin/common/config/doc/OperationDescriptionCustomizer.java b/continew-common/src/main/java/top/continew/admin/common/config/doc/OperationDescriptionCustomizer.java index 0c20b90d..6b6d65dc 100644 --- a/continew-common/src/main/java/top/continew/admin/common/config/doc/OperationDescriptionCustomizer.java +++ b/continew-common/src/main/java/top/continew/admin/common/config/doc/OperationDescriptionCustomizer.java @@ -171,7 +171,7 @@ public class OperationDescriptionCustomizer { if (crudRequestMapping == null || crudApi == null) { return StringConstants.EMPTY; } - if (Api.DICT.equals(crudApi.value()) || Api.DICT_TREE.equals(crudApi.value())) { + if (Api.DICT.equals(crudApi.value()) || Api.TREE_DICT.equals(crudApi.value())) { return StringConstants.EMPTY; } String permissionPrefix = CrudApiPermissionPrefixCache.get(targetClass); diff --git a/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/mapper/AppMapper.java b/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/mapper/AppMapper.java index 7c0d4b38..dc5d1873 100644 --- a/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/mapper/AppMapper.java +++ b/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/mapper/AppMapper.java @@ -21,7 +21,7 @@ import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import top.continew.admin.open.model.entity.AppDO; import top.continew.starter.data.mapper.BaseMapper; -import top.continew.starter.security.crypto.annotation.FieldEncrypt; +import top.continew.starter.encrypt.field.annotation.FieldEncrypt; /** * 应用 Mapper diff --git a/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/model/entity/AppDO.java b/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/model/entity/AppDO.java index 41f66fc5..1e7de8c3 100644 --- a/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/model/entity/AppDO.java +++ b/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/model/entity/AppDO.java @@ -18,9 +18,9 @@ package top.continew.admin.open.model.entity; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; -import top.continew.admin.common.enums.DisEnableStatusEnum; import top.continew.admin.common.base.model.entity.BaseDO; -import top.continew.starter.security.crypto.annotation.FieldEncrypt; +import top.continew.admin.common.enums.DisEnableStatusEnum; +import top.continew.starter.encrypt.field.annotation.FieldEncrypt; import java.io.Serial; import java.time.LocalDateTime; diff --git a/continew-server/src/main/java/top/continew/admin/ContiNewAdminApplication.java b/continew-server/src/main/java/top/continew/admin/ContiNewAdminApplication.java index 1f99f6e8..121823cf 100644 --- a/continew-server/src/main/java/top/continew/admin/ContiNewAdminApplication.java +++ b/continew-server/src/main/java/top/continew/admin/ContiNewAdminApplication.java @@ -33,9 +33,14 @@ import org.springframework.boot.SpringBootVersion; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.web.ServerProperties; import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; +import top.continew.admin.common.context.UserContext; +import top.continew.admin.common.context.UserContextHolder; import top.continew.starter.core.autoconfigure.application.ApplicationProperties; +import top.continew.starter.core.util.SpringUtils; import top.continew.starter.extension.crud.annotation.EnableCrudApi; import top.continew.starter.web.annotation.EnableGlobalResponse; import top.continew.starter.web.model.R; @@ -59,6 +64,7 @@ public class ContiNewAdminApplication implements ApplicationRunner { private final ApplicationProperties applicationProperties; private final ServerProperties serverProperties; + private final ThreadPoolTaskExecutor threadPoolTaskExecutor; public static void main(String[] args) { SpringApplication.run(ContiNewAdminApplication.class, args); @@ -93,5 +99,15 @@ public class ContiNewAdminApplication implements ApplicationRunner { log.info("更新日志: https://continew.top/docs/admin/changelog/"); log.info("ContiNew Admin: 持续迭代优化的,高质量多租户中后台管理系统框架"); log.info("--------------------------------------------------------"); + UserContext userContext = new UserContext(); + userContext.setId(222L); + UserContextHolder.setContext(userContext); + log.info("userId: {}", UserContextHolder.getUserId()); + SpringUtils.getProxy(this).async(); + } + + @Async + public void async() { + log.info("async: {}", UserContextHolder.getUserId()); } } diff --git a/continew-server/src/main/resources/config/application-dev.yml b/continew-server/src/main/resources/config/application-dev.yml index 9c0662d5..ed79fc34 100644 --- a/continew-server/src/main/resources/config/application-dev.yml +++ b/continew-server/src/main/resources/config/application-dev.yml @@ -119,8 +119,14 @@ logging: file: path: ./logs ---- ### 安全配置:加/解密配置 -continew-starter.security.crypto: +--- ### 加密配置:密码编码器配置 +continew-starter.encrypt.password-encoder: + enabled: true + # 默认启用的编码器算法(默认:BCrypt 加密算法) + algorithm: BCRYPT + +--- ### 加密配置:字段加/解密配置 +continew-starter.encrypt.field: enabled: true # 默认算法,即 @FieldEncrypt 默认采用的算法(默认:AES 对称加密算法) algorithm: AES @@ -129,11 +135,6 @@ continew-starter.security.crypto: # 非对称加密算法密钥(在线生成 RSA 密钥对:http://web.chacuo.net/netrsakeypair) public-key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAM51dgYtMyF+tTQt80sfFOpSV27a7t9uaUVeFrdGiVxscuizE7H8SMntYqfn9lp8a5GH5P1/GGehVjUD2gF/4kcCAwEAAQ== private-key: MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAznV2Bi0zIX61NC3zSx8U6lJXbtru325pRV4Wt0aJXGxy6LMTsfxIye1ip+f2WnxrkYfk/X8YZ6FWNQPaAX/iRwIDAQABAkEAk/VcAusrpIqA5Ac2P5Tj0VX3cOuXmyouaVcXonr7f+6y2YTjLQuAnkcfKKocQI/juIRQBFQIqqW/m1nmz1wGeQIhAO8XaA/KxzOIgU0l/4lm0A2Wne6RokJ9HLs1YpOzIUmVAiEA3Q9DQrpAlIuiT1yWAGSxA9RxcjUM/1kdVLTkv0avXWsCIE0X8woEjK7lOSwzMG6RpEx9YHdopjViOj1zPVH61KTxAiBmv/dlhqkJ4rV46fIXELZur0pj6WC3N7a4brR8a+CLLQIhAMQyerWl2cPNVtE/8tkziHKbwW3ZUiBXU24wFxedT9iV - ## 密码编码器配置 - password-encoder: - enabled: true - # 默认启用的编码器算法(默认:BCrypt 加密算法) - algorithm: BCRYPT --- ### 验证码配置 continew-starter.captcha: diff --git a/continew-server/src/main/resources/config/application-prod.yml b/continew-server/src/main/resources/config/application-prod.yml index 3d96220b..03218cbe 100644 --- a/continew-server/src/main/resources/config/application-prod.yml +++ b/continew-server/src/main/resources/config/application-prod.yml @@ -128,8 +128,14 @@ logging: file: path: ../logs ---- ### 安全配置:加/解密配置 -continew-starter.security.crypto: +--- ### 加密配置:密码编码器配置 +continew-starter.encrypt.password-encoder: + enabled: true + # 默认启用的编码器算法(默认:BCrypt 加密算法) + algorithm: BCRYPT + +--- ### 加密配置:字段加/解密配置 +continew-starter.encrypt.field: enabled: true # 默认算法,即 @FieldEncrypt 默认采用的算法(默认:AES 对称加密算法) algorithm: AES @@ -138,11 +144,6 @@ continew-starter.security.crypto: # 非对称加密算法密钥(在线生成 RSA 密钥对:http://web.chacuo.net/netrsakeypair) public-key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAM51dgYtMyF+tTQt80sfFOpSV27a7t9uaUVeFrdGiVxscuizE7H8SMntYqfn9lp8a5GH5P1/GGehVjUD2gF/4kcCAwEAAQ== private-key: MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAznV2Bi0zIX61NC3zSx8U6lJXbtru325pRV4Wt0aJXGxy6LMTsfxIye1ip+f2WnxrkYfk/X8YZ6FWNQPaAX/iRwIDAQABAkEAk/VcAusrpIqA5Ac2P5Tj0VX3cOuXmyouaVcXonr7f+6y2YTjLQuAnkcfKKocQI/juIRQBFQIqqW/m1nmz1wGeQIhAO8XaA/KxzOIgU0l/4lm0A2Wne6RokJ9HLs1YpOzIUmVAiEA3Q9DQrpAlIuiT1yWAGSxA9RxcjUM/1kdVLTkv0avXWsCIE0X8woEjK7lOSwzMG6RpEx9YHdopjViOj1zPVH61KTxAiBmv/dlhqkJ4rV46fIXELZur0pj6WC3N7a4brR8a+CLLQIhAMQyerWl2cPNVtE/8tkziHKbwW3ZUiBXU24wFxedT9iV - ## 密码编码器配置 - password-encoder: - enabled: true - # 默认启用的编码器算法(默认:BCrypt 加密算法) - algorithm: BCRYPT --- ### 验证码配置 continew-starter.captcha: diff --git a/continew-server/src/main/resources/config/application.yml b/continew-server/src/main/resources/config/application.yml index 2489b386..63ea62f3 100644 --- a/continew-server/src/main/resources/config/application.yml +++ b/continew-server/src/main/resources/config/application.yml @@ -182,8 +182,8 @@ continew-starter.trace: --- ### CRUD 配置 continew-starter.crud: - ## 全局树结构配置(简单树,对应前端 UI) - tree: + ## 树型字典结构映射配置(简单树,对应前端 UI) + tree-dict-model: id-key: key name-key: title weight-key: sort diff --git a/continew-system/src/main/java/top/continew/admin/auth/service/impl/AuthServiceImpl.java b/continew-system/src/main/java/top/continew/admin/auth/service/impl/AuthServiceImpl.java index ef94f6da..2111209f 100644 --- a/continew-system/src/main/java/top/continew/admin/auth/service/impl/AuthServiceImpl.java +++ b/continew-system/src/main/java/top/continew/admin/auth/service/impl/AuthServiceImpl.java @@ -104,7 +104,7 @@ public class AuthServiceImpl implements AuthService { } // 构建路由树 TreeField treeField = MenuResp.class.getDeclaredAnnotation(TreeField.class); - TreeNodeConfig treeNodeConfig = crudProperties.getTree().genTreeNodeConfig(treeField); + TreeNodeConfig treeNodeConfig = crudProperties.getTreeDictModel().genTreeNodeConfig(treeField); List> treeList = TreeUtil.build(menuList, treeField.rootId(), treeNodeConfig, (m, tree) -> { tree.setId(m.getId()); tree.setParentId(m.getParentId()); diff --git a/continew-system/src/main/java/top/continew/admin/system/controller/DeptController.java b/continew-system/src/main/java/top/continew/admin/system/controller/DeptController.java index c5b28f1f..39a36e2f 100644 --- a/continew-system/src/main/java/top/continew/admin/system/controller/DeptController.java +++ b/continew-system/src/main/java/top/continew/admin/system/controller/DeptController.java @@ -35,6 +35,6 @@ import top.continew.starter.extension.crud.enums.Api; @Tag(name = "部门管理 API") @RestController @CrudRequestMapping(value = "/system/dept", api = {Api.TREE, Api.GET, Api.CREATE, Api.UPDATE, Api.BATCH_DELETE, - Api.EXPORT, Api.DICT_TREE}) + Api.EXPORT, Api.TREE_DICT}) public class DeptController extends BaseController { } diff --git a/continew-system/src/main/java/top/continew/admin/system/controller/MenuController.java b/continew-system/src/main/java/top/continew/admin/system/controller/MenuController.java index c176ec3e..8f1a9b82 100644 --- a/continew-system/src/main/java/top/continew/admin/system/controller/MenuController.java +++ b/continew-system/src/main/java/top/continew/admin/system/controller/MenuController.java @@ -50,7 +50,7 @@ import java.lang.reflect.Method; @RestController @RequiredArgsConstructor @CrudRequestMapping(value = "/system/menu", api = {Api.TREE, Api.GET, Api.CREATE, Api.UPDATE, Api.BATCH_DELETE, - Api.DICT_TREE}) + Api.TREE_DICT}) public class MenuController extends BaseController { @Operation(summary = "清除缓存", description = "清除缓存") diff --git a/continew-system/src/main/java/top/continew/admin/system/mapper/user/UserMapper.java b/continew-system/src/main/java/top/continew/admin/system/mapper/user/UserMapper.java index 4a926588..7958d17c 100644 --- a/continew-system/src/main/java/top/continew/admin/system/mapper/user/UserMapper.java +++ b/continew-system/src/main/java/top/continew/admin/system/mapper/user/UserMapper.java @@ -26,7 +26,7 @@ import top.continew.admin.common.base.mapper.DataPermissionMapper; import top.continew.admin.system.model.entity.user.UserDO; import top.continew.admin.system.model.resp.user.UserDetailResp; import top.continew.starter.extension.datapermission.annotation.DataPermission; -import top.continew.starter.security.crypto.annotation.FieldEncrypt; +import top.continew.starter.encrypt.field.annotation.FieldEncrypt; import java.util.List; diff --git a/continew-system/src/main/java/top/continew/admin/system/model/entity/SmsConfigDO.java b/continew-system/src/main/java/top/continew/admin/system/model/entity/SmsConfigDO.java index 1346fd10..df1f7cc4 100644 --- a/continew-system/src/main/java/top/continew/admin/system/model/entity/SmsConfigDO.java +++ b/continew-system/src/main/java/top/continew/admin/system/model/entity/SmsConfigDO.java @@ -20,7 +20,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import top.continew.admin.common.enums.DisEnableStatusEnum; import top.continew.admin.common.base.model.entity.BaseDO; -import top.continew.starter.security.crypto.annotation.FieldEncrypt; +import top.continew.starter.encrypt.field.annotation.FieldEncrypt; import java.io.Serial; diff --git a/continew-system/src/main/java/top/continew/admin/system/model/entity/StorageDO.java b/continew-system/src/main/java/top/continew/admin/system/model/entity/StorageDO.java index 3a61f589..370a1a82 100644 --- a/continew-system/src/main/java/top/continew/admin/system/model/entity/StorageDO.java +++ b/continew-system/src/main/java/top/continew/admin/system/model/entity/StorageDO.java @@ -26,7 +26,7 @@ import top.continew.admin.common.enums.DisEnableStatusEnum; import top.continew.admin.common.base.model.entity.BaseDO; import top.continew.admin.system.enums.StorageTypeEnum; import top.continew.starter.core.constant.StringConstants; -import top.continew.starter.security.crypto.annotation.FieldEncrypt; +import top.continew.starter.encrypt.field.annotation.FieldEncrypt; import java.io.Serial; import java.net.URL; diff --git a/continew-system/src/main/java/top/continew/admin/system/model/entity/user/UserDO.java b/continew-system/src/main/java/top/continew/admin/system/model/entity/user/UserDO.java index 13e1d67a..c6e160f3 100644 --- a/continew-system/src/main/java/top/continew/admin/system/model/entity/user/UserDO.java +++ b/continew-system/src/main/java/top/continew/admin/system/model/entity/user/UserDO.java @@ -23,9 +23,9 @@ import lombok.Data; import top.continew.admin.common.base.model.entity.BaseDO; import top.continew.admin.common.enums.DisEnableStatusEnum; import top.continew.admin.common.enums.GenderEnum; +import top.continew.starter.encrypt.field.annotation.FieldEncrypt; +import top.continew.starter.encrypt.password.encoder.encryptor.PasswordEncoderEncryptor; import top.continew.starter.extension.crud.annotation.DictModel; -import top.continew.starter.security.crypto.annotation.FieldEncrypt; -import top.continew.starter.security.crypto.enums.Algorithm; import java.io.Serial; import java.time.LocalDateTime; @@ -57,7 +57,7 @@ public class UserDO extends BaseDO { /** * 密码 */ - @FieldEncrypt(Algorithm.PASSWORD_ENCODER) + @FieldEncrypt(encryptor = PasswordEncoderEncryptor.class) private String password; /** diff --git a/continew-system/src/main/java/top/continew/admin/system/model/resp/user/UserDetailResp.java b/continew-system/src/main/java/top/continew/admin/system/model/resp/user/UserDetailResp.java index 3162e3f4..a3a904f7 100644 --- a/continew-system/src/main/java/top/continew/admin/system/model/resp/user/UserDetailResp.java +++ b/continew-system/src/main/java/top/continew/admin/system/model/resp/user/UserDetailResp.java @@ -36,7 +36,7 @@ import top.continew.admin.system.model.resp.DeptResp; import top.continew.admin.system.service.DeptService; import top.continew.starter.excel.converter.ExcelBaseEnumConverter; import top.continew.starter.excel.converter.ExcelListConverter; -import top.continew.starter.security.crypto.annotation.FieldEncrypt; +import top.continew.starter.encrypt.field.annotation.FieldEncrypt; import java.io.Serial; import java.time.LocalDateTime; diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/FileServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/FileServiceImpl.java index 08332c19..9c9a15da 100644 --- a/continew-system/src/main/java/top/continew/admin/system/service/impl/FileServiceImpl.java +++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/FileServiceImpl.java @@ -290,7 +290,8 @@ public class FileServiceImpl extends BaseServiceImpl user、avatar - String[] parentPathParts = StrUtil.split(parentPath, StringConstants.SLASH, false, true).toArray(String[]::new); + String[] parentPathParts = StrUtil.split(parentPath, StringConstants.SLASH, false, true) + .toArray(String[]::new); String lastPath = StringConstants.SLASH; StringBuilder currentPathBuilder = new StringBuilder(); for (int i = 0; i < parentPathParts.length; i++) { diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/UserServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/UserServiceImpl.java index b360b566..c9139a0a 100644 --- a/continew-system/src/main/java/top/continew/admin/system/service/impl/UserServiceImpl.java +++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/UserServiceImpl.java @@ -80,10 +80,10 @@ import top.continew.starter.core.exception.BusinessException; import top.continew.starter.core.util.CollUtils; import top.continew.starter.core.util.FileUploadUtils; import top.continew.starter.core.util.validation.CheckUtils; +import top.continew.starter.encrypt.field.util.EncryptHelper; import top.continew.starter.extension.crud.model.query.PageQuery; import top.continew.starter.extension.crud.model.query.SortQuery; import top.continew.starter.extension.crud.model.resp.PageResp; -import top.continew.starter.security.crypto.util.EncryptHelper; import java.io.IOException; import java.time.Duration; diff --git a/pom.xml b/pom.xml index 6ebe0813..07676dfa 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ top.continew.starter continew-starter - 2.13.4 + 2.14.0-SNAPSHOT top.continew.admin