build: continew-starter 2.13.0 => 2.13.1

1.DataPermissionUserContextProvider 相关命名调整,以避免和 Admin 内类名冲突
DataPermissionUserContextProvider => DataPermissionUserDataProvider
UserContext => UserData
RoleContext => RoleData
2.引入 crane4j 依赖及填充处理(Starter 为了扩展性,移除了此依赖及相关处理)
3.API 替换
3.1SpringUtil.getBean(TenantHandler.class) => TenantUtils
3.2JakartaServletUtil.write => ServletUtils.writeJSON
3.3tenantExtensionProperties.isEnabled() => TenantContextHolder.isTenantEnabled()
4.Starter 内部修复
4.1FastExcel POI 版本冲突导致的导出报错
4.2EnumValue 校验支持了 BaseEnum
This commit is contained in:
2025-07-17 22:29:09 +08:00
parent 7e9a950694
commit 6136797588
16 changed files with 72 additions and 59 deletions

View File

@@ -55,6 +55,12 @@
<artifactId>postgresql</artifactId>
</dependency>-->
<!-- Crane4j基于注解的用于完成一切 “根据 A 的 key 值拿到 B再把 B 的属性映射到 A” 这类需求的字段填充框架) -->
<dependency>
<groupId>cn.crane4j</groupId>
<artifactId>crane4j-spring-boot-starter</artifactId>
</dependency>
<!-- ContiNew Starter JSON 模块 - Jackson -->
<dependency>
<groupId>top.continew.starter</groupId>

View File

@@ -16,6 +16,8 @@
package top.continew.admin.common.base.service;
import cn.crane4j.core.support.OperateTemplate;
import cn.hutool.extra.spring.SpringUtil;
import top.continew.starter.data.mapper.BaseMapper;
import top.continew.starter.extension.crud.model.entity.BaseIdDO;
import top.continew.starter.extension.crud.service.CrudServiceImpl;
@@ -38,4 +40,18 @@ import top.continew.starter.extension.crud.service.CrudServiceImpl;
* @since 2024/12/6 20:30
*/
public class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseIdDO, L, D, Q, C> extends CrudServiceImpl<M, T, L, D, Q, C> implements BaseService<L, D, Q, C> {
/**
* 填充数据
*
* @param obj 待填充信息
*/
@Override
protected void fill(Object obj) {
if (obj == null) {
return;
}
OperateTemplate operateTemplate = SpringUtil.getBean(OperateTemplate.class);
operateTemplate.execute(obj);
}
}

View File

@@ -35,11 +35,6 @@ import java.util.List;
@ConfigurationProperties(prefix = PropertiesConstants.TENANT)
public class TenantExtensionProperties {
/**
* 是否启用
*/
private boolean enabled;
/**
* 请求头中租户编码键名
*/

View File

@@ -17,21 +17,22 @@
package top.continew.admin.common.config.mybatis;
import cn.hutool.core.convert.Convert;
import top.continew.admin.common.context.UserContext;
import top.continew.admin.common.context.UserContextHolder;
import top.continew.starter.extension.datapermission.enums.DataScope;
import top.continew.starter.extension.datapermission.filter.DataPermissionUserContextProvider;
import top.continew.starter.extension.datapermission.model.RoleContext;
import top.continew.starter.extension.datapermission.model.UserContext;
import top.continew.starter.extension.datapermission.filter.DataPermissionUserDataProvider;
import top.continew.starter.extension.datapermission.model.RoleData;
import top.continew.starter.extension.datapermission.model.UserData;
import java.util.stream.Collectors;
/**
* 数据权限用户上下文提供者
* 数据权限用户数据提供者
*
* @author Charles7c
* @since 2023/12/21 21:19
*/
public class DefaultDataPermissionUserContextProvider implements DataPermissionUserContextProvider {
public class DefaultDataPermissionUserDataProvider implements DataPermissionUserDataProvider {
@Override
public boolean isFilter() {
@@ -39,15 +40,15 @@ public class DefaultDataPermissionUserContextProvider implements DataPermissionU
}
@Override
public UserContext getUserContext() {
top.continew.admin.common.context.UserContext context = UserContextHolder.getContext();
UserContext userContext = new UserContext();
userContext.setUserId(Convert.toStr(context.getId()));
userContext.setDeptId(Convert.toStr(context.getDeptId()));
userContext.setRoles(context.getRoles()
public UserData getUserData() {
UserContext userContext = UserContextHolder.getContext();
UserData userData = new UserData();
userData.setUserId(Convert.toStr(userContext.getId()));
userData.setDeptId(Convert.toStr(userContext.getDeptId()));
userData.setRoles(userContext.getRoles()
.stream()
.map(r -> new RoleContext(Convert.toStr(r.getId()), DataScope.valueOf(r.getDataScope().name())))
.map(r -> new RoleData(Convert.toStr(r.getId()), DataScope.valueOf(r.getDataScope().name())))
.collect(Collectors.toSet()));
return userContext;
return userData;
}
}

View File

@@ -21,6 +21,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.password.PasswordEncoder;
import top.continew.starter.extension.datapermission.filter.DataPermissionUserContextProvider;
import top.continew.starter.extension.datapermission.filter.DataPermissionUserDataProvider;
/**
* MyBatis Plus 配置
@@ -40,11 +41,11 @@ public class MybatisPlusConfiguration {
}
/**
* 数据权限用户上下文提供者
* 数据权限用户数据提供者
*/
@Bean
public DataPermissionUserContextProvider dataPermissionUserContextProvider() {
return new DefaultDataPermissionUserContextProvider();
public DataPermissionUserDataProvider dataPermissionUserDataProvider() {
return new DefaultDataPermissionUserDataProvider();
}
/**

View File

@@ -71,10 +71,10 @@ public class RegexConstants {
* </p>
*/
public static final String HTTP_HOST = """
^((?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,}|
(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|
(?:(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|
""";
^((?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,}|
(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|
(?:(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|
""";
private RegexConstants() {
}