一个好的脚手架项目,不仅仅是提供一系列组件集成与配置,也不仅仅是封装一堆好用的工具,还更应该提供一系列通用基础业务解决方案及设计,为初创团队项目减负。
-9.**质量与安全:** 项目 CI 已集成 Sonarqube、Codacy、Qodana,Push 即触发代码质量扫描,并定期进行 CVE 漏洞扫描,及时解决潜在问题。
+9.**质量与安全:** CI 已集成 Sonar、Codacy、Qodana,Push 即扫描代码质量,定期扫描 CVE 漏洞,及时解决潜在问题。持续封装如数据库字段加密、JSON 脱敏、XSS 过滤等工具,提供诸多安全解决方案。
由于篇幅有限,且项目正处于高速发展期,更多功能正在陆续上线(敬请关注仓库或群内动态)。另外像最基本的统一异常、错误处理,基础线程池等配置就不在此赘述,细节优化详情请 clone 代码查看。
> Talk is cheap, show me the code.
diff --git a/continew-admin-common/pom.xml b/continew-admin-common/pom.xml
index 25ba5b9c..29066e69 100644
--- a/continew-admin-common/pom.xml
+++ b/continew-admin-common/pom.xml
@@ -96,6 +96,12 @@
continew-starter-file-excel
+
+
+ top.charles7c.continew
+ continew-starter-security-password
+
+
top.charles7c.continew
@@ -107,11 +113,5 @@
top.charles7c.continew
continew-starter-json-jackson
-
-
-
- com.yomahub
- tlog-web-spring-boot-starter
-
\ No newline at end of file
diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/MyBatisPlusMetaObjectHandler.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/MyBatisPlusMetaObjectHandler.java
index f7c0a748..c34e5ebc 100644
--- a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/MyBatisPlusMetaObjectHandler.java
+++ b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/MyBatisPlusMetaObjectHandler.java
@@ -16,17 +16,14 @@
package top.charles7c.continew.admin.common.config.mybatis;
-import java.time.LocalDateTime;
-
-import org.apache.ibatis.reflection.MetaObject;
-
-import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
-
import cn.hutool.core.util.ObjectUtil;
-
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import org.apache.ibatis.reflection.MetaObject;
import top.charles7c.continew.admin.common.util.helper.LoginHelper;
import top.charles7c.continew.starter.core.exception.BusinessException;
-import top.charles7c.continew.starter.extension.crud.base.BaseDO;
+import top.charles7c.continew.starter.extension.crud.model.entity.BaseDO;
+
+import java.time.LocalDateTime;
/**
* MyBatis Plus 元对象处理器配置(插入或修改时自动填充)
diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/properties/TLogProperties.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/properties/TLogProperties.java
deleted file mode 100644
index 63d5ddb6..00000000
--- a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/properties/TLogProperties.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.admin.common.config.properties;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-/**
- * TLog 配置属性
- *
- *
- * 重写 TLog 配置以适配 Spring Boot 3.x
- *
- *
- * @author Jasmine
- * @since 2024/1/30 11:39
- */
-@Data
-@ConfigurationProperties(prefix = "tlog")
-public class TLogProperties {
-
- /**
- * 日志标签模板
- */
- private String pattern;
-
- /**
- * 自动打印调用参数和时间
- */
- private Boolean enableInvokeTimePrint;
-
- /**
- * 自定义 TraceId 生成器
- */
- private String idGenerator;
-
- /**
- * MDC 模式
- */
- private Boolean mdcEnable;
-}
diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TLogConfiguration.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TLogConfiguration.java
deleted file mode 100644
index d83057a8..00000000
--- a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TLogConfiguration.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.admin.common.config.tlog;
-
-import com.yomahub.tlog.id.TLogIdGeneratorLoader;
-import com.yomahub.tlog.spring.TLogPropertyInit;
-import lombok.RequiredArgsConstructor;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import top.charles7c.continew.admin.common.config.properties.TLogProperties;
-
-/**
- * TLog 配置
- *
- *
- * 重写 TLog 配置以适配 Spring Boot 3.x
- *
- *
- * @see TLogConfiguration
- * @author Jasmine
- * @since 2024/1/30 11:39
- */
-@Configuration
-@RequiredArgsConstructor
-@EnableConfigurationProperties(TLogProperties.class)
-public class TLogConfiguration {
-
- private final TLogProperties tLogProperties;
-
- @Bean
- @Primary
- public TLogPropertyInit tLogPropertyInit() {
- TLogPropertyInit tLogPropertyInit = new TLogPropertyInit();
- tLogPropertyInit.setPattern(tLogProperties.getPattern());
- tLogPropertyInit.setEnableInvokeTimePrint(tLogProperties.getEnableInvokeTimePrint());
- tLogPropertyInit.setMdcEnable(tLogProperties.getMdcEnable());
- // 设置自定义 TraceId 生成器
- TLogIdGeneratorLoader.setIdGenerator(new TraceIdGenerator());
- return tLogPropertyInit;
- }
-}
diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TLogServletFilter.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TLogServletFilter.java
deleted file mode 100644
index a07cd249..00000000
--- a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TLogServletFilter.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.admin.common.config.tlog;
-
-import com.yomahub.tlog.context.TLogContext;
-import jakarta.servlet.*;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-import org.springframework.stereotype.Component;
-import top.charles7c.continew.admin.common.constant.SysConstants;
-
-import java.io.IOException;
-
-/**
- * TLog 过滤器
- *
- *
- * 重写 TLog 配置以适配 Spring Boot 3.x
- *
- *
- * @see TLogConfiguration
- * @author Jasmine
- * @since 2024/1/30 11:39
- */
-@Component
-public class TLogServletFilter implements Filter {
-
- @Override
- public void doFilter(ServletRequest request,
- ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
- if (request instanceof HttpServletRequest httpServletRequest && response instanceof HttpServletResponse httpServletResponse) {
- try {
- TLogWebCommon.loadInstance().preHandle(httpServletRequest);
- // 把 traceId 放入 response 的 header,为了方便有些人有这样的需求,从前端拿整条链路的 traceId
- httpServletResponse.addHeader(SysConstants.TRACE_ID, TLogContext.getTraceId());
- chain.doFilter(request, response);
- return;
- } finally {
- TLogWebCommon.loadInstance().afterCompletion();
- }
- }
- chain.doFilter(request, response);
- }
-}
diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TLogWebCommon.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TLogWebCommon.java
deleted file mode 100644
index 9a0df193..00000000
--- a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TLogWebCommon.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.admin.common.config.tlog;
-
-import com.yomahub.tlog.constant.TLogConstants;
-import com.yomahub.tlog.core.rpc.TLogLabelBean;
-import com.yomahub.tlog.core.rpc.TLogRPCHandler;
-import jakarta.servlet.http.HttpServletRequest;
-
-/**
- * TLog Web 通用拦截器
- *
- *
- * 重写 TLog 配置以适配 Spring Boot 3.x
- *
- *
- * @see TLogWebCommon
- * @author Jasmine
- * @since 2024/1/30 11:39
- */
-public class TLogWebCommon extends TLogRPCHandler {
-
- private static volatile TLogWebCommon tLogWebCommon;
-
- public static TLogWebCommon loadInstance() {
- if (tLogWebCommon == null) {
- synchronized (TLogWebCommon.class) {
- if (tLogWebCommon == null) {
- tLogWebCommon = new TLogWebCommon();
- }
- }
- }
- return tLogWebCommon;
- }
-
- public void preHandle(HttpServletRequest request) {
- String traceId = request.getHeader(TLogConstants.TLOG_TRACE_KEY);
- String spanId = request.getHeader(TLogConstants.TLOG_SPANID_KEY);
- String preIvkApp = request.getHeader(TLogConstants.PRE_IVK_APP_KEY);
- String preIvkHost = request.getHeader(TLogConstants.PRE_IVK_APP_HOST);
- String preIp = request.getHeader(TLogConstants.PRE_IP_KEY);
- TLogLabelBean labelBean = new TLogLabelBean(preIvkApp, preIvkHost, preIp, traceId, spanId);
- processProviderSide(labelBean);
- }
-
- public void afterCompletion() {
- cleanThreadLocal();
- }
-}
diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TraceIdGenerator.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TraceIdGenerator.java
deleted file mode 100644
index c576eb7a..00000000
--- a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TraceIdGenerator.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.admin.common.config.tlog;
-
-import com.yomahub.tlog.id.TLogIdGenerator;
-import com.yomahub.tlog.id.snowflake.UniqueIdGenerator;
-
-/**
- * TLog ID 自定义生成器
- *
- * @see TraceIdGenerator
- * @author Jasmine
- * @since 2024/1/30 11:39
- */
-public class TraceIdGenerator extends TLogIdGenerator {
- @Override
- public String generateTraceId() {
- return String.valueOf(UniqueIdGenerator.generateId());
- }
-}
\ No newline at end of file
diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/constant/SysConstants.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/constant/SysConstants.java
index 0bac4ba1..310e1083 100644
--- a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/constant/SysConstants.java
+++ b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/constant/SysConstants.java
@@ -68,9 +68,4 @@ public class SysConstants {
* 描述类字段后缀
*/
public static final String DESCRIPTION_FIELD_SUFFIX = "String";
-
- /**
- * Trace ID
- */
- public static final String TRACE_ID = "traceId";
}
diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/util/helper/LoginHelper.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/util/helper/LoginHelper.java
index 4eaf1fe9..6af3154f 100644
--- a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/util/helper/LoginHelper.java
+++ b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/util/helper/LoginHelper.java
@@ -28,7 +28,7 @@ import top.charles7c.continew.admin.common.constant.CacheConstants;
import top.charles7c.continew.admin.common.model.dto.LoginUser;
import top.charles7c.continew.starter.core.util.ExceptionUtils;
import top.charles7c.continew.starter.core.util.IpUtils;
-import top.charles7c.continew.starter.extension.crud.base.CommonUserService;
+import top.charles7c.continew.starter.extension.crud.service.CommonUserService;
import top.charles7c.continew.starter.web.util.ServletUtils;
import java.time.LocalDateTime;
diff --git a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/config/LogConfiguration.java b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/config/LogConfiguration.java
index 24de8a3d..d2729a8c 100644
--- a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/config/LogConfiguration.java
+++ b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/config/LogConfiguration.java
@@ -23,6 +23,7 @@ import top.charles7c.continew.admin.monitor.mapper.LogMapper;
import top.charles7c.continew.admin.system.service.UserService;
import top.charles7c.continew.starter.log.common.dao.LogDao;
import top.charles7c.continew.starter.log.httptracepro.autoconfigure.ConditionalOnEnabledLog;
+import top.charles7c.continew.starter.web.autoconfigure.trace.TraceProperties;
/**
* 日志配置
@@ -38,7 +39,7 @@ public class LogConfiguration {
* 日志持久层接口本地实现类
*/
@Bean
- public LogDao logDao(UserService userService, LogMapper logMapper) {
- return new LogDaoLocalImpl(userService, logMapper);
+ public LogDao logDao(UserService userService, LogMapper logMapper, TraceProperties traceProperties) {
+ return new LogDaoLocalImpl(userService, logMapper, traceProperties);
}
}
diff --git a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/config/LogDaoLocalImpl.java b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/config/LogDaoLocalImpl.java
index fe93f8f5..1338f78b 100644
--- a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/config/LogDaoLocalImpl.java
+++ b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/config/LogDaoLocalImpl.java
@@ -38,6 +38,7 @@ import top.charles7c.continew.starter.log.common.dao.LogDao;
import top.charles7c.continew.starter.log.common.model.LogRecord;
import top.charles7c.continew.starter.log.common.model.LogRequest;
import top.charles7c.continew.starter.log.common.model.LogResponse;
+import top.charles7c.continew.starter.web.autoconfigure.trace.TraceProperties;
import top.charles7c.continew.starter.web.model.R;
import java.net.URI;
@@ -56,6 +57,7 @@ public class LogDaoLocalImpl implements LogDao {
private final UserService userService;
private final LogMapper logMapper;
+ private final TraceProperties traceProperties;
@Async
@Override
@@ -88,7 +90,7 @@ public class LogDaoLocalImpl implements LogDao {
logDO.setStatusCode(statusCode);
Map responseHeaders = logResponse.getHeaders();
logDO.setResponseHeaders(JSONUtil.toJsonStr(responseHeaders));
- logDO.setTraceId(responseHeaders.get(SysConstants.TRACE_ID));
+ logDO.setTraceId(responseHeaders.get(traceProperties.getHeaderName()));
String responseBody = logResponse.getBody();
logDO.setResponseBody(responseBody);
// 状态
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/AnnouncementDO.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/AnnouncementDO.java
index 67f9c55b..bc2c3807 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/AnnouncementDO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/AnnouncementDO.java
@@ -23,7 +23,7 @@ import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableName;
-import top.charles7c.continew.starter.extension.crud.base.BaseDO;
+import top.charles7c.continew.starter.extension.crud.model.entity.BaseDO;
/**
* 公告实体
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/DeptDO.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/DeptDO.java
index 4b8f8133..1d89a7cb 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/DeptDO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/DeptDO.java
@@ -23,7 +23,7 @@ import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableName;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
-import top.charles7c.continew.starter.extension.crud.base.BaseDO;
+import top.charles7c.continew.starter.extension.crud.model.entity.BaseDO;
/**
* 部门实体
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/DictDO.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/DictDO.java
index cfa38316..38911136 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/DictDO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/DictDO.java
@@ -22,7 +22,7 @@ import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableName;
-import top.charles7c.continew.starter.extension.crud.base.BaseDO;
+import top.charles7c.continew.starter.extension.crud.model.entity.BaseDO;
/**
* 字典实体
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/DictItemDO.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/DictItemDO.java
index a173b357..55adcef2 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/DictItemDO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/DictItemDO.java
@@ -22,7 +22,7 @@ import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableName;
-import top.charles7c.continew.starter.extension.crud.base.BaseDO;
+import top.charles7c.continew.starter.extension.crud.model.entity.BaseDO;
/**
* 字典项实体
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/FileDO.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/FileDO.java
index 910aab1d..8031bf65 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/FileDO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/FileDO.java
@@ -29,7 +29,7 @@ import cn.hutool.core.util.StrUtil;
import top.charles7c.continew.admin.system.enums.FileTypeEnum;
import top.charles7c.continew.starter.core.constant.StringConstants;
import top.charles7c.continew.starter.core.util.URLUtils;
-import top.charles7c.continew.starter.extension.crud.base.BaseDO;
+import top.charles7c.continew.starter.extension.crud.model.entity.BaseDO;
/**
* 文件实体
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/MenuDO.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/MenuDO.java
index 24885bc2..a56da6d7 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/MenuDO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/MenuDO.java
@@ -24,7 +24,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
import top.charles7c.continew.admin.common.enums.MenuTypeEnum;
-import top.charles7c.continew.starter.extension.crud.base.BaseDO;
+import top.charles7c.continew.starter.extension.crud.model.entity.BaseDO;
/**
* 菜单实体
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/RoleDO.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/RoleDO.java
index a57813e8..31784d33 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/RoleDO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/RoleDO.java
@@ -24,7 +24,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import top.charles7c.continew.admin.common.enums.DataScopeEnum;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
-import top.charles7c.continew.starter.extension.crud.base.BaseDO;
+import top.charles7c.continew.starter.extension.crud.model.entity.BaseDO;
/**
* 角色实体
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/StorageDO.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/StorageDO.java
index 3dc7b1e0..4fe1a312 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/StorageDO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/StorageDO.java
@@ -24,7 +24,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
import top.charles7c.continew.admin.system.enums.StorageTypeEnum;
-import top.charles7c.continew.starter.extension.crud.base.BaseDO;
+import top.charles7c.continew.starter.extension.crud.model.entity.BaseDO;
/**
* 存储库实体
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/UserDO.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/UserDO.java
index 18e7a341..32361639 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/UserDO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/UserDO.java
@@ -25,7 +25,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
import top.charles7c.continew.admin.common.enums.GenderEnum;
-import top.charles7c.continew.starter.extension.crud.base.BaseDO;
+import top.charles7c.continew.starter.extension.crud.model.entity.BaseDO;
/**
* 用户实体
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/AnnouncementReq.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/AnnouncementReq.java
index 86e1a580..6ff1b30d 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/AnnouncementReq.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/AnnouncementReq.java
@@ -16,19 +16,16 @@
package top.charles7c.continew.admin.system.model.req;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Future;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+import top.charles7c.continew.starter.extension.crud.model.req.BaseReq;
+
import java.io.Serial;
import java.time.LocalDateTime;
-import jakarta.validation.constraints.*;
-
-import lombok.Data;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-
-import org.hibernate.validator.constraints.Length;
-
-import top.charles7c.continew.starter.extension.crud.base.BaseReq;
-
/**
* 创建或修改公告信息
*
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/DeptReq.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/DeptReq.java
index 8032b94b..08d1dba4 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/DeptReq.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/DeptReq.java
@@ -16,23 +16,19 @@
package top.charles7c.continew.admin.system.model.req;
-import java.io.Serial;
-
+import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
-
import lombok.Data;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-
import org.hibernate.validator.constraints.Length;
-
import top.charles7c.continew.admin.common.constant.RegexConstants;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
-import top.charles7c.continew.starter.extension.crud.base.BaseReq;
-import top.charles7c.continew.starter.extension.crud.base.ValidateGroup;
+import top.charles7c.continew.starter.extension.crud.model.req.BaseReq;
+import top.charles7c.continew.starter.extension.crud.util.ValidateGroup;
+
+import java.io.Serial;
/**
* 创建或修改部门信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/DictItemReq.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/DictItemReq.java
index 24dec6bd..faae552a 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/DictItemReq.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/DictItemReq.java
@@ -26,7 +26,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import org.hibernate.validator.constraints.Length;
-import top.charles7c.continew.starter.extension.crud.base.BaseReq;
+import top.charles7c.continew.starter.extension.crud.model.req.BaseReq;
/**
* 创建或修改字典项信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/DictReq.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/DictReq.java
index 553ab843..8281bc88 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/DictReq.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/DictReq.java
@@ -16,18 +16,15 @@
package top.charles7c.continew.admin.system.model.req;
-import java.io.Serial;
-
-import jakarta.validation.constraints.*;
-
-import lombok.Data;
-
import io.swagger.v3.oas.annotations.media.Schema;
-
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Pattern;
+import lombok.Data;
import org.hibernate.validator.constraints.Length;
-
import top.charles7c.continew.admin.common.constant.RegexConstants;
-import top.charles7c.continew.starter.extension.crud.base.BaseReq;
+import top.charles7c.continew.starter.extension.crud.model.req.BaseReq;
+
+import java.io.Serial;
/**
* 创建或修改字典信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/FileReq.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/FileReq.java
index d8e059e8..aa8d14ba 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/FileReq.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/FileReq.java
@@ -26,7 +26,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import org.hibernate.validator.constraints.Length;
-import top.charles7c.continew.starter.extension.crud.base.BaseReq;
+import top.charles7c.continew.starter.extension.crud.model.req.BaseReq;
/**
* 修改文件信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/MenuReq.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/MenuReq.java
index 4c4d78cf..750d2542 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/MenuReq.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/MenuReq.java
@@ -30,7 +30,7 @@ import org.hibernate.validator.constraints.Length;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
import top.charles7c.continew.admin.common.enums.MenuTypeEnum;
-import top.charles7c.continew.starter.extension.crud.base.BaseReq;
+import top.charles7c.continew.starter.extension.crud.model.req.BaseReq;
/**
* 创建或修改菜单信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/MessageReq.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/MessageReq.java
index a1c90ce8..c8d50bd4 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/MessageReq.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/MessageReq.java
@@ -28,7 +28,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import org.hibernate.validator.constraints.Length;
import top.charles7c.continew.admin.common.enums.MessageTypeEnum;
-import top.charles7c.continew.starter.extension.crud.base.BaseReq;
+import top.charles7c.continew.starter.extension.crud.model.req.BaseReq;
/**
* 创建消息信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/OptionReq.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/OptionReq.java
index adaaa70c..a81d1e70 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/OptionReq.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/OptionReq.java
@@ -26,7 +26,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import org.hibernate.validator.constraints.Length;
-import top.charles7c.continew.starter.extension.crud.base.BaseReq;
+import top.charles7c.continew.starter.extension.crud.model.req.BaseReq;
/**
* 修改参数信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/RoleReq.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/RoleReq.java
index 2e771e2e..28bc7289 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/RoleReq.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/RoleReq.java
@@ -33,7 +33,7 @@ import org.hibernate.validator.constraints.Length;
import top.charles7c.continew.admin.common.constant.RegexConstants;
import top.charles7c.continew.admin.common.enums.DataScopeEnum;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
-import top.charles7c.continew.starter.extension.crud.base.BaseReq;
+import top.charles7c.continew.starter.extension.crud.model.req.BaseReq;
/**
* 创建或修改角色信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/StorageReq.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/StorageReq.java
index 0a44c1b2..1fb5088f 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/StorageReq.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/StorageReq.java
@@ -29,7 +29,7 @@ import org.hibernate.validator.constraints.Length;
import top.charles7c.continew.admin.common.constant.RegexConstants;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
import top.charles7c.continew.admin.system.enums.StorageTypeEnum;
-import top.charles7c.continew.starter.extension.crud.base.BaseReq;
+import top.charles7c.continew.starter.extension.crud.model.req.BaseReq;
/**
* 创建或修改存储库信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/UserReq.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/UserReq.java
index 26eb2c63..18a3867f 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/UserReq.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/UserReq.java
@@ -16,24 +16,20 @@
package top.charles7c.continew.admin.system.model.req;
-import java.io.Serial;
-import java.util.List;
-
+import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
-
import lombok.Data;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-
import org.hibernate.validator.constraints.Length;
-
import top.charles7c.continew.admin.common.constant.RegexConstants;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
import top.charles7c.continew.admin.common.enums.GenderEnum;
-import top.charles7c.continew.starter.extension.crud.base.BaseReq;
+import top.charles7c.continew.starter.extension.crud.model.req.BaseReq;
+
+import java.io.Serial;
+import java.util.List;
/**
* 创建或修改用户信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/AnnouncementDetailResp.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/AnnouncementDetailResp.java
index 12a059a7..1cd9e023 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/AnnouncementDetailResp.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/AnnouncementDetailResp.java
@@ -16,17 +16,14 @@
package top.charles7c.continew.admin.system.model.resp;
-import java.io.Serial;
-import java.time.LocalDateTime;
-
-import lombok.Data;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseDetailResp;
-import top.charles7c.continew.starter.extension.crud.base.BaseDetailResp;
+import java.io.Serial;
+import java.time.LocalDateTime;
/**
* 公告详情信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/AnnouncementResp.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/AnnouncementResp.java
index dbd997c2..c4fef30c 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/AnnouncementResp.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/AnnouncementResp.java
@@ -24,7 +24,7 @@ import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import top.charles7c.continew.admin.system.enums.AnnouncementStatusEnum;
-import top.charles7c.continew.starter.extension.crud.base.BaseResp;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseResp;
/**
* 公告信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DeptDetailResp.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DeptDetailResp.java
index 9c9321be..0b8d2b3d 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DeptDetailResp.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DeptDetailResp.java
@@ -25,7 +25,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
import top.charles7c.continew.admin.system.service.DeptService;
-import top.charles7c.continew.starter.extension.crud.base.BaseDetailResp;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseDetailResp;
import top.charles7c.continew.starter.extension.crud.converter.ExcelBaseEnumConverter;
import java.io.Serial;
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DeptResp.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DeptResp.java
index 6017d112..dc57dbe7 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DeptResp.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DeptResp.java
@@ -16,15 +16,13 @@
package top.charles7c.continew.admin.system.model.resp;
-import java.io.Serial;
-
-import lombok.Data;
-
import io.swagger.v3.oas.annotations.media.Schema;
-
+import lombok.Data;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
import top.charles7c.continew.starter.extension.crud.annotation.TreeField;
-import top.charles7c.continew.starter.extension.crud.base.BaseResp;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseResp;
+
+import java.io.Serial;
/**
* 部门信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DictDetailResp.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DictDetailResp.java
index a83ec013..5956b25a 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DictDetailResp.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DictDetailResp.java
@@ -22,7 +22,7 @@ import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
-import top.charles7c.continew.starter.extension.crud.base.BaseDetailResp;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseDetailResp;
/**
* 字典详情信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DictItemDetailResp.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DictItemDetailResp.java
index 34606307..8892ca01 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DictItemDetailResp.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DictItemDetailResp.java
@@ -25,7 +25,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
-import top.charles7c.continew.starter.extension.crud.base.BaseDetailResp;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseDetailResp;
/**
* 字典项详情信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DictItemResp.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DictItemResp.java
index 80811f4a..ebaad361 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DictItemResp.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DictItemResp.java
@@ -22,7 +22,7 @@ import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
-import top.charles7c.continew.starter.extension.crud.base.BaseResp;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseResp;
/**
* 字典项信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DictResp.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DictResp.java
index 4afaaa67..dc4b70c3 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DictResp.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/DictResp.java
@@ -22,7 +22,7 @@ import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
-import top.charles7c.continew.starter.extension.crud.base.BaseResp;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseResp;
/**
* 字典信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/FileResp.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/FileResp.java
index 263b0df4..8f808e8b 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/FileResp.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/FileResp.java
@@ -25,7 +25,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import top.charles7c.continew.admin.system.enums.FileTypeEnum;
-import top.charles7c.continew.starter.extension.crud.base.BaseDetailResp;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseDetailResp;
/**
* 文件信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/MenuResp.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/MenuResp.java
index 93189809..753c8c12 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/MenuResp.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/MenuResp.java
@@ -29,7 +29,7 @@ import top.charles7c.continew.starter.extension.crud.converter.ExcelBaseEnumConv
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
import top.charles7c.continew.admin.common.enums.MenuTypeEnum;
import top.charles7c.continew.starter.extension.crud.annotation.TreeField;
-import top.charles7c.continew.starter.extension.crud.base.BaseResp;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseResp;
/**
* 菜单信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/RoleDetailResp.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/RoleDetailResp.java
index f0c6b989..24c9704e 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/RoleDetailResp.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/RoleDetailResp.java
@@ -25,7 +25,7 @@ import lombok.Data;
import top.charles7c.continew.admin.common.constant.ContainerConstants;
import top.charles7c.continew.admin.common.enums.DataScopeEnum;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
-import top.charles7c.continew.starter.extension.crud.base.BaseDetailResp;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseDetailResp;
import top.charles7c.continew.starter.extension.crud.converter.ExcelBaseEnumConverter;
import java.io.Serial;
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/RoleResp.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/RoleResp.java
index 2bd98d6e..2ceef0b8 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/RoleResp.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/RoleResp.java
@@ -24,7 +24,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import top.charles7c.continew.admin.common.enums.DataScopeEnum;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
-import top.charles7c.continew.starter.extension.crud.base.BaseResp;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseResp;
/**
* 角色信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/StorageDetailResp.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/StorageDetailResp.java
index d1fbe513..0d53487e 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/StorageDetailResp.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/StorageDetailResp.java
@@ -28,7 +28,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import top.charles7c.continew.starter.extension.crud.converter.ExcelBaseEnumConverter;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
import top.charles7c.continew.admin.system.enums.StorageTypeEnum;
-import top.charles7c.continew.starter.extension.crud.base.BaseDetailResp;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseDetailResp;
/**
* 存储库详情信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/StorageResp.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/StorageResp.java
index 01d10479..529cab71 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/StorageResp.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/StorageResp.java
@@ -26,7 +26,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
import top.charles7c.continew.admin.system.enums.StorageTypeEnum;
-import top.charles7c.continew.starter.extension.crud.base.BaseResp;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseResp;
/**
* 存储库信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/UserDetailResp.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/UserDetailResp.java
index 296a030b..4e1bd82f 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/UserDetailResp.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/UserDetailResp.java
@@ -29,7 +29,7 @@ import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
import top.charles7c.continew.admin.common.enums.GenderEnum;
import top.charles7c.continew.admin.common.util.helper.LoginHelper;
import top.charles7c.continew.admin.system.service.DeptService;
-import top.charles7c.continew.starter.extension.crud.base.BaseDetailResp;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseDetailResp;
import top.charles7c.continew.starter.extension.crud.converter.ExcelBaseEnumConverter;
import java.io.Serial;
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/UserResp.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/UserResp.java
index 69c56ad2..7a1ac5a1 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/UserResp.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/UserResp.java
@@ -28,7 +28,7 @@ import cn.hutool.core.util.DesensitizedUtil;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
import top.charles7c.continew.admin.common.enums.GenderEnum;
import top.charles7c.continew.admin.common.util.helper.LoginHelper;
-import top.charles7c.continew.starter.extension.crud.base.BaseResp;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseResp;
/**
* 用户信息
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/AnnouncementService.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/AnnouncementService.java
index 2f790468..fd3592e0 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/AnnouncementService.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/AnnouncementService.java
@@ -22,8 +22,8 @@ import top.charles7c.continew.admin.system.model.req.AnnouncementReq;
import top.charles7c.continew.admin.system.model.resp.AnnouncementDetailResp;
import top.charles7c.continew.admin.system.model.resp.AnnouncementResp;
import top.charles7c.continew.admin.system.model.resp.DashboardAnnouncementResp;
-import top.charles7c.continew.starter.extension.crud.base.BaseService;
-import top.charles7c.continew.starter.extension.crud.base.IService;
+import top.charles7c.continew.starter.extension.crud.service.BaseService;
+import top.charles7c.continew.starter.extension.crud.service.IService;
import java.util.List;
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/DeptService.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/DeptService.java
index 37d135aa..15c2afee 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/DeptService.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/DeptService.java
@@ -21,8 +21,8 @@ import top.charles7c.continew.admin.system.model.query.DeptQuery;
import top.charles7c.continew.admin.system.model.req.DeptReq;
import top.charles7c.continew.admin.system.model.resp.DeptDetailResp;
import top.charles7c.continew.admin.system.model.resp.DeptResp;
-import top.charles7c.continew.starter.extension.crud.base.BaseService;
-import top.charles7c.continew.starter.extension.crud.base.IService;
+import top.charles7c.continew.starter.extension.crud.service.BaseService;
+import top.charles7c.continew.starter.extension.crud.service.IService;
/**
* 部门业务接口
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/DictItemService.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/DictItemService.java
index 9a36a6c0..fb612104 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/DictItemService.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/DictItemService.java
@@ -22,8 +22,8 @@ import top.charles7c.continew.admin.system.model.query.DictItemQuery;
import top.charles7c.continew.admin.system.model.req.DictItemReq;
import top.charles7c.continew.admin.system.model.resp.DictItemDetailResp;
import top.charles7c.continew.admin.system.model.resp.DictItemResp;
-import top.charles7c.continew.starter.extension.crud.base.BaseService;
-import top.charles7c.continew.starter.extension.crud.base.IService;
+import top.charles7c.continew.starter.extension.crud.service.BaseService;
+import top.charles7c.continew.starter.extension.crud.service.IService;
import java.util.List;
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/DictService.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/DictService.java
index 8ce5da9a..81b37c9b 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/DictService.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/DictService.java
@@ -21,8 +21,8 @@ import top.charles7c.continew.admin.system.model.query.DictQuery;
import top.charles7c.continew.admin.system.model.req.DictReq;
import top.charles7c.continew.admin.system.model.resp.DictDetailResp;
import top.charles7c.continew.admin.system.model.resp.DictResp;
-import top.charles7c.continew.starter.extension.crud.base.BaseService;
-import top.charles7c.continew.starter.extension.crud.base.IService;
+import top.charles7c.continew.starter.extension.crud.service.BaseService;
+import top.charles7c.continew.starter.extension.crud.service.IService;
/**
* 字典业务接口
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/FileService.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/FileService.java
index a33c125e..3d6ebfd6 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/FileService.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/FileService.java
@@ -22,8 +22,8 @@ import top.charles7c.continew.admin.system.model.entity.FileDO;
import top.charles7c.continew.admin.system.model.query.FileQuery;
import top.charles7c.continew.admin.system.model.req.FileReq;
import top.charles7c.continew.admin.system.model.resp.FileResp;
-import top.charles7c.continew.starter.extension.crud.base.BaseService;
-import top.charles7c.continew.starter.extension.crud.base.IService;
+import top.charles7c.continew.starter.extension.crud.service.BaseService;
+import top.charles7c.continew.starter.extension.crud.service.IService;
import java.util.List;
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/MenuService.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/MenuService.java
index ae153598..a54f36d5 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/MenuService.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/MenuService.java
@@ -20,8 +20,8 @@ import top.charles7c.continew.admin.system.model.entity.MenuDO;
import top.charles7c.continew.admin.system.model.query.MenuQuery;
import top.charles7c.continew.admin.system.model.req.MenuReq;
import top.charles7c.continew.admin.system.model.resp.MenuResp;
-import top.charles7c.continew.starter.extension.crud.base.BaseService;
-import top.charles7c.continew.starter.extension.crud.base.IService;
+import top.charles7c.continew.starter.extension.crud.service.BaseService;
+import top.charles7c.continew.starter.extension.crud.service.IService;
import java.util.List;
import java.util.Set;
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/RoleService.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/RoleService.java
index 637d42c6..c8e69bcf 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/RoleService.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/RoleService.java
@@ -23,8 +23,8 @@ import top.charles7c.continew.admin.system.model.query.RoleQuery;
import top.charles7c.continew.admin.system.model.req.RoleReq;
import top.charles7c.continew.admin.system.model.resp.RoleDetailResp;
import top.charles7c.continew.admin.system.model.resp.RoleResp;
-import top.charles7c.continew.starter.extension.crud.base.BaseService;
-import top.charles7c.continew.starter.extension.crud.base.IService;
+import top.charles7c.continew.starter.extension.crud.service.BaseService;
+import top.charles7c.continew.starter.extension.crud.service.IService;
import java.util.List;
import java.util.Set;
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/StorageService.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/StorageService.java
index 1e8189ff..4b33fd82 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/StorageService.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/StorageService.java
@@ -21,8 +21,8 @@ import top.charles7c.continew.admin.system.model.query.StorageQuery;
import top.charles7c.continew.admin.system.model.req.StorageReq;
import top.charles7c.continew.admin.system.model.resp.StorageDetailResp;
import top.charles7c.continew.admin.system.model.resp.StorageResp;
-import top.charles7c.continew.starter.extension.crud.base.BaseService;
-import top.charles7c.continew.starter.extension.crud.base.IService;
+import top.charles7c.continew.starter.extension.crud.service.BaseService;
+import top.charles7c.continew.starter.extension.crud.service.IService;
/**
* 存储库业务接口
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/UserService.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/UserService.java
index 80d40d52..fbe01841 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/UserService.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/UserService.java
@@ -24,8 +24,8 @@ import top.charles7c.continew.admin.system.model.req.UserReq;
import top.charles7c.continew.admin.system.model.req.UserRoleUpdateReq;
import top.charles7c.continew.admin.system.model.resp.UserDetailResp;
import top.charles7c.continew.admin.system.model.resp.UserResp;
-import top.charles7c.continew.starter.extension.crud.base.BaseService;
-import top.charles7c.continew.starter.extension.crud.base.IService;
+import top.charles7c.continew.starter.extension.crud.service.BaseService;
+import top.charles7c.continew.starter.extension.crud.service.IService;
import java.util.List;
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/AnnouncementServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/AnnouncementServiceImpl.java
index 962e446e..6af10330 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/AnnouncementServiceImpl.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/AnnouncementServiceImpl.java
@@ -30,7 +30,7 @@ import top.charles7c.continew.admin.system.model.resp.AnnouncementDetailResp;
import top.charles7c.continew.admin.system.model.resp.AnnouncementResp;
import top.charles7c.continew.admin.system.model.resp.DashboardAnnouncementResp;
import top.charles7c.continew.admin.system.service.AnnouncementService;
-import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl;
+import top.charles7c.continew.starter.extension.crud.service.impl.BaseServiceImpl;
/**
* 公告业务实现
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DeptServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DeptServiceImpl.java
index 67862224..5d7a42d3 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DeptServiceImpl.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DeptServiceImpl.java
@@ -31,7 +31,7 @@ import top.charles7c.continew.admin.system.service.DeptService;
import top.charles7c.continew.admin.system.service.RoleDeptService;
import top.charles7c.continew.admin.system.service.UserService;
import top.charles7c.continew.starter.core.util.validate.CheckUtils;
-import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl;
+import top.charles7c.continew.starter.extension.crud.service.impl.BaseServiceImpl;
import java.util.ArrayList;
import java.util.List;
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DictItemServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DictItemServiceImpl.java
index 853cedae..a02207cd 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DictItemServiceImpl.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DictItemServiceImpl.java
@@ -27,7 +27,7 @@ import top.charles7c.continew.admin.system.model.resp.DictItemDetailResp;
import top.charles7c.continew.admin.system.model.resp.DictItemResp;
import top.charles7c.continew.admin.system.service.DictItemService;
import top.charles7c.continew.starter.core.util.validate.CheckUtils;
-import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl;
+import top.charles7c.continew.starter.extension.crud.service.impl.BaseServiceImpl;
import top.charles7c.continew.starter.extension.crud.model.query.SortQuery;
import java.util.List;
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DictServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DictServiceImpl.java
index fef3a4e8..492d160f 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DictServiceImpl.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DictServiceImpl.java
@@ -29,7 +29,7 @@ import top.charles7c.continew.admin.system.model.resp.DictResp;
import top.charles7c.continew.admin.system.service.DictItemService;
import top.charles7c.continew.admin.system.service.DictService;
import top.charles7c.continew.starter.core.util.validate.CheckUtils;
-import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl;
+import top.charles7c.continew.starter.extension.crud.service.impl.BaseServiceImpl;
import top.charles7c.continew.starter.extension.crud.model.query.SortQuery;
import top.charles7c.continew.starter.file.excel.util.ExcelUtils;
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/FileServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/FileServiceImpl.java
index 8c581a96..e2c4ff2c 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/FileServiceImpl.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/FileServiceImpl.java
@@ -39,7 +39,7 @@ import top.charles7c.continew.admin.system.service.StorageService;
import top.charles7c.continew.starter.core.constant.StringConstants;
import top.charles7c.continew.starter.core.util.URLUtils;
import top.charles7c.continew.starter.core.util.validate.CheckUtils;
-import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl;
+import top.charles7c.continew.starter.extension.crud.service.impl.BaseServiceImpl;
import java.util.List;
import java.util.Map;
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/MenuServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/MenuServiceImpl.java
index 4a372aa0..c6461962 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/MenuServiceImpl.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/MenuServiceImpl.java
@@ -31,7 +31,7 @@ import top.charles7c.continew.admin.system.model.req.MenuReq;
import top.charles7c.continew.admin.system.model.resp.MenuResp;
import top.charles7c.continew.admin.system.service.MenuService;
import top.charles7c.continew.starter.core.util.validate.CheckUtils;
-import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl;
+import top.charles7c.continew.starter.extension.crud.service.impl.BaseServiceImpl;
import java.util.List;
import java.util.Set;
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleServiceImpl.java
index 18a9fa35..0b9bb72e 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleServiceImpl.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleServiceImpl.java
@@ -39,7 +39,7 @@ import top.charles7c.continew.admin.system.model.resp.RoleDetailResp;
import top.charles7c.continew.admin.system.model.resp.RoleResp;
import top.charles7c.continew.admin.system.service.*;
import top.charles7c.continew.starter.core.util.validate.CheckUtils;
-import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl;
+import top.charles7c.continew.starter.extension.crud.service.impl.BaseServiceImpl;
import java.util.*;
import java.util.stream.Collectors;
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/StorageServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/StorageServiceImpl.java
index 41895c8e..7804b5ec 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/StorageServiceImpl.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/StorageServiceImpl.java
@@ -41,7 +41,7 @@ import top.charles7c.continew.starter.core.constant.StringConstants;
import top.charles7c.continew.starter.core.util.URLUtils;
import top.charles7c.continew.starter.core.util.validate.CheckUtils;
import top.charles7c.continew.starter.core.util.validate.ValidationUtils;
-import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl;
+import top.charles7c.continew.starter.extension.crud.service.impl.BaseServiceImpl;
import top.charles7c.continew.starter.web.util.SpringWebUtils;
import java.util.Collections;
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java
index da0300c3..12f99b7c 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java
@@ -50,8 +50,8 @@ import top.charles7c.continew.admin.system.service.UserRoleService;
import top.charles7c.continew.admin.system.service.UserService;
import top.charles7c.continew.starter.core.constant.StringConstants;
import top.charles7c.continew.starter.core.util.validate.CheckUtils;
-import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl;
-import top.charles7c.continew.starter.extension.crud.base.CommonUserService;
+import top.charles7c.continew.starter.extension.crud.service.impl.BaseServiceImpl;
+import top.charles7c.continew.starter.extension.crud.service.CommonUserService;
import java.time.LocalDateTime;
import java.util.Collection;
diff --git a/continew-admin-tool/src/main/resources/templates/generator/Controller.ftl b/continew-admin-tool/src/main/resources/templates/generator/Controller.ftl
index 18e82a65..b46ed068 100644
--- a/continew-admin-tool/src/main/resources/templates/generator/Controller.ftl
+++ b/continew-admin-tool/src/main/resources/templates/generator/Controller.ftl
@@ -7,7 +7,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.*;
import top.charles7c.continew.starter.extension.crud.annotation.CrudRequestMapping;
-import top.charles7c.continew.starter.extension.crud.base.BaseController;
+import top.charles7c.continew.starter.extension.crud.controller.BaseController;
import ${packageName}.model.query.${classNamePrefix}Query;
import ${packageName}.model.req.${classNamePrefix}Req;
import ${packageName}.model.resp.${classNamePrefix}DetailResp;
diff --git a/continew-admin-tool/src/main/resources/templates/generator/DetailResp.ftl b/continew-admin-tool/src/main/resources/templates/generator/DetailResp.ftl
index b54543c7..e9ad9942 100644
--- a/continew-admin-tool/src/main/resources/templates/generator/DetailResp.ftl
+++ b/continew-admin-tool/src/main/resources/templates/generator/DetailResp.ftl
@@ -15,7 +15,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
-import top.charles7c.continew.starter.extension.crud.base.BaseDetailResp;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseDetailResp;
/**
* ${businessName}详情信息
diff --git a/continew-admin-tool/src/main/resources/templates/generator/Entity.ftl b/continew-admin-tool/src/main/resources/templates/generator/Entity.ftl
index 84878650..6c571b20 100644
--- a/continew-admin-tool/src/main/resources/templates/generator/Entity.ftl
+++ b/continew-admin-tool/src/main/resources/templates/generator/Entity.ftl
@@ -12,7 +12,7 @@ import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableName;
-import top.charles7c.continew.starter.extension.crud.base.BaseDO;
+import top.charles7c.continew.starter.extension.crud.model.entity.BaseDO;
/**
* ${businessName}实体
diff --git a/continew-admin-tool/src/main/resources/templates/generator/Req.ftl b/continew-admin-tool/src/main/resources/templates/generator/Req.ftl
index bd0fbddd..ad8261c0 100644
--- a/continew-admin-tool/src/main/resources/templates/generator/Req.ftl
+++ b/continew-admin-tool/src/main/resources/templates/generator/Req.ftl
@@ -18,7 +18,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import org.hibernate.validator.constraints.Length;
-import top.charles7c.continew.starter.extension.crud.base.BaseReq;
+import top.charles7c.continew.starter.extension.crud.model.req.BaseReq;
/**
* 创建或修改${businessName}信息
diff --git a/continew-admin-tool/src/main/resources/templates/generator/Resp.ftl b/continew-admin-tool/src/main/resources/templates/generator/Resp.ftl
index 4203f7b3..cdd17e68 100644
--- a/continew-admin-tool/src/main/resources/templates/generator/Resp.ftl
+++ b/continew-admin-tool/src/main/resources/templates/generator/Resp.ftl
@@ -12,7 +12,7 @@ import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
-import top.charles7c.continew.starter.extension.crud.base.BaseResp;
+import top.charles7c.continew.starter.extension.crud.model.resp.BaseResp;
/**
* ${businessName}信息
diff --git a/continew-admin-tool/src/main/resources/templates/generator/Service.ftl b/continew-admin-tool/src/main/resources/templates/generator/Service.ftl
index 47299228..4cdca20b 100644
--- a/continew-admin-tool/src/main/resources/templates/generator/Service.ftl
+++ b/continew-admin-tool/src/main/resources/templates/generator/Service.ftl
@@ -1,6 +1,6 @@
package ${packageName}.${subPackageName};
-import top.charles7c.continew.starter.extension.crud.base.BaseService;
+import top.charles7c.continew.starter.extension.crud.service.BaseService;
import ${packageName}.model.query.${classNamePrefix}Query;
import ${packageName}.model.req.${classNamePrefix}Req;
import ${packageName}.model.resp.${classNamePrefix}DetailResp;
diff --git a/continew-admin-tool/src/main/resources/templates/generator/ServiceImpl.ftl b/continew-admin-tool/src/main/resources/templates/generator/ServiceImpl.ftl
index 80f50e26..bd5e0a40 100644
--- a/continew-admin-tool/src/main/resources/templates/generator/ServiceImpl.ftl
+++ b/continew-admin-tool/src/main/resources/templates/generator/ServiceImpl.ftl
@@ -4,7 +4,7 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
-import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl;
+import top.charles7c.continew.starter.extension.crud.service.impl.BaseServiceImpl;
import ${packageName}.mapper.${classNamePrefix}Mapper;
import ${packageName}.model.entity.${classNamePrefix}DO;
import ${packageName}.model.query.${classNamePrefix}Query;
diff --git a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/AnnouncementController.java b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/AnnouncementController.java
index 291c4a6c..e2b61dff 100644
--- a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/AnnouncementController.java
+++ b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/AnnouncementController.java
@@ -32,8 +32,8 @@ import top.charles7c.continew.admin.system.model.resp.AnnouncementResp;
import top.charles7c.continew.admin.system.service.AnnouncementService;
import top.charles7c.continew.starter.core.util.validate.ValidationUtils;
import top.charles7c.continew.starter.extension.crud.annotation.CrudRequestMapping;
-import top.charles7c.continew.starter.extension.crud.base.BaseController;
-import top.charles7c.continew.starter.extension.crud.base.ValidateGroup;
+import top.charles7c.continew.starter.extension.crud.controller.BaseController;
+import top.charles7c.continew.starter.extension.crud.util.ValidateGroup;
import top.charles7c.continew.starter.web.model.R;
/**
diff --git a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/DeptController.java b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/DeptController.java
index 159c5218..412ba53c 100644
--- a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/DeptController.java
+++ b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/DeptController.java
@@ -26,7 +26,7 @@ import top.charles7c.continew.admin.system.model.resp.DeptDetailResp;
import top.charles7c.continew.admin.system.model.resp.DeptResp;
import top.charles7c.continew.admin.system.service.DeptService;
import top.charles7c.continew.starter.extension.crud.annotation.CrudRequestMapping;
-import top.charles7c.continew.starter.extension.crud.base.BaseController;
+import top.charles7c.continew.starter.extension.crud.controller.BaseController;
import top.charles7c.continew.starter.extension.crud.enums.Api;
/**
diff --git a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/DictController.java b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/DictController.java
index 127eceeb..b872b9ab 100644
--- a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/DictController.java
+++ b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/DictController.java
@@ -26,7 +26,7 @@ import top.charles7c.continew.admin.system.model.resp.DictDetailResp;
import top.charles7c.continew.admin.system.model.resp.DictResp;
import top.charles7c.continew.admin.system.service.DictService;
import top.charles7c.continew.starter.extension.crud.annotation.CrudRequestMapping;
-import top.charles7c.continew.starter.extension.crud.base.BaseController;
+import top.charles7c.continew.starter.extension.crud.controller.BaseController;
/**
* 字典管理 API
diff --git a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/DictItemController.java b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/DictItemController.java
index d84915cf..f163adcf 100644
--- a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/DictItemController.java
+++ b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/DictItemController.java
@@ -26,7 +26,7 @@ import top.charles7c.continew.admin.system.model.resp.DictItemDetailResp;
import top.charles7c.continew.admin.system.model.resp.DictItemResp;
import top.charles7c.continew.admin.system.service.DictItemService;
import top.charles7c.continew.starter.extension.crud.annotation.CrudRequestMapping;
-import top.charles7c.continew.starter.extension.crud.base.BaseController;
+import top.charles7c.continew.starter.extension.crud.controller.BaseController;
import top.charles7c.continew.starter.extension.crud.enums.Api;
/**
diff --git a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/FileController.java b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/FileController.java
index 2176855f..d3030cd6 100644
--- a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/FileController.java
+++ b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/FileController.java
@@ -25,7 +25,7 @@ import top.charles7c.continew.admin.system.model.req.FileReq;
import top.charles7c.continew.admin.system.model.resp.FileResp;
import top.charles7c.continew.admin.system.service.FileService;
import top.charles7c.continew.starter.extension.crud.annotation.CrudRequestMapping;
-import top.charles7c.continew.starter.extension.crud.base.BaseController;
+import top.charles7c.continew.starter.extension.crud.controller.BaseController;
import top.charles7c.continew.starter.extension.crud.enums.Api;
/**
diff --git a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/MenuController.java b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/MenuController.java
index b5ebf2c8..b5558f8a 100644
--- a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/MenuController.java
+++ b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/MenuController.java
@@ -16,16 +16,13 @@
package top.charles7c.continew.admin.webapi.system;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.util.ObjectUtil;
import io.swagger.v3.oas.annotations.tags.Tag;
-
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
-
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import cn.hutool.core.util.ObjectUtil;
-
import top.charles7c.continew.admin.system.model.query.MenuQuery;
import top.charles7c.continew.admin.system.model.req.MenuReq;
import top.charles7c.continew.admin.system.model.resp.MenuResp;
@@ -33,9 +30,9 @@ import top.charles7c.continew.admin.system.service.MenuService;
import top.charles7c.continew.starter.core.util.URLUtils;
import top.charles7c.continew.starter.core.util.validate.ValidationUtils;
import top.charles7c.continew.starter.extension.crud.annotation.CrudRequestMapping;
-import top.charles7c.continew.starter.extension.crud.base.BaseController;
-import top.charles7c.continew.starter.extension.crud.base.ValidateGroup;
+import top.charles7c.continew.starter.extension.crud.controller.BaseController;
import top.charles7c.continew.starter.extension.crud.enums.Api;
+import top.charles7c.continew.starter.extension.crud.util.ValidateGroup;
import top.charles7c.continew.starter.web.model.R;
/**
diff --git a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/RoleController.java b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/RoleController.java
index 3da81c81..46120717 100644
--- a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/RoleController.java
+++ b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/RoleController.java
@@ -26,7 +26,7 @@ import top.charles7c.continew.admin.system.model.resp.RoleDetailResp;
import top.charles7c.continew.admin.system.model.resp.RoleResp;
import top.charles7c.continew.admin.system.service.RoleService;
import top.charles7c.continew.starter.extension.crud.annotation.CrudRequestMapping;
-import top.charles7c.continew.starter.extension.crud.base.BaseController;
+import top.charles7c.continew.starter.extension.crud.controller.BaseController;
/**
* 角色管理 API
diff --git a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/StorageController.java b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/StorageController.java
index 477da733..11c5e7c9 100644
--- a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/StorageController.java
+++ b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/StorageController.java
@@ -26,7 +26,7 @@ import top.charles7c.continew.admin.system.model.resp.StorageDetailResp;
import top.charles7c.continew.admin.system.model.resp.StorageResp;
import top.charles7c.continew.admin.system.service.StorageService;
import top.charles7c.continew.starter.extension.crud.annotation.CrudRequestMapping;
-import top.charles7c.continew.starter.extension.crud.base.BaseController;
+import top.charles7c.continew.starter.extension.crud.controller.BaseController;
/**
* 存储库管理 API
diff --git a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/UserController.java b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/UserController.java
index 6bdb8dd5..35416124 100644
--- a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/UserController.java
+++ b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/UserController.java
@@ -37,8 +37,8 @@ import top.charles7c.continew.admin.system.model.resp.UserDetailResp;
import top.charles7c.continew.admin.system.model.resp.UserResp;
import top.charles7c.continew.admin.system.service.UserService;
import top.charles7c.continew.starter.extension.crud.annotation.CrudRequestMapping;
-import top.charles7c.continew.starter.extension.crud.base.BaseController;
-import top.charles7c.continew.starter.extension.crud.base.ValidateGroup;
+import top.charles7c.continew.starter.extension.crud.controller.BaseController;
+import top.charles7c.continew.starter.extension.crud.util.ValidateGroup;
import top.charles7c.continew.starter.web.model.R;
/**
diff --git a/continew-admin-webapi/src/main/resources/config/application-dev.yml b/continew-admin-webapi/src/main/resources/config/application-dev.yml
index 804ae887..e574cfe0 100644
--- a/continew-admin-webapi/src/main/resources/config/application-dev.yml
+++ b/continew-admin-webapi/src/main/resources/config/application-dev.yml
@@ -222,10 +222,10 @@ sa-token.extension:
- /error
# 静态资源
- /*.html
- - /**/*.html
- - /**/*.css
- - /**/*.js
- - /webSocket/**
+ - /*/*.html
+ - /*/*.css
+ - /*/*.js
+ - /webSocket/*
# 接口文档相关资源
- /favicon.ico
- /doc.html
@@ -236,18 +236,9 @@ sa-token.extension:
# 本地存储资源
- /file/**
---- ### 文件上传配置
-spring.servlet:
- multipart:
- enabled: true
- # 单文件上传大小限制
- max-file-size: 10MB
- # 单次总上传文件大小限制
- max-request-size: 20MB
-
--- ### 密码编码器配置
-continew-starter:
- password-encoder:
+continew-starter.security:
+ password:
enabled: true
# BCryptPasswordEncoder
encoding-id: bcrypt
@@ -256,3 +247,12 @@ continew-starter:
rsa:
# 私钥
privateKey: MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAznV2Bi0zIX61NC3zSx8U6lJXbtru325pRV4Wt0aJXGxy6LMTsfxIye1ip+f2WnxrkYfk/X8YZ6FWNQPaAX/iRwIDAQABAkEAk/VcAusrpIqA5Ac2P5Tj0VX3cOuXmyouaVcXonr7f+6y2YTjLQuAnkcfKKocQI/juIRQBFQIqqW/m1nmz1wGeQIhAO8XaA/KxzOIgU0l/4lm0A2Wne6RokJ9HLs1YpOzIUmVAiEA3Q9DQrpAlIuiT1yWAGSxA9RxcjUM/1kdVLTkv0avXWsCIE0X8woEjK7lOSwzMG6RpEx9YHdopjViOj1zPVH61KTxAiBmv/dlhqkJ4rV46fIXELZur0pj6WC3N7a4brR8a+CLLQIhAMQyerWl2cPNVtE/8tkziHKbwW3ZUiBXU24wFxedT9iV
+
+--- ### 文件上传配置
+spring.servlet:
+ multipart:
+ enabled: true
+ # 单文件上传大小限制
+ max-file-size: 10MB
+ # 单次总上传文件大小限制
+ max-request-size: 20MB
\ No newline at end of file
diff --git a/continew-admin-webapi/src/main/resources/config/application-prod.yml b/continew-admin-webapi/src/main/resources/config/application-prod.yml
index 6272aedb..04fd1563 100644
--- a/continew-admin-webapi/src/main/resources/config/application-prod.yml
+++ b/continew-admin-webapi/src/main/resources/config/application-prod.yml
@@ -229,25 +229,16 @@ sa-token.extension:
- /error
# 静态资源
- /*.html
- - /**/*.html
- - /**/*.css
- - /**/*.js
+ - /*/*.html
+ - /*/*.css
+ - /*/*.js
- /webSocket/**
# 本地存储资源
- /file/**
---- ### 文件上传配置
-spring.servlet:
- multipart:
- enabled: true
- # 单文件上传大小限制
- max-file-size: 10MB
- # 单次总上传文件大小限制
- max-request-size: 20MB
-
--- ### 密码编码器配置
-continew-starter:
- password-encoder:
+continew-starter.security:
+ password:
enabled: true
# BCryptPasswordEncoder
encoding-id: bcrypt
@@ -256,3 +247,12 @@ continew-starter:
rsa:
# 私钥
privateKey: MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAznV2Bi0zIX61NC3zSx8U6lJXbtru325pRV4Wt0aJXGxy6LMTsfxIye1ip+f2WnxrkYfk/X8YZ6FWNQPaAX/iRwIDAQABAkEAk/VcAusrpIqA5Ac2P5Tj0VX3cOuXmyouaVcXonr7f+6y2YTjLQuAnkcfKKocQI/juIRQBFQIqqW/m1nmz1wGeQIhAO8XaA/KxzOIgU0l/4lm0A2Wne6RokJ9HLs1YpOzIUmVAiEA3Q9DQrpAlIuiT1yWAGSxA9RxcjUM/1kdVLTkv0avXWsCIE0X8woEjK7lOSwzMG6RpEx9YHdopjViOj1zPVH61KTxAiBmv/dlhqkJ4rV46fIXELZur0pj6WC3N7a4brR8a+CLLQIhAMQyerWl2cPNVtE/8tkziHKbwW3ZUiBXU24wFxedT9iV
+
+--- ### 文件上传配置
+spring.servlet:
+ multipart:
+ enabled: true
+ # 单文件上传大小限制
+ max-file-size: 10MB
+ # 单次总上传文件大小限制
+ max-request-size: 20MB
\ No newline at end of file
diff --git a/continew-admin-webapi/src/main/resources/config/application.yml b/continew-admin-webapi/src/main/resources/config/application.yml
index b1011776..fd7061f2 100644
--- a/continew-admin-webapi/src/main/resources/config/application.yml
+++ b/continew-admin-webapi/src/main/resources/config/application.yml
@@ -37,11 +37,17 @@ continew-starter.log:
## 项目日志配置
logging:
config: classpath:logback-spring.xml
-## TLog 链路追踪配置
-tlog:
- enable-invoke-time-print: false
- pattern: '[$spanId][$traceId]'
- mdc-enable: false
+
+--- ### 链路跟踪配置
+continew-starter.web:
+ trace:
+ enabled: true
+ header-name: traceId
+ ## TLog 配置
+ tlog:
+ enable-invoke-time-print: false
+ pattern: '[$spanId][$traceId]'
+ mdc-enable: false
--- ### 线程池配置
continew-starter.thread-pool: