更新日志
大约 81 分钟约 24301 字
Changelog
Traces of your evolution, detailed below.
[3.1.7] - 2025-11-06
🚀 Features
- diagnostics: 添加应用程序启动诊断侦听器和上报处理程序,可上报应用启动信息#72
♻️ Code Refactoring
- build: 重构版本管理插件以支持Gradle配置缓存,详见 #73
🔧 Maintenance
- build: 将
Aikero Gradle插件更新到3.2.4
[3.1.6] - 2025-11-04
🐛 Bug Fixes
- auth: 统一客户端标识符从CLIENT_ID改为CLIENT_CODE,更新UacsClient、AccessLogSummaryReporter、DefaultGlobalInterceptor、WebProperties和DefaultAuthTokenInterceptor中的相关头字段,将CLIENT_ID替换为CLIENT_CODE以保持命名一致性。同时优化异常处理,在DefaultAuthTokenInterceptor中传递原始异常信息
🚀 Features
- core: 为 DataResponse 添加 toUnitSuccess 扩展方法,新增泛型扩展方法
toUnitSuccess(),将任意类型数据转换为成功的单元响应,统一处理无需返回数据的成功响应场景,简化 API 响应构建,提高开发效率 - docs: 添加文档同步任务到CI流程并更新相关配置
♻️ Code Refactoring
- test: 将Mockito迁移到Mockk并更新测试依赖,将DictConvertTest.kt中的Mockito框架替换为Mockk,同时更新多个模块的build.gradle.kts文件中的测试依赖配置,统一使用libs版本目录中的依赖项
- test: 重构 DataResponse 测试用例使用循环,将重复测试代码重构为数据驱动测试,使用集合和for循环简化多个数据类型的测试,提高代码可维护性和可读性
📚 Documentation
- docs: blade文档正式迁移至本项目内维护,利用CI同步至
aikero-docs发布
🔧 Maintenance
- build: 升级项目版本至3.1.6
- dependencies: 将 JUnit 依赖项更新到5.12.2版本
[3.1.5] - 2025-10-21
💥 BREAKING CHANGES
- core: 重构 blade-core 相关类名,使名称更加简洁具体。涉及多个核心类的重命名,需要更新相关引用 详见:MIGRATION-to-3.1.5.md
- oplog: 优化字典分类检查提供器的缓存实现,使用 Caffeine 异步刷新策略替代手动缓存管理,默认启用字典检查。可能影响现有的字典检查行为
⚠️ IMPORTANT CHANGES
- all: 支持nacos动态刷新,将配置类从 data class 重构为 class,涉及
AuthProperties、BusinessCodeProperties、OpLogProperties等核心配置类。如果你的代码中使用了这些配置类的copy()方法或解构语法,需要进行相应调整 详见:#70 - core: 删除已废弃的
ApiAnnotationUtil和Types工具类。如果你的代码中仍在使用这些工具类,请迁移到新的替代方案 - core: 重构 DataResponse 的顶层函数和扩展函数,优化 Kotlin 调用方式 统一使用
toSuccess方法替换ok函数。所有使用DataResponse.ok()的地方需要改为使用.toSuccess()扩展方法 详见 #58 - logging-core: 统一日志导入方式修改为扩展函数方式,废弃注解方式使用
@Slf4j注解的类需要改为使用扩展函数方式导入日志 见#64 - build: 升级 Gradle 至 9.1.0,处理废弃的 API(如
org.gradle.api.Project.getDependencyProject())。需要确保构建脚本兼容 Gradle 9.x 请将gradle_home的插件版本升级至3.2.3 - all: 统一使用
@param注解修饰构造函数参数,Kotlin 2.2.0 版本的严格校验。可能需要更新依赖注入相关代码 见#61
🚀 Features
oplog: 添加操作日志消息版本支持,增强日志追踪能力
oplog: 添加调用模式枚举并集成到日志解析器,支持更灵活的日志记录方式
oss: 添加 OSS 路径转换本地测试用例,验证域名去除和添加功能
oss: 支持 MINIO 路径样式端点配置,为 MINIO 存储类型启用路径样式访问,根据存储类型动态选择虚拟主机样式或路径样式 URL 格式
diagnostics: 添加应用启动耗时显示功能,方便性能分析和启动优化
sequence: 添加 Redis 集成测试和配置,验证 Redis 连接和编码生成逻辑
sequence: 添加 JVM 测试套件配置和集成测试文档,完善测试体系
sequence: 清理和重构测试代码,提升测试质量
🐛 Bug Fixes
- oplog: 修复字典子项为空时的空指针异常,提升系统稳定性
- oplog: 将缓存类型从 Cache 更改为 LoadingCache,优化缓存性能
- jackson: 改进 LocalDateTime 反序列化以支持 ISO-8601 格式,增强日期时间处理兼容性
- util: 为分页排序添加决胜条件(id)确保确定性,避免相同时间戳记录的分页重复/遗漏问题。详见 #69
♻️ Code Refactoring
- oplog: 优化字典分类检查提供器实现,迭代方式获取分类避免栈溢出,默认启用字典检查
- oplog: 优化 OpLogParser 代码结构,增强可维护性
- oplog: 优化字典分类检查提供器的缓存实现,使用 Caffeine 异步刷新策略替代手动缓存管理
- oplog: 重新排序 OpLogPayload 字段声明,提升代码可读性
- oplog: 完善异常提示信息,引导用户配置字典
📚 Documentation
- core: 更新 DataResponse API 迁移文档,指导开发者升级
- blade-base: 添加 3.1.5 版本迁移指南文档
- docs: 更新 sequence中 JVM 测试套件设计文档
- docs: 更新 README.md 中的项目版本和依赖信息
🧪 Testing
- core-protocol: 重构失败响应测试用例,提升测试覆盖率
🔧 Maintenance
- dependencies: 添加 Redis 支持的 Testcontainers 依赖
- dependencies: 更新依赖库版本,保持技术栈最新
- build: 升级 Gradle 至 9.1.0 并启用配置缓存,清理测试配置
- web: 删除 web starter 模块的测试配置文件和测试类
- tests: 为多个模块添加 JUnit 测试运行时依赖
[3.1.4] - 2025-07-29
💼 Other
- 更新项目版本至 3.1.4
◀️ Revert
- 重置 changelog 到 main 分支版本
[3.1.2] - 2025-06-25
🚀 Features
- 为徽章脚本添加跨平台兼容支持 修改badges.sh文件,将直接使用sed替换徽章的方式重构为通用的跨平台函数, 该函数能自动检测当前操作系统(macOS/Linux)并执行相应格式的sed命令, 解决了脚本在不同系统上运行时sed命令语法不同的问题。
📚 Documentation
- 全面重构项目README文档内容 - 重写README文档标题和介绍部分 - 新增技术栈说明表格 - 完善项目架构目录结构 - 添加模块详细说明 - 优化快速开始指南 - 补充版本管理任务说明 - 增加贡献指南章节 - 改进文档整体排版和组织结构 本次修改将原本简单的README升级为完整的项目文档,包含了框架介绍、技术栈说明、模块功能、使用指南等全面信息。
⚙️ Miscellaneous Tasks
- (ci) 添加.gitlab-ci.yml文件
[3.1.3] - 2025-07-29
🚀 Features
- (docs) 添加版本徽章自动更新脚本和文档优化 • 新增badges.sh脚本用于自动更新README中的版本徽章 • 重构README文档结构,增加技术栈和模块说明 • 在libs.versions.toml中整理徽章相关版本定义 BREAKING CHANGE: libs.versions.toml文件结构调整,部分版本定义位置变更
- (jimmer) 新增租户ID功能并优化拦截器逻辑 新增租户ID相关实体、过滤器和拦截器,优化CreatorInterceptor和OrganizationIdInterceptor中CurrentUserHolder的调用时机
- (jimmer) 升级jimmer版本至0.9.99 feat(data): 新增Jimmer保存扩展方法
- (collection-utils) 添加条件过滤列表扩展函数 • 新增
filterIf函数用于根据条件动态过滤列表 • 保留原列表当条件为 false 时避免不必要的过滤操作 • 函数签名包含布尔条件参数和谓词过滤逻辑 - (blade-util) 添加事务工具类及依赖 • 在build.gradle.kts中添加spring-tx依赖以支持事务管理 • 新增Transactions工具类,提供事务提交后执行回调的功能 • 简化事务相关操作,提升代码复用性
- (jimmer-starter) 添加租户ID过滤器的系统用户支持 • 在build.gradle.kts中添加blade-auth依赖 • 修改TenantIdFilter.kt以支持系统用户场景 • 移除超级管理员检查,改用UserContextUtil.SYSTEM_USER判断 本次变更主要为租户过滤器增加对系统用户的特殊处理逻辑,同时添加必要的认证模块依赖。
- (DingTalkRobotExecutor) 为上下文信息添加Markdown加粗格式 在DingTalkRobotExecutor中修改上下文信息的展示格式,将键名用**包裹以实现加粗效果,提升消息可读性
- (version-checker) 增强SNAPSHOT版本检查的错误提示风格 • 重构错误信息输出为更醒目的彩色终端格式 • 添加测试用例覆盖不同环境场景 • 改进生产环境检测逻辑的可配置性 该修改使版本检查失败时的提示更直观,同时保持原有功能不变
- (jackson) 优化日期反序列化空值处理 - 增加对输入值的空值检查,返回 null 以避免抛出异常 - 添加类注释以提高代码可读性和维护性
🐛 Bug Fixes
- (blade-file) 修复文件解压缩单元测试文件冲突及清理问题 - 为 ArchiveConcurrencyCrashTest 类中的并发解压缩测试添加 @Disabled 注解 - 更新 decompress 测试,使用随机后缀避免目录冲突 - 添加 ExperimentalPathApi 注解以使用实验性文件路径 API - 优化测试资源清理,自动删除解压缩后的目录
- 改进操作日志解析失败时的错误提示信息 当操作日志解析失败时,新增更详细的错误提示信息,包含以下检查建议: 1. 成功/失败模板是否正确配置 2. Spring EL表达式语法是否正确 3. 引用的变量、方法或函数是否存在 4. 上下文参数是否可访问 这将帮助开发者更快定位和解决日志解析问题
- (jimmer) 允许手动设置 tenantId 字段时跳过拦截
- (tenant-filter) 修复租户ID过滤器未处理超级管理员的情况 • 在TenantIdFilter中添加超级管理员检查逻辑 • 当用户为超级管理员时跳过租户ID过滤条件 • 确保超级管理员可以访问所有租户数据
- (data-permission) 移除权限初始化时的启用检查 • 删除DataPermissions.kt中init方法的enabled条件判断 • 简化权限加载逻辑,直接调用PermissionLoader • 修改后权限初始化将无条件执行
- (gateway) 优化访问日志记录器错误处理和流量控制 - 增加了对错误的处理,避免潜在的 uncaught exceptions - 优化了响应式流的背压处理,添加了 onBackpressureDrop 以防数据生产速度超过消费者
💼 Other
- 更新项目版本至 3.1.3-SNAPSHOT
- 更新项目版本至 3.1.3
🚜 Refactor
- (json-util) 优化 JSON 解析方法 • 使用 Kotlin 扩展方法
readValue<T>替代 Java 原生反射 • 简化泛型参数处理逻辑 • 保持原有异常处理机制不变 (基于 IDEA 提交的代码差异分析,主要修改了Jsons.kt文件的解析逻辑) - (blade-file) 将tika依赖从implementation改为api • 修改blade-file模块的build.gradle.kts文件 • 将libs.bundles.tika的依赖作用域从implementation提升为api • 确保其他模块能访问tika相关功能
📚 Documentation
- (README) 使用反引号包裹项目名称 • 将README中的项目名称"blade"用反引号标记 • 提升文档格式规范性和可读性 • 保持内容描述不变仅调整格式
- (README) 修正gradle配置路径格式 • 将普通文本路径改为代码块格式以提高可读性 • 保持其他内容不变 注:仅修改文档格式,不影响功能
- (README) 修正 Release 版本描述的格式 • 将描述中的 Release 改为代码格式
Release以保持一致性 • 提升文档可读性和格式规范 修改仅涉及文档格式调整,不影响实际功能 - (README) 修改README的文字:发布版本: 将版本号从
-SNAPSHOT更改为正式版本。增加高亮 - (README) 更新项目标题和居中显示 • 将项目标题"Blade Framework"移至居中位置 • 移除多余的空白行 • 保持现有徽章格式不变 修改使项目标题更突出且符合视觉规范
- (README) 添加文档链接和导航部分 • 在README顶部添加完整文档链接 • 补充文档导航部分的功能特性、模块介绍等快速链接 • 保持原有框架描述不变 修改动机:提升文档可访问性,方便用户快速查阅相关资源
⚙️ Miscellaneous Tasks
- 升级Gradle版本至8.14.2并更新相关配置
- (gradle) 更新 gradle 插件版本至 3.0.2-SNAPSHOT
- (gradle-wrapper) 更新Gradle版本至8.14.3
- 更新 gradle-plugin 版本为正式版 3.0.2 将 gradle-plugin 的版本从 3.0.2-SNAPSHOT 更新为正式发布的 3.0.2 版本
- (core-protocol) 清理不必要的类型编译提示
[3.1.2] - 2025-05-20
🚀 Features
- (feign) 添加全局拦截器、优化用户信息中继编码
- (jimmer) 扩展QueryExtensions支持ComplexPageParam分页查询
- (gateway) 添加通用查询参数解码器 - 新增 EncodedSkipGatewayFilterFactory 类,用于解决 Spring Cloud Gateway 的路径参数双重编码问题 - 在 GatewayConfiguration 中添加 encodedSkipGatewayFilterFactory 的 Bean 定义 - 修改 ServerHttpExchangeUtil 类,增加对原始请求 URL 查询参数的记录
- (file) 添加 URI 文件下载和转存功能 #47 - 新增 Uris 工具类,实现 URI 文件下载功能 - 扩展 OssTemplate 类,添加 URI 文件下载和转存方法 - 优化 FileUtil 类,使用 UUID 生成临时文件名 - 更新 ObjectInfo 类,修复 contentLength 字段类型
- (file) 上传时校验文件名
- (web) 添加接口端点上报功能 - 新增 EndpointReportListener 监听应用启动完成事件,进行接口端点上报 - 添加测试用例验证接口端点上报功能
- (auth) 错误信息提示优化
- (util) 为 CompletableFuture 添加异常处理扩展函数 - 新增 exceptionLog() 扩展函数,用于记录异步任务执行过程中的异常信息 - 修改 runAsync 和 callAsync 函数,增加异常处理逻辑 - 优化 runAsyncAndThrow 函数,使用新的异常处理机制
- (auth) 优化日志记录和移除未使用的函数 - 在 DefaultAuthTokenInterceptor 中增加请求路径信息到日志 - 移除 UacsClient 中未使用的 checkLogin 函数
- (gateway) 优化 JWT 认证过滤器,支持更灵活的后置处理
- (security) 添加 HTTP 头拦截功能 - 在 BladeGatewayProperties 中添加 header 属性,用于配置 HTTP 头拦截规则 - 新增 HttpHeaderSecurityFilter 过滤器,实现 HTTP 头拦截功能 - 支持白名单和黑名单配置,采用正则匹配方式进行拦截
- (web) 优化端点信息解析逻辑
- (web) 客户端断开连接异常处理和错误事件发布 - 增加 AsyncRequestNotUsableException 异常处理,用于处理客户端断开连接的情况 - 使用 Spring 事件机制替换原有的错误上报逻辑 - 重构部分代码以适应新的错误处理方式
- (security) 添加请求头安全过滤器并优化 JWT 认证逻辑 - 新增 HttpHeaderSecurityFilter 用于处理请求头安全 - 优化 JwtAuthenticationFilter 中的 token 验证和异常处理逻辑 - 删除了不必要的测试用例 - 重构了部分代码以提高可读性和性能
- (nacos) 实现 nacos 共享配置 - 新增 NacosShareConfigBootstrapConfiguration、NacosShareConfigBootstrapRegistry 等多个配置类 - 实现 NacosShareConfigManager 和 NacosShareConfigService 类以支持共享配置- 添加 NacosShareConfigProperties配置属性类 - 创建 blade-nacos-share-spring-boot-starter 模块并添加相关依赖
- (nacos-share) 优化配置属性绑定和默认值设置 - 使用 runCatching 包裹配置属性绑定过程,捕获潜在异常- 在配置属性绑定失败时回退到默认值 - 将 NacosShareConfigProperties 中 overrideGroup 默认值改为 true
- (file) 增加 URI 是否存在于 OSS 中的判断
- (nacos) 优先保留 Nacos 原始逻辑
- (data-permission) 调整数据权限日志级别为 debug,减少默认行为带来干扰
🐛 Bug Fixes
- (file) 修复单测偶发性异常
- (gateway) 修复 JwtAuthenticationFilter 中的逻辑错误 - 修改了 jwt.matchOnMissing 的判断逻辑,以符合预期行为 -这个修改确保在配置 matchOnMissing 为 true 时,能够正确处理缺失令牌的情况
- (gateway) 处理日志日期不精确问题
💼 Other
- 更新项目版本至 3.1.2-SNAPSHOT
- 移除 blade-openapi-spring-boot-starter 模块 - 删除了 blade-openapi-spring-boot-starter 相关的代码和配置 - 更新了版本目录和设置文件,移除了对该模块的引用
- 添加日志依赖 - 在 blade-gateway-spring-boot-starter 的 build.gradle.kts 文件中添加了 blade-logging-spring-boot
- (blade-web-cloud) 更新依赖并调整项目结构 - 移除 spring.cloud.alibaba.dependencies 平台依赖 - 添加 blade-nacos-share-spring-boot-starter 依赖 - 调整 testImplementation依赖的位置 - 移除多余的空行和注释
- 更新 blade-logging 依赖为项目内部版本
- Build: 更新 Blade 版本号至 3.1.2 - 将 blade 版本从 3.1.2-SNAPSHOT 修改为3.1.2 - 更新 gradle/libs.versions.toml 中的相关版本号 - 修改 gradle.properties 中的版本号
🚜 Refactor
- (core) 移动 InnerFeign 注解
- (gateway) 将配置类从 @Configuration 改为 @AutoConfiguration - 修改了多个模块中的配置类,将 @Configuration 注解替换为 @AutoConfiguration - 这一变更可以提高模块的独立性和可插拔性,更好地适应 Spring Boot 的自动配置机制- 受影响的主要模块包括:auth、error-report、file、gateway、test 等
- (auth) 移除 UacsAuthTokenInterceptor 并更新相关配置 - 删除了 UacsAuthTokenInterceptor 类 - 更新了 AuthProperties 中的 host 属性默认值 - 移除了 UacsAuthConfiguration 中的 authTokenInterceptor 方法 - 删除了 UacsMockTest 中的测试用例
- (starters) 修改 API地址为本地测试环境 - 将 blade-auth、blade-feign 和 blade-web 模块中的 API 地址从 ${domain.nest-api} 修改为 http://localhost:8080 - 此修改便于本地调试和测试,确保开发环境下的 API 调用能够正常工作
- (auth) 移除未使用的代码并修复注解 - 移除 AuthSpringBootStarterTest.kt 中未使用的导入和变量 - 移除 UacsMockTest.kt 中的未使用类和测试代码 - 修复 AuthAnnotationTestController.kt 中的 OpenApi 注解参数
- (web) 优化注解解析方法 - 将 skipInnerAnnotation() 方法重命名为 peekFrameworkAnnotation() - 更新方法逻辑,仅保留框架相关的注解 - 修改相关变量和方法调用以适应新逻辑
- (HeaderConstants) 修改应用端标识头为 X-Application-Origin - 将 HeaderConstants 中的 APP_ORIGIN 常量重命名为 X_APPLICATION_ORIGIN - 更新 DefaultGlobalInterceptor 中使用新的 X_APPLICATION_ORIGIN常量
- (gateway) 优化异常处理函数返回类型 - 将
Mono<ResponseEntity<String>>改为Mono<ResponseEntity<String>?>-为 defaultExceptionHandler 添加泛型参数- 优化 handleExceptionInternal 方法签名
📚 Documentation
- (core) 优化 OpenApi 注解文档和命名
- (gateway) 将变量名 referer 改为 header,以更准确地反映其内容
⚡ Performance
- (auth) 优化权限校验逻辑并添加空用户处理 - 在 DataPermissions 中添加对空用户的处理,避免空指针异常 - 优化 hasHighPriority 和 init 方法,增加对权限启用状态的判断
- (gateway) 优化路由缓存机制 - 优化路由缓存机制,使用 AsyncLoadingCache 替代 Cache - 改进路由刷新逻辑,仅在路由变化时进行刷新 - 移除定时任务刷新方式,采用缓存失效前刷新策略 - 重构代码结构,提高可读性和可维护性
- (feign) 优化 DiscoveryClient 缓存逻辑 - 将 Cache 替换为 AsyncLoadingCache,支持异步加载 - 优化 loadRouters 方法,增加失败时的回退机制 - 调整缓存失效时间,从 30 秒增加到 120 秒 - 标记 MockHeaderContextHolder 为过时,推荐使用 UserContexts.withUser() - 在 MockUserExecutor 中添加 DEPRECATION 警告
- (gateway) 优化网关访问日志汇总上报功能
- (feign) 优化 Decoder 二次解码问题 - 在解码过程中增加对原始请求体的保存和重用 - 使用 toBuilder 方法创建新的 Response 对象,避免直接修改原始 Response - 优化了异常处理逻辑,提高了代码的健壮性
🧪 Testing
- (data-permission) 增加无用户信息情景的测试用例 - 修改 DataPermissions.hasHighPriority 的期望值 - 添加用户数据不一致性的测试用例 - 更新复杂 SQL 查询的测试数据 - 将项目版本号更新为 3.1.2-SNAPSHOT
- (gateway) 添加 HTTP 头安全过滤器测试
- (feiqn) 增加路由缓存支持并添加测试 - 在 NestDiscoveryClient 中添加 discoveries 属性的缓存实现 - 在应用配置中增加负载均衡缓存的 TTL 设置- 添加单元测试以验证路由缓存的刷新机制
- (nacos-share) Nacos 共享配置功能集成测试
[3.1.1] - 2025-04-15
🚀 Features
- (auth) 临时 token 增加会话过期提示
- (error-report) 告警功能支持参数指定 at
- (gateway) 优化原始路径识别逻辑 - 在 BladeGatewayProperties 中添加 cache 和 config 属性 - 新增 CacheGatewayConfiguration 类处理缓存配置 - 在 ServerHttpExchangeUtil 中添加 originRequestUrl 和 route 属性 - 更新相关过滤器和处理器以使用新的配置和工具方法
- (gateway) 结合异常处理添加网关缓存功能
- (auth) 修复登出判断、调整自动配置顺序
- (gateway) 添加访问日志汇总上报功能 - 在 BladeGatewayProperties 中添加 Reporter 配置类 - 新增 AccessLogSummaryReporter 类实现日志汇总和上报- 修改 AccessLoggingFilter,支持日志上报 - 优化 UriUtil,增加正则匹配和路径归一化功能
- (auth) 优化用户权限校验提示
- (gateway) 优化响应体缓存功能便于测试 - 在 BladeGatewayProperties 中添加 skipContentCheck 属性,用于控制是否检查响应体内容正确性
🐛 Bug Fixes
- (jimmer) 修复 deleteById 方法的在使用 cglib 代理时,可能存在的空指针异常
- (web) 修复 API 参数日志中的空值问题 - 在处理 API 参数时,使用了安全的空值处理方式 -将原来的 obj.toString() 修改为 obj ?: "null",避免了空指针异常的可能性 -确保了在参数为空时能够正确记录 "null",提高了日志的准确性和可靠性
💼 Other
- 更新 Blade 版本至 3.1.1-SNAPSHOT
- 更新项目版本至 3.1.1
🚜 Refactor
- (auth) 废除 PreCheckSuperAdmin 注解 - 在 PreCheckSuperAdmin.kt 文件中,给 PreCheckSuperAdmin 注解添加了废弃注解 -原因:超管不再作为特殊标识,与普通角色一致
🧪 Testing
- (auth) 为 uacs 登录检查添加单元测试
- (gateway) 添加响应体缓存过滤器的单元测试 - 新增 ResponseBodyCacheFilterTest 类,实现对缓存功能的测试 - 添加 BaseFilterTest 类,配置测试用的路由和过滤器 - 测试用例覆盖正常路由、未找到路由、客户端错误和服务器错误等场景
[3.1.0] - 2025-04-08
🚀 Features
- (permission) 添加获取当前权限编码的功能 在 DataPermissions 类中新增 currentPermissionCodes 方法,用于获取当前用户的权限编码数组。这个功能可以方便地获取用户当前拥有的所有权限信息。
- (jimmer) 移除无效的 BladeJimmerProperties 配置类
- (feign) 仅对内部 Feign 接口开启 DataResponse 解码 - 在 DataResponseDecoder 中添加了对 InnerFeign 注解的检查 - 只有标记了 InnerFeign 注解的 Feign 接口才会使用 DataResponse 解码 - 优化了 FeignAutoConfiguration 类,将内部类 CustomizeLoadBalancerConfiguration 改为嵌套类
- (auth) 权限放行
- (blade-feign) 添加响应失败抛出异常的条件性 Bean 注册逻辑
- (util) 添加获取指定类型配置的方法
🐛 Bug Fixes
- (gateway) 修复网关访问日志记录插件无法准确记录 body 问题
💼 Other
- 更新 Blade 版本号至 3.1.0
🚜 Refactor
- (data-permission) 将数据权限相关的列名从 org_id 改为 organization_id - 在 DataPermissionConstants 中修改 ORGANIZATION_ID_COLUMN 常量的值 - 在 BaseEntityWithOrg 中更新字段名和注解,以匹配新的列名
- (user) 标记超管属性为过时
⚡ Performance
- (redis) 优化 Redis 序列化配置 - 修改 ObjectMapper 默认类型配置,提高安全性 - 将 DefaultTyping.EVERYTHING 改为 DefaultTyping.NON_FINAL_AND_ENUMS
[3.0.4.1] - 2025-03-28
🚀 Features
- (auth) 权限上报新增数据权限开关
- 组织ID基础实体
- 升级 Jimmer 版本到 0.9.68
- (user) 添加组织、权限和角色相关实体及持有者 - 新增 Organization、Permission 和 Role 实体类 - 添加 OrganizationHolder、PermissionHolder 和 RoleHolder 对象
- (user) 优化用户相关实体和移除线程本地存储 - 在 CurrentUser 实体中添加 attributes 字段,用于存储用户相关上下文 - 在 Organization 实体中添加 parentId 字段,并实现平铺组织信息的扩展函数 - 移除 OrganizationHolder、PermissionHolder 和 RoleHolder 等线程本地存储类
- (auth) 添加 CurrentUser 扩展属性和方法 - 新增 CurrentUser 相关扩展属性,包括权限集合、角色集合、组织树等 - 添加 CurrentUser 初始化权限信息的方法 - 实现 CurrentUser 委托属性类,用于存储和获取属性值 - 通过委托属性实现属性值的延迟加载和复用
- (auth) 添加数据权限信息注入处理 - 新增 DataPermissionHandler 用于处理数据权限 - 重构 DefaultAuthTokenInterceptor,支持自定义注解处理器列表 - 优化 UacsCurrentUserBuilder,提前加载权限信息 - 改进 PermissionCheckUtil,提高权限校验准确性
- (auth) 优化数据权限初始化信息存储方式 - 优化 DataPermissionHandler 中的权限处理逻辑
- (user) 添加组织结构查找功能 - 移除 Organization.flatten() 函数的 parentId 参数,改为在函数内部处理 - 添加 Organization.findById() 方法,实现递归查找指定 id 的组织
- (user) Organization 添加 flatten、findById 函数
- (permission) 新增数据范围管理功能 - 实现了数据范围管理器,支持注册和计算不同类型的数据范围
- (util) 优化 SpringContextHolder 添加新方法 - 添加 beanFactory 属性,支持更灵活的 Bean 操作 - 新增 applicationName 和 activeProfiles 属性 - 添加泛型方法 getBean 和 getBeanOrNull - 增加 reified 类型的 get 和 getOrNull 方法 - 添加 publishEvent 方法 - 优化 getProperty 方法
- (auth) 优化权限加载时机 & 接口调用异常处理 - 移除 UacsCurrentUserBuilder 类,不再提前加载权限信息 - 重构 DataPermissionHandler 类,直接在权限校验时加载用户权限 - 优化 UacsCacheablePermissionLoader 类,增加错误处理和日志记 - 删除 CurrentUserPermissions 类,简化权限初始化逻辑 - 调整 UacsClient 类,增加对未携带有效 Token 的处理
- (auth) 添加数据权限处理中的组织信息校验 - 在 DataPermissionHandler 中增加了对当前用户组织信息的非空校验
- (user) 当前用户权限相关信息提取为权限上下文 - 创建 PermissionContext 数据类封装权限信息 - 将 CurrentUser 中的权限相关属性替换为 permissionContext 属性 - 更新 organizationName 属性的实现,通过 permissionContext 获取组织树信息
- (permission) 优化数据权限模块 - 新增 DataScope 接口和 DefaultDataScope 枚举,用于定义数据范围类型 - 重构 DataScopeProvider 接口和具体实现类,支持新的数据范围类型 - 新增 DataPermissions 工具类,提供数据权限计算相关方法 - 移除旧的 DataScopeType 枚举和相关实现类 - 优化数据权限计算逻辑,支持按列名计算数据范围 - 新增自动计算数据权限的方法,根据当前上下文中的权限信息进行计算
- (auth) 更新权限信息上下文初始化处理逻辑 - 优化了数据权限注入逻辑,使用 PermissionContext封装权限信息 - 调整了权限加载和匹配的处理方式 - 改进了日志输出内容,更加详细地记录权限上下文信息
- (data) 添加数据权限过滤器并移除旧代码 - 新增 OrganizationIdFilter 和 CreatorFilter 类,用于实现组织 ID 和创建人 ID 的数据权限过滤 - 删除无用的 Utils.kt 文件中的 withCurrentUser 函数 - 更新 build.gradle.kts,替换 bladeUser依赖为 bladeDataPermission 依赖
- (auth) 用户上下文切换直接抛出原始异常
- (user) 优化组织结构相关函数并添加测试用例 - 重构 Organization 类中的 flatten 函数,增加 parentId 参数 - 修改 findById 函数,返回可能为空的结果 - 添加 OrganizationTest 类,包含多个测试用例 - 优化 Permission 类,为 args 参数添加默认值
- (auth) 调整异常处理,权限接口错误时抛出 500 - 在权限、角色和组织加载失败时抛出 RuntimeException,避免返回空列表 - 修正了 Role 对象的初始化方式
- (gateway) 添加 Traceid 和 Spanid 到 CORS 暴露头部 - 在 ConfigurableCorsWebFilter 中添加 traceHeader 列表,包含 Traceid 和 Spanid - 修改 response.headers.accessControlExposeHeaders,确保包含 traceHeader - 优化暴露头部的逻辑,考虑 "*" 情况下的处理
- (jimmer) 过滤器支持联表查询可空性 - 将 OrganizationIdFilter 和 CreatorFilter 类的基类从 KFilter 改为 KAssociationIntegrityAssuranceFilter - 此修改旨在增强数据权限过滤器的完整性和安全性
- (blade-jimmer) 添加 Jimmer 过滤器配置功能 - 新增 BladeJimmerProperties 类,用于配置 Jimmer 过滤器 - 在 BladeJimmerAutoConfiguration 中引入配置属性 - 根据配置动态添加 CreatorFilter 和 OrganizationIdFilter
- (auth) 调整权限加载器初始化顺序 - 将 defaultPermissionLoader 方法从类中移动到外部 - 优化了 UacsCacheablePermissionLoader 的定义 - 保留了方法的原有逻辑
- (auth) 增加空缓存类型并调整默认权限服务地址 - 在 CacheTypeEnum 中添加 EMPTY 类型,用于不查询权限 - 将 AuthProperties 中的 host 默认值设为 "http://localhost" - 在测试中配置 blade.auth.token.cache 为 EMPTY
- (blade-data-permission) 约定参数值为 String,增加解析处理
- (data-permission) 优化数据权限计算逻辑 - 修改 computeByColumn 函数返回类型为
List<Serializable>?,增加空值处理 - 增加对未找到匹配列的警告日志 - 优化 autoComputeByColumn 函数中的日志输出和结果处理 - (data) 重构数据权限功能 - 移除原有 DataPermissionHandler、DataPermissionContext 等类 - 新增 BladeDataPermissionHandler 处理数据权限逻辑- 在 MybatisPlusConfigProperties 中移除与数据权限相关的配置- 更新 DataPermissionAutoConfiguration 配置类 - 新增 DataPermissionInterceptor 拦截器
- (data) 数据权限逻辑连接符由 OR 调整为 AND - 将 OrExpression 替换为 AndExpression,以正确处理多个数据权限条件- 此修改确保在有多条数据权限时,所有条件都必须满足,提高了系统安全性
- (data) 添加高优先级数据权限判断逻辑
- (user) 添加当前用户相关工具函数并优化权限缓存策略 - 在 CurrentUserHolder 中添加 getUserId、getOrgId 和 getTenantId 函数 - 修改 UacsCacheablePermissionLoader 中的缓存键生成策略,实现用户级别的缓存 - 调整用户详情缓存的过期时间为 1 分钟
- (permission) 重名名及移动数据权限,使结构组合更清晰 - 移动 PermissionLoader接口至 blade-data-permission模块 - 重构 DataPermissions 类,增加权限上下文初始化和手动启用/禁用权限的方法- 修改 blade-auth-spring-boot-starter,集成新的数据权限模块- 更新 MybatisPlus 相关配置,使用新的 MybatisDataPermissionHandler - 优化 Jimmer相关配置,集成数据权限模块
- (data) 数据权限增加执行检查拦截器 - 新增 MybatisDataPermissionCheckInterceptor,用于检查数据权限执行结果 - 重命名 DataPermissionInterceptor 为 MybatisDataPermissionInterceptor - 更新 DataPermissionAutoConfiguration,添加新的拦截器 - 修改单元测试以验证新功能
- (mybatis-plus) 添加基础实体类 BaseEntityWithOrg - 新增 BaseEntityWithOrg 抽象类,包含通用的删除标记、创建人 ID、创建时间和组织 ID 字段 - 使用 MyBatis-Plus 注解进行字段填充 - 为后续的实体类继承提供基础属性
- (jimmer) 数据权限逻辑连接符由 AND 调整为 OR - 在 OrganizationId 接口中添加 Creator 接口,扩展数据权限过滤功能 - 重构 DataPermissionFilter 类,支持按创建者和组织 ID 进行数据权限过滤 - 优化数据权限计算逻辑,提高过滤效率
- (permission) 增加获取所有权限码的功能并优化数据权限初始化 - 在 PermissionLoader 接口中添加 getAllPermissionList() 方法,用于获取所有权限码集合 - 在 DataPermissions 类的 init 方法中,增加对所有权限码的检查逻辑 - 如果数据权限未绑定到当前客户端,日志警告并提前返回,避免不必要的初始化过程
- (auth) 完善权限加载并优化数据权限处理 - 更新 AuthDataPermissionHandler 中的数据权限处理逻辑 - 在 EmptyPermissionService 和 UacsCacheablePermissionLoader 中添加 getAllPermissionList 方法 - 在 UserPermission 中添加 clientPermissionCodes 字段,用于存储客户端权限码
- (mybatis-plus) 数据权限逻辑连接符由 AND 调整为 OR
- (data-permission) 调整改为 OR 逻辑后,数据权限优先级判断 - 在 MybatisDataPermissionHandler 和 DataPermissionFilter 中添加了对 DataPermissions.hasHighPriority 的判断 - 如果数据权限高优先级标志为真,则跳过数据权限处理 - 此修改确保了在高优先级情况下,数据权限不会对查询结果产生影响
- (util) 添加 Spring 相关扩展函数并优化依赖 - 在 SpringUtilExt.kt 中添加了获取 Spring Bean 的扩展函数 - 添加了获取当前请求的扩展函数 - 更新了 build.gradle.kts 中的依赖,增加了 jakarta.servlet.api - 简化了 SpringContextHolder 的命名
- (oss) 优化获取 bean 方式 - 将 getSpringBeanOrNull 方法替换为 getOrNull,提高代码可读性- 优化了 OssPatternProperties 实例的获取方式
- (auth) 调整权限检查逻辑,以权限全集判断权限是否启用 - 移除了 PreAuth 注解中的 enabled 属性 - 调整了 PreCheckPermission 注解的处理逻辑 - 优化了数据权限的初始化过程 - 重构了权限检查工具类 PermissionCheckUtil - 更新了 UacsClient 和 PermissionLoader 的实现
- (jimmer) 提取新的子类用于过滤器,避免影响原有接口 - 新增 CreatorWithFilter 和 OrgWithFilter 接口,用于替代 Creator 和 OrganizationId- 更新 DataPermissionFilter 中的过滤逻辑,使用新的接口 - 修改 BladeJimmerAutoConfiguration,简化过滤器的注册方式 - 为 OrganizationId 接口添加组织id字段注释,提高代码可读性
- (repository) 添加支持拦截器的删除操作 - 新增 deleteById 方法,用于按 ID 删除实体 - 优化导入语句,引入必要的类型和方法- 更新类泛型,限定实体类型 E 继承 LongId
🐛 Bug Fixes
- 解决 RedisCache 反序列化问题
- (util) 修复 SpringContextHolder 属性延迟获取 - 将 applicationName、activeProfiles 和 activeProfile 属性改为可访问的 get 方法 - 提高代码的可读性和一致性 - 保留了原有的功能和逻辑
- (permission) 修复数据权限计算处理逻辑 - 修复当前用户无有效组织 ID 时的日志信息 - 优化数据权限计算逻辑,增加对超级管理员的处理- 修正数据范围计算结果,确保返回去重后的数据值列表 - 优化断言条件,提高代码可读性
- (auth) 优化权限异常处理和数据权限逻辑 - 将 NotPermissionException 从 RuntimeException改为 BusinessException - 优化数据权限处理逻辑,提高代码可读性
- (user) 优化组织结构查找逻辑
- (data-permission) 优化数据权限异常提示信息 - 修改了当用户数据权限为空时抛出的异常消息
- (auth) 修复 uacs token 校验逻辑 -移除 DefaultAuthTokenInterceptor 中的冗余 token 校验逻辑 - 将 token 校验逻辑移至 UacsAuthTokenInterceptor 中 - 优化代码结构,提高可维护性
- (auth) 规避 JDK21 HttpClient 在 Http/2 协议下的连接 bug,降级至 Http/1.1
- (auth) 增加 OpenApi 用户信息兼容性支持
💼 Other
- 更新 Blade 版本至 3.1.0-SNAPSHOT - 在 libs.versions.toml 中将 blade 版本从 3.0.4 修改为 3.1.0-SNAPSHOT - 在 gradle.properties 中将项目版本从 3.0.4 修改为 3.1.0-SNAPSHOT
- (auth) 调整依赖项
- 调整 jimmer starter 依赖配置 - 将 bladeDataPermission 项目依赖从 implementation 改为 api - 优化依赖配置以提高模块间的可见性和灵活性
- (jimmer-starter) 添加 Configuration Processor - 在 build.gradle.kts 中添加 KAPT 插件 -增加对 Spring Boot Configuration Processor 的 kapt 依赖
- 更新 Blade 版本号至 3.0.4.1-SNAPSHOT
- 更新 Blade 版本号至 3.0.4.1
🚜 Refactor
- (auth) 重构认证模块权限功能 - 拆分 AuthAutoConfiguration 为多个配置类 - 重构 PermissionLoader 接口和实现类 - 优化 UacsClient 和相关拦截器 - 更新权限检查工具类 - 调整包结构和类名
- (permission) 标记数据权限相关注解和接口为已弃用 - 在 DataPermission、Table 和 OwnerIdProvider 上添加 @Deprecated 注解 - 提示使用 PreCheckPermission 替换已弃用的注解和接口
📚 Documentation
- (auth) 更新权限注解文档 - 在 PreCheckPermission 注解中添加了对权限码的详细说明 - 示例中增加了版本号的表示方式,并明确了权限管理的范围 - 强调了权限编码的全局唯一性,并给出了建议的编码格式
⚡ Performance
- (auth) 更改权限组织加载接口签名
- (blade-jimmer) 优化数据权限过滤逻辑 - 使用
valueIn?替代valueIn提高类型安全性 - 通过安全类型转换提升代码健壮性
🎨 Styling
- (auth) 移动注解包路径,并添加数据权限校验功能
- (user) 移动当前用户扩展字段路径 - 将 CurrentUserExt 从 auth 模块移动到 user 模块
🧪 Testing
- (data-permission) 添加数据权限工具类的单元测试 - 新增 DataPermissionsTest 类,包含多个测试用例 - 测试数据权限计算、自动计算等功能 - 增加异常情况下的测试 - 更新 build.gradle.kts,添加测试依赖
- (auth) 优化 UserContextsTest 中的测试用例 - 移除了未使用的导入语句 - 调整了代码格式,使其更加规范 - 修改了异常捕获的类型,以更好地反映实际抛出的异常- 优化了异常信息的断言逻辑
- (data-permission) 更新数据权限计算单元测试 - 将 withUser 函数的返回类型从
List<Serializable>修改为List<Serializable>?,增加了空值安全性 - (data-permission) 更新数据权限测试用例 - 将组织 ID 从 Long 类型改为 String 类型 - 修改断言以适应新的数据类型 - 优化测试结果的期望值
- 移除数据权限自动计算测试中的冗余测试代码
⚙️ Miscellaneous Tasks
- (auth) 修改组织机构树接口地址
[3.0.4] - 2025-03-17
🚀 Features
- (feign) 实现自定义服务发现功能 #45 - 新增 NestDiscoveryClient 类实现自定义服务发现逻辑 - 添加 FeignConfigProperties 中的 CustomDiscovery 配置 - 实现 NestServiceInstance 和 NestServiceInstanceListSupplier 类 - 更新 build.gradle.kts 添加必要的依赖
- (fein) 优化负载均衡配置
- (feign) 增加自定义解码器支持异常响应处理 #46 - 新增 DataResponseDecoder 类用于解码 Feign 响应 - 在 FeignAutoConfiguration 中添加 feignDecoder Bean - 更新 FeignConfigProperties,增加 throwOnResponseFailure 配置项- 优化 NestDiscoveryClient 的加载顺序
- (feign) Decode 异常类型调整,输出系统异常
- (auth) 移除 OpenApiHandler 注册,openapi 网关已关联用户信息
- (feiqn) 优化 DataResponse 解码逻辑 - 支持直接返回 DataResponse.data 内容的解码方式 - 增加类型判断,根据不同情况选择合适的解码策略
- (feiqn) 增强 DataResponse 解码异常处理 - 捕获解码异常,当解码失败时按原始类型响应 - 增加配置项支持非 DataResponse 类型的响应体解码 - 优化日志记录解码失败信息
🐛 Bug Fixes
- (web) 修复无参接口调用时,参数解析空指针问题 - 添加显式类型声明,提高代码可读性 - 修改参数处理逻辑,确保正确记录各种类型的参数 - 优化代码格式,提高整体代码质量
💼 Other
- 更新 Blade 版本至 3.0.4-SNAPSHOT
- (error-report) 添加版本配置
- 更新项目版本至 3.0.4 - 将 blade 依赖版本从 3.0.4-SNAPSHOT 更新为 3.0.4 - 更新项目版本号为 3.0.4
[3.0.3] - 2025-03-04
🚀 Features
- 新增 @PreCheckSuperAdmin 注解
💼 Other
- 更新项目版本至 3.0.3
[3.0.2.2] - 2025-02-25
🚀 Features
- (auth-starter) RestClient 设置默认超时时间5s
- (auth) RestClient 设置默认超时时间1s
🐛 Bug Fixes
- (auth) 优化登录状态检查逻辑,避免单点异常导致全局失败 - 使用 runCatching包裹 uacsClient.checkLogin() 调用,增加异常处理 - 在异常情况下返回 ok(true),避免因调用失败导致的登录异常
💼 Other
- 更新 Blade 版本号至 3.0.2.2
[3.0.2.1] - 2025-02-19
🚀 Features
- 错误上报去掉 HTTP 请求头
- (file) 优化 OSS 文件操作相关问题 - 优化文件上传逻辑,将 mediaType 的获取移至分块上传条件内 - 修正 ObjectInfo 中属性名的大小写问题,统一使用小写 - 改进文件存在性检查,处理 404 错误 - 修复文件信息获取和删除的错误提示信息
- (file) 新增文件信息处理逻辑 - 更新相关文件中的调用逻辑,使用新的 merge 方法处理对象信息 - 优化部分代码结构,提高可读性和可维护性 #44
- (error-report) 错误上报支持 Spring 事件
- (auth-starter) RestClient 设置默认超时时间5s
- (gateway) 优化路由加载逻辑,避免单点异常导致全局失败
🐛 Bug Fixes
- (auth) 移除 token 过期时间验证逻辑 - 删除了 UserContextUtil 类中的 expired 变量计算逻辑 -直接返回 jwt.verify() 的结果,不再进行过期时间的额外验证
- (auth) 优化登录状态检查逻辑,避免单点异常导致全局失败 - 使用 runCatching包裹 uacsClient.checkLogin() 调用,增加异常处理 - 在异常情况下返回 ok(true),避免因调用失败导致的登录异常
💼 Other
- 更新 Blade 版本至 3.0.3-SNAPSHOT
- 更新项目版本号 3.0.2.1
📚 Documentation
- (feature/3.0.2) 📖️更新日志修改
⚡ Performance
- (file) 优化文件元数据解析 - 将 FileDetector 从类改为对象,实现单例模式 - 优化文件 MD5 计算方式,使用临时文件路径计算 - 更新相关引用和测试用例
[3.0.2] - 2025-02-18
🚀 Features
- (file) 优化文件上传逻辑 - 使用 BufferedInputStream 替代 InputStream,提高大文件读取效率 - 添加媒体类型检测,优化文件上传时的 Content-Type 设置 - 在 MultipartUploader 中添加 contentType 参数,支持分块上传时指定媒体类型 - 更新 OssTemplate 中的上传方法,统一使用缓冲输入流
- (feature/3.0.2-api-version) ✨️增加SDK依赖版本号生成插件 - 升级gradle版本到8.12.1 - BladeModule重命名FrameworkModule - 增加VersionMarked注解
- 可定制化的 Redis 缓存管理器
- (gateway) 添加远端 HTTP 路由加载功能 - 在 BladeGatewayProperties 中添加 router 配置项,用于定义路由加载配置 - 新增 RouterLocationConfiguration 配置类,实现路由定义加载器的自动配置 - 添加 HttpRouterDefinitionLocator 类,用于从远端 HTTP 接口加载路由定义 - 新增 RetryException异常类,用于处理路由加载重试逻辑 - 更新 AutoConfiguration.imports 文件,添加新的路由加载配置 - 在 build.gradle.kts 中添加 caffeine 依赖,用于路由缓存
- Updated gradle plugin version to 3.0.1 without the "-SNAPSHOT" suffix
- 添加常量版本_package并将其在多个文件中使用 - 此更改在versionInfo.kt中添加了常数version_package,并在多个文件中使用它以保持一致性 - 它改善了代码的可读性和可维护性 - 没有破坏变化
🐛 Bug Fixes
- (auth) 修复登录状态校验逻辑 - 修改了 AuthTokenInterceptor 中的登录状态检查逻辑 - 更新了 UacsClient 中的 checkLogin 方法返回类型
- (auth) 优化登录状态校验逻辑 - 增加了对未登录状态的明确处理
- (auth) 手动导入 AccessDeniedException 异常,避免与 kotlin 标准库冲突
- 修复数组序列化报错的问题
- @Cacheable 运行 null 值
- (file) 修复大文件分片上传逻辑中的数据覆盖问题 - 始终复制有效数据段,避免缓冲区被覆盖
💼 Other
- 更新 Blade 版本号至 3.0.2-SNAPSHOT - 将 Blade依赖版本从 3.0.1 升级到 3.0.2-SNAPSHOT - 更新项目版本号为 3.0.2-SNAPSHOT
- Update version of team.aikero.gradle.plugin.version-catalog to 3.0.1
- (3.0.2) 版本发布 (cherry picked from commit c06983133709d2227f6141c4b20ae8b4950cf6f4)
🚜 Refactor
- 精简 RedisCache 序列化逻辑,不与全局 ObjectMapper 强绑定
- (gateway) 优化 HttpRouterDefinitionLocator 类,支持动态配置 - 移除不必要的 webClient 属性 - 在 loadRouters 方法中直接创建 WebClient 实例
- Remove deprecated XssDefense annotation and recommend the use of @XssFilter-starter for global XSS filtering
- Refactor datetime formatting in Times.kt for better readability and maintainability
📚 Documentation
- Add ID constant to OpLogConstant.kt file
🎨 Styling
- (file) 拼写错误及变量名调整
[3.0.1] - 2025-01-23
🚀 Features
- (blade-error-report) 错误上报支持@手机号
- (gateway) 重构网关认证和安全体系 - 新增 AuthenticationConfiguration 配置类,统一处理认证逻辑 - 重构 UacsAuthenticationFilter,支持 JWT 和密钥认证 - 新增 BasicAuthenticationFilter、JwtAuthenticationFilter 和 SecretKeyAuthenticationFilter - 更新 GatewayConfiguration,移除冗余配置 - 新增 LoggerConfiguration 和 TrafficConfiguration 配置类 - 优化安全过滤器,如 IpSecurityFilter 和 RefererSecurityFilter - 更新 AccessLoggingFilter 和 LocalExceptionFilter
- (gateway) 添加流控功能及配置优化
- (util) 新增属性列表解析和 Base64 编解码功能 - 在 SpringUtilExt.kt 中添加 getPropertyList 方法,用于获取属性列表 - 在 Strings.kt 中添加 encodeBase64 和 decodeBase64 扩展方法 - 更新 gradle/libs.versions.toml,添加 mockito-kotlin 依赖
- (test) MockMvc 自动探测配置,避免 webflux 环境冲突
- (gateway) 优化基础认证异常处理 - 新增 BasicAuthenticationException 类用于处理 HTTP Basic 认证异常 - 修改 BasicAuthenticationFilter 中的异常抛出逻辑 - 更新 LocalExceptionFilter 中的异常处理逻辑,添加对 BasicAuthenticationException 的特殊处理 - 调整测试用例中的异常类型断言
- (gateway) 优化日志、安全和限流功能中的 IP 获取方式 - 新增 NetUtil 工具类,实现统一的 realRemoteAddress 方法
- (gateway) 添加开放网关功能 - 在 GatewayProperties 中添加 openapi 配置项 - 新增 OpenapiConfiguration 配置类 - 实现 DynamicRouterMapping 接口用于动态路由映射 - 添加 OpenapiFilter 过滤器用于处理开放网关请求 - 定义 Router 数据类表示路由信息 - 新增 SignatureResolver 接口用于签名解析
- (gateway) 优化 Openapi 功能
- (gateway) 将 OpenApiConstants 替换为 GatewayConstants
- (gateway) URL匹配逻辑并添加全局异常处理 - 将 UrlUtil 重命名为 UriUtil,优化 URL 相关工具类 - 添加全局错误处理器,统一处理异常响应 - 更新访问日志记录逻辑,支持多条目配置 - 修正 IP、Referer、UA等安全过滤器中的 URL 匹配方式 - 优化流控、服务版本等过滤器中的路径匹配逻辑
- (gateway) 网关异常处理和日志记录功能支持请求体记录 - 添加请求体和响应体缓存功能 - 重命名 NetUtil 为 ServerHttpExchangeUtil,增加新的工具函数
- (gateway) 简化 OpenAPI 网关过滤逻辑 - 修改 SignatureResolver 接口,将 resolver 方法改为 verify 方法,返回布尔值 - 更新 DynamicRouterMapping 类,将 match 方法改为返回布尔值
- (gateway) 优化了日志输出格式,提高可读性
- (auth) 支持多类型 JWT 认证 - 重构 JwtAuthenticationFilter,支持多配置和自定义处理器 - 新增 UacsJwtAuthPostProcessor 和 CiamSsoJwtAuthPostProcessor - 更新 AuthenticationConfiguration,整合新认证方式 - 修改 GatewayProperties,增加 JWT 配置名称字段 - 更新单元测试,覆盖新认证逻辑
- (gateway) JWT 兼容认证 - 在 GatewayProperties 中添加 matchOnMissing 字段 - 修改 JwtAuthenticationFilter 中的 token 验证逻辑 - 优化 CiamSsoJwtAuthPostProcessor 和 UacsJwtAuthPostProcessor 中的 header 设置 - 新增 ServerHttpExchangeUtil 中的 headerIfCondition 方法
- (feature/3.0.1-oplog-notify) ✨️重构Oplog告警增设ErrorReport逻辑
- (gateway) 开放网关插件接口调整 - 新增 OpenapiCustomizer 接口,替换原有的 DynamicRouterMapping 和 SignatureResolver - 添加新的异常类型 ForbiddenException 和 SignatureException -优化部分代码结构,提高可扩展性和可维护性
- (gateway) 重构 OpenapiFilter 并优化相关配置 - 使用 Kotlin 协程改进 OpenapiFilter 的执行逻辑 - 更新 OpenapiCustomizer 接口,支持协程方法 - 添加 kotlinx-coroutines-reactor 依赖
- (gateway) 优化基于版本的负载均衡策略
- (gateway) 调整提示信息
- (feature/3.0.1-oplog-notify) ✨️抽取MQ队列交换机的配置方式 ✨ feat(file): Add RabbitMQ persistence handler for OpLog Added a new
RabbitMqPersistenceHandlerclass to handle persistence of OpLog payloads in RabbitMQ. The handler is configured using properties defined in theOpLogPropertiesclass, and uses a RabbitTemplate to send messages to the specified exchange and queue. The handler is declared in theRabbitMqProducerAutoConfigurationclass, which is now loaded before theOpLogAutoConfigurationclass. Also made some minor changes to other classes related to OpLog configuration and alerting. - (jimmer-starter) 添加 Jimmer 全局异常处理类 Fixes: #33
- (feature/3.0.1) ✨️添加分页测试类和排序测试类
- (starters) 添加文件服务 Spring Boot Starter - 新增 blade-file-spring-boot-starter 模块,提供文件服务功能 - 实现了对阿里云 OSS、AWS S3 等对象存储服务的支持 - 添加了文件上传、下载、重命名、删除等操作的模板类 OssTemplate - 集成了 Spring Cloud 的配置刷新功能 - 提供了线程安全的动态 OSS 切换支持
- (FileUtil) 临时文件1 小时自动清理 - 新增临时目录文件清理队列和调度器 - 实现文件名和扩展名获取方法 - 更新 createTempDir 和 createTempFile 方法,支持自动清理 - 添加 deleteTemp 方法用于定期清理临时文件
- (file) 实现文件类型检测和元数据提取功能 - 新增 FileDetector 类,提供文件类型检测和元数据提取方法 - 添加 MediaType 枚举类,用于定义和管理媒体类型 - 创建 FileMetadata 类及其子类,用于封装文件元数据信息 - 实现 CompressMonitoringParser 和 SeventzParser,用于解析压缩文件 - 添加 FileCompressUtil 和 FileInfoUtil 工具类,提供文件压缩和信息检测静态方法 - 新增 Validator 接口和 Result 类,用于文件验证
- (file) 添加文件校验功能并优化文件解析 - 新增 FileValidationException 类用于文件校验异常 - 重构 Validator 接口,更名为 FileValidator - 添加 Result 类用于表示校验结果- 新增多个文件校验器,包括图像像素校验器和文件大小校验器 -优化 FileDetector 类中的文件解析逻辑 - 新增 ArchiveMetadata 类用于归档文件元数据 - 更新 MediaType 类,增加对归档文件的支持 - 重命名 FileValidatorUtil 为 FileValidationUtil,提供文件校验相关工具方法 - 更新项目依赖,增加 Apache Tika 和 7zip-jbinding 相关库
- (file) 使用密封类优化文件元数据转换逻辑 - 重构 FileDetector 类,优化文件元数据解析过程 - 新增 FileMetadata密封类,提供类型安全的文件元数据 API - 更新 MediaType 类,优化媒体类型解析逻辑- 移除冗余的 MetadataInfo 类
- (file) 调整压缩文件元数据提取逻辑
- (file) 新增文件类型并优化文件类型解析和归类问题
- (file) 新增压缩信息提取逻辑
- (file) 简化文件校验调用方式
- (file) 调整文件处理相关工具类使用方式 - kt 通过扩展函数调用,java 通过静态方法传参
- (file) 优化 Spring 嵌套类配置提示
- (file) 提供文件元数据类型转换 api
- (file) 优化文件校验 api 使用体验,减少类型判断次数
- (oss) 优化 OssTemplate 组成结构 - 新增 CoroutineUploader、FolderUploader 和 MultipartUploader 类实现协程上传 - 更新 OssProperties 配置,增加最大并发数等设置
- (file) 增加图片分辨率信息 - 在 FileMetadata 中添加 resolutionX 和 resolutionY 字段,用于获取图片的横向和竖向分辨率
- 升级 kotlin 和 jimmer 版本
- (jimmer-starter) 细化 BaseEntity 接口
- (file) 提升集成兼容性,降级 s3 sdk 依赖项版本
- (jimmer-starter) Repository 提供 findByIdOrThrow 方法 Fixes: #35
- (jimmer-starter) 全局处理 Jimmer 唯一性约束冲突异常,给出相对友好的异常提示
- (file) 添加内存安全的 md5 计算功能
- (blade-auth) 当前用户增加组织ID字段
- (file) 增加文件流类型检测功能 - 在 FileDetector 类中添加 type 方法,支持 InputStream 类型的文件检测 - 在 FileInfos 对象中添加 type 扩展方法,用于检测输入流的文件类型 - 修改 SeventzParser 类,使用 parallelStream 提高解析性能 - 更新 FileDetectorTest,增加文件流类型检测的单元测试
- (oss) 新增获取文件元数据、前端分片上传api
- (oss) 调整 OssProperties 配置类,提升配置提示体验
- (util) 添加应用名称和环境相关属性方法
- (oss) 完善 oss 元数据记录
- (oplog) 添加批量操作类型支持 在
OpType枚举中新增BATCH_DELETE、BATCH_EXPORT和BATCH_IMPORT类型,并在DefaultOpTypeHandler中扩展支持这些批量操作类型。此次改动旨在增强操作日志功能,支持批量操作的记录和追踪。 - (oplog) 添加前置函数处理功能并优化SpEL解析 目前只支持单个参数的函数 - 在OpLogConstant中添加前置函数标识符PRE_EVALUATE_FUNCTION_PREFIX - 在OpLogAnnoEntry中实现前置函数提取和存储功能 - 在AbstractOpTypeHandler中添加前置函数执行逻辑 - 优化SpelExpressionParserHelper的解析逻辑,支持变量查找 - 添加相关测试用例验证前置函数功能
- (gateway) 优化 OpenapiConfiguration 支持动态路由加载 - 重构 OpenapiConfiguration,使用 RouteDefinitionLocator 替代 RouteLocator - 添加 OpenapiGatewayFilterFactory 类,用于创建开放网关过滤器 - 优化路由定义和过滤器配置,提高可维护性和扩展性
- (auth) 优化 Token 校验逻辑,重构 uacs 接口交互逻辑 - 新增 UacsClient 类,用于与 UACS 系统进行交互 - 更新了 AuthAutoConfiguration 和 AuthMvcConfiguration,集成了新功能 - 修改了 AuthTokenInterceptor,增加了对临时 token 和 UACS token 的验证 - 更新了 AuthPermissionEndpointReportListener,使用 UacsClient 进行权限上报 - 重构了 HttpLocalCachePermissionService,支持本地缓存和不同认证模式 - 新增了 PermissionReport 和 UserPermission 数据类,用于权限上报和用户权限
- (feign) 调整日志级别并优化包扫描路径 - 将 BearerTokenRelayRequestInterceptor 中的日志级别从 info 改为 debug - 简化 FeignConfigProperties 中的 basePackage 初始化逻辑
🐛 Bug Fixes
- (gateway) 优化网关过滤器中的 URL 匹配逻辑
- (gateway) 优化自定义 headers 的处理逻辑
- (gateway) 修复跨域配置中暴露 headers 的问题 - 将暴露 headers 的逻辑移至 response 前提交阶段 - 更新单元测试以模拟新的响应处理方式 - 注释掉部分测试代码,待后续优化
- (gateway) 优化网关配置加载
- (gateway) 修正 IP 获取逻辑 - 将 IpSecurityFilter 和 RateLimiterFilter 中的 realRemoteAddress 方法替换为 actualRemoteAddress
- (gateway) 请求体缓存仅针对文本内容开启
- (oss) 修复文件复制功能 - 在 CopyObjectRequest 中正确设置 copySource 为包含 bucket 的完整路径 - 此修改解决了文件复制操作无法找到源文件的问题
- (feature/3.0.1) 🪲️修复自定义单个字段 LocalDateTime 和 LocalDate 的序列化与反序列化错误 https://gitlab.tiangong.site/aikero/backend/blade/-/issues/36 https://gitlab.tiangong.site/aikero/backend/blade/-/issues/36 - 修改 Times.kt 文档,明确转换基于系统时区 - 修复 DefaultLocalDateTimeDeserializer 和 DefaultLocalDateDeserializer 中 property 为 null 的情况 - 新增 LocalDateTimeTest 和 LocalDateTest 测试类,验证序列化和反序列化逻辑 - 新增 LongToStringTest 测试类,验证 Long 类型序列化为字符串的功能 - 修改 DefaultLocalDateTimeSerializer,支持 property 为 null 的情况
- (auth) 兼容旧框架调用新框架时的 token检查 - 在 TokenHolder.get() 调用中增加异常捕获和空值处理 - 如果 token 内容为空,将不再进行后续的 token 验证流程 - 此修改旨在解决旧框架调用新框架时因缺少 token 而导致的拦截问题
- (util) 修复应用名称获取问题,context 只能取到 context-path 而非 application.name - 修改 SpringContextHolder 中获取应用名称的方式,使用环境属性替代直接访问 applicationName
💼 Other
- (3.0.1-SNAPSHOT) 升级版本号
- 更新依赖项为项目内部版本 - 将 blade-core、blade-logging-core 和 blade-util依赖项替换为项目内部版本- 保留其他依赖项不变
- (blade-file) 更新依赖并添加测试相关依赖 - 将 bladeCore 依赖更换为 bladeCommon - 添加 tika 和 sevenzip-jbinding 相关依赖 - 引入 JUnit 5测试相关依赖
- 添加 catalog 依赖定义
- (3.0.1) 更新版本号并移除快照版本
🚜 Refactor
- 删除开放接口网关模块
- (gateway) 重构网关配置和过滤器 - 重命名 ReactiveGatewayConfig 为 GatewayConfiguration - 新增 GatewayProperties 类,替换 ReactiveGatewayProperties - 添加 SecurityConfiguration 类,处理安全相关配置 - 重构 ServiceVersionInstanceFilter 类,改为使用 GatewayProperties - 重命名 JwtParser 为 JwtUtil,优化 JWT 相关工具类 - 新增 UrlUtil工具类,用于 URL 相关操作 - 更新 OpenApiConstants,简化常量定义
- (gateway) 重构网关模块调整分包和插件逻辑 - 新增 GatewayConfiguration 类,统一处理网关相关配置 - 重命名部分类和包名,提高代码可读性和一致性 - 新增多个安全相关的过滤器,增强网关安全性- 重构跨域配置,使用 ConfigurableCorsWebFilter 替代原有的硬编码配置
- (feature/3.0.1-oplog-notify) 🧬️重构Oplog接入ErrorReport的方式
- (gateway) 重构网关过滤器顺序和实现 - 移除全局过滤器的 @Order 注解 - 在过滤器类中添加 @Order 注解以定义优先级
- (feature/3.0.1-oplog-notify) 🧬️修改了 RabbitMQ 的持久化处理器和连接工厂配置
- (oplog) 将操作类型
ADD重命名为CREATE并更新相关处理逻辑 - 将OpType枚举中的ADD操作类型重命名为CREATE,以更准确地描述操作行为 - 更新AddOpTypeHandler为CreateOpTypeHandler,并调整相关类型处理逻辑 - 修改DefaultOpTypeHandler中的QUERY操作类型为READ,以保持一致性 - 更新dataModificationOperations方法中的操作类型集合,确保包含CREATE类型 - (util) 将 FileUtil 类移动到 io 包中
- (file) 更新文件工具类路径
- (gateway) 重构网关配置属性,以支持动态配置刷新 - 不使用 data class,不使用构造函数定义 properties https://github.com/spring-cloud/spring-cloud-commons/issues/846 - 将 GatewayProperties 重命名为 BladeGatewayProperties,避免与 spring 配置类名冲突 - 更新相关配置类和过滤器中的属性引用 - 优化部分代码结构以提高可读性和维护性 - 更新单元测试
- (config) 更新依赖使用报告API路径 将
VersionReportProperties中的api路径从/box/dependency/usage/report/batch更改为/sys-admin/dependency/usage/batch/report,以匹配新的服务端点。 - (oplog) 移除createdTime字段的JsonFormat注解 移除OpLogPayload.kt中createdTime字段的@JsonFormat注解,简化代码结构。该注解不再需要,可能因序列化逻辑已调整或默认格式已满足需求。
- (oplog) 移除
JsonFormat导入并延迟初始化createdTime- 移除未使用的com.fasterxml.jackson.annotation.JsonFormat导入 - 将createdTime从立即初始化改为延迟初始化,以提高灵活性
📚 Documentation
- (oss) 优化 OssTemplate 流处理说明 - 在涉及输入流的 API 中,添加了使用方决定何时关闭流的说明 - 在上传文件时,使用 use 函数确保输入流在上传完成后正确关闭 - 优化了并发控制逻辑,限制最大并发数以避免内存溢出 - 更新了函数注释,明确了流的关闭责任和并发控制策略
- (util) 补充 api 提示文档
⚡ Performance
- (feature/3.0.1-oplog-notify) 📜️修改 RabbitMQ 持久化处理器自动配置类
- (feature/3.0.1) 📜️最小化Oplog的依赖管理避免强奸项目依赖
- (file) 文件校验结果类替换,兼容 java 使用
- (blade-core) 修改客户端标识相关常量 - 将 CLIENT_ID 的值从 "Client-Id" 修改为 "Client-Code" - 删除了未使用的 INNER 和 INNER_Y 常量
🎨 Styling
- (gateway) 优化日志输出 -移除冗余的日志信息,提高日志可读性
- (oss) 移除不必要的伴生对象调用,优化代码结构
🧪 Testing
- (gateway) 添加单元测试 - 添加了 BasicAuthenticationFilter、JwtAuthenticationFilter、SecretKeyAuthenticationFilter 和 UacsAuthenticationFilter 的单元测试- 优化了 AccessLoggingFilter 的实现 - 更新了相关测试配置和构建脚本
- (blade-gateway) 添加 ConfigurableCorsWebFilter 的单元测试
- (blade-gateway) 添加网关安全过滤器的单元测试
- 移除无用的 Spring Boot 测试应用和测试用例
- (gateway) 修复单元测试网关异常信息匹配问题
- (file) 添加文件处理相关测试用例 - 新增 FileDetectorTest 类,测试文件元数据解析功能 - 新增 FileCompressionsTest 类,测试文件解压缩功能 - 新增 FileInfosTest 类,测试文件类型和元数据检测功能 - 新增 FileValidationsTest 类,测试文件验证功能 - 添加测试工具类 TestUtil 和 logback 配置文件 - 添加测试用例所需的资源文件
- (blade-mq) 移除集成测试
⚙️ Miscellaneous Tasks
- (build) 移除 JaVers 依赖中的 SLF4J 排除配置 简化
blade-oplog-spring-boot-starter模块的build.gradle.kts文件,移除 JaVers 依赖中对 SLF4J 的显式排除配置。此更改不影响功能,仅优化依赖管理。
[3.0.0] - 2024-12-19
🚀 Features
- (feature/3.0.0) 同步 2.2.3
- (feature/3.0.0) 依赖升级
- (jimmer) 提供 jimmer 相关的 version-catalog 定义
- (test-starter, jimmer-starter) 扩展 MockMvc 的断言函数,补充 jimmer 单元测试
- (jimmer) 添加 BladeKotlinRepository 并重构查询相关代码,兼容 spring 分页参数 - 新增 BladeKotlinRepository 类,提供通用的条件查询和分页查询方法 - 重构原有的 Extensions.kt,改为 QueryExtensions.kt,优化查询相关扩展函数 - 更新测试用例
- (sequence-starter) Redis stater 依赖调整为编译期,避免运行时强制依赖 redis
- (jimmer-starter) 单元测试 Cosid 默认使用机器 id 方式
- (test-starter) 支持通过线程变量来禁用模拟用户功能
- (jimmer-starter) 基础实体增加创建人姓名和修改人姓名字段
- (jimmer-starter) 扩展 KotlinRepository 分页方法
- (auth) 整合 SaToken 实现权限认证 - 新增 BladePermissionEndpointReportAware 类用于权限端点上报 - 更新 AuthProperties 类,增加 redis 配置- 添加 AuthRedisInject 类实现 Redis 连接配置 - 修改 SaTokenAutoConfiguration 类,支持自定义注解处理器 - 新增 OpenApiHandler、PreCheckPermissionHandler 和 PreCheckRoleHandler 类作为自定义注解处理器 - 更新 BladeAuthInterceptor 类,简化鉴权逻辑- 重构 PreCheckAspect 类,改为 PreCheckRoleHandler
- (starters) 添加消息队列启动器 - 实现了本地事件与远程消息队列的相互转换和转发 - 添加了消息总线和服务总线的配置- 实现了应用事件的序列化和反序列化 - 添加了相关单元测试
- (auth) 新增权限码注解解析和上报功能 - 在 PreCheckPermission 注解中添加 name 字段,用于描述权限码用途 - 实现权限码注解解析逻辑,支持权限码替换和多路径解析 - 新增权限端点上报功能,程序启动后自动发送权限信息事件 - 添加测试用例,验证权限码注解解析功能
- (mq) 调整消息总线多播功能 - 重命名 CoreBusAutoConfiguration 为 MessageBusAutoConfiguration - 新增本地事件异步处理功能 - 优化消息总线配置和初始化逻辑 - 更新事件类结构,增加 data 属性 - 调整消息总线工具类 MessageBusUtil - 更新测试配置和用例
- (mq) 新增总线事件降级机制 - 修改事件转发逻辑,增加自动降级功能 - 优化消息队列配置,启用单活跃消费者模式 - 更新事件处理方式,支持远程消息标识 - 调整测试用例,验证新机制下的消息消费
- (blade-auth) 增加临时 token 逻辑 当前端携带的 token 被标记为临时 token 时,不设置用户上下文信息
- (blade-auth) 用户上下文对象添加[是否超级管理员]属性
- (blade-web) 全局异常拦截器处理 SaJwtException 异常,返回 401
- (auth) 简化权限上报相关DTO代码
- (blade-auth) Sa-Token 的配置不应该被 blade-auth 的配置覆盖
- (blade-mq) 修复属性懒加载问题 - 新增 MessageBusPublisher 类替代 MessageBusUtil 对象 - 更新相关引用和实现,以适应新的消息总线发布逻辑 - 调整自动配置和测试用例以匹配新实现
- (mq) 调整消息总线自动配置功能 - 新增 MessageBusDeclareProcessor 类,专门处理消息总线的声明和初始化 - 优化远程转发监听容器的条件注解,增加 matchIfMissing 属性
- (auth) 增加未找到权限端点时的警告日志 - 在 BladePermissionEndpointReportAware 类中添加了对权限端点为空的处理 -增加了警告日志,提醒用户检查是否存在 @PreCheckPermission 注解
- (oplog-starter) 移除 oplog-starter 对外暴露的 RestTemplate Bean,改成使用内部自己 new 的 RestTemplate
- (test-starter) MockMvc 每次模拟登录后,清理临时产生的 Session 数据
- (mq) 改进消息序列化以包含类型信息 - 在 RabbitMqAutoConfiguration 中配置 ObjectMapper 以启用类型信息的序列化 - 更新 MqStarterTest 以测试复杂对象类型的序列化和反序列化 - 修改 SpringBootTestApplication 以支持测试
- (auth) 调整权限端点上报时机 - 使用 ApplicationReadyEvent替代 ContextRefreshedEvent - 通过事件参数获取 bean,避免直接注入 - 优化权限码日志输出格式
- (jimmer-starter) 扩展 findPage 方法
- (mq) 重构消息总线 - 重新设计了消息总线的架构,简化了配置和使用方式 - 新增 BusEvent 接口统一事件处理 - 添加 GenericEventListenerFactory 支持泛型事件监听 - 重构 MessageBusPublisher,使用 BusEvents工具类替代 - 优化消息总线声明和初始化逻辑
- (auth) 添加预检查忽略权限接口支持 - 在 AuthAutoConfiguration 中添加了 PreCheckIgnoreHandler 的注册
- (test-starter) 模拟用户默认是超级管理员
- (test-starter) MockMvcConfiguration 支持自动配置
- (test) 增加超级管理员权限控制 - 在 MockMvcConfiguration 中添加超级管理员权限控制逻辑 - 在 MockCurrentUser 中调整用户权限分配 - 优化 MockMvcExtensions 中的响应处理逻辑
- (auth) 添加 Sa-Token 配置并优化鉴权逻辑 - 在 AuthAutoConfiguration 中添加 SaTokenConfig 配置 - 在 AuthProperties 中增加 token 相关配置 - 优化 AuthTokenInterceptor 中的登录校验逻辑 - 在 PreCheckPermissionHandler 和 PreCheckRoleHandler 中增加超级管理员判断 - 更新测试用例,增加鉴权相关测试
- (mq) 实现消息确认机制,支持显式配置消息id - 重构 AbstractBusEvent 类,增加重新投递标识和目标应用信息 - 修改 BusEvents 工具类,支持指定消息 ID - 更新相关测试用例
- (jimmer-starter) 审计字段全部加上非空约束,同时修改单元测试
- (jimmer-starter) 添加工具方法,用于创建一个临时的用户上下文
- (mq) 优化消息总线机制并支持自定义队列 - 重构了消息总线的声明和消费逻辑,支持更灵活的队列配置 - 新增自定义队列和事件的支持,提高了系统的可扩展性 - 优化了消息处理流程,提高了系统的稳定性和可靠性 - 更新了文档,增加了自定义队列和事件的使用示例
- (jimmer-starter) 细化基础实体类,拆分为多个基类和拦截器
- (feature/3.0.0) Gradle插件定义3.0.0快照版本 - 删除baibuapm依赖定义 - 抽取配置到init.gradle.kts初始化脚本当中
- (feature/3.0.0) 防呆补丁:增加文档注释说明
- (mq) 修复消息总线自动配置的异常处理 - 优化了配置属性的加载方式
- (libs.versions.toml) 升级 Jimmer 到 0.9.20
- 当前用户对象字段精简,调整命名
- 调整 PageVo 的 pageNum 值
- (async) 增强异步任务执行的 TTL 支持 - 新增多个异步任务执行函数,支持自定义 ExecutorService - 增加异常处理和日志记录功能 - 添加 Callable 和 Supplier 的 TTL 支持 - 优化测试用例,覆盖更多场景
- (feature/3.0.0) DataResponse 增加 getDataIfNullHandle方法 用于判断data为空后的处理 此处理不返回信息
- 引入 wx-java-miniapp
- (auth) 自动加载配置
- (feature/3.0.0) 增加fetchDataOrHandle的单元测试
- 追加 trace_id 到 HTTP 响应头中,方便问题排查
- Update jimmer version
- (feature/3.0.0) 日志接入阿里SLS、废弃logging多余自定义配置 - 日志接入阿里SLS - 废弃logging多余自定义配置
- (auth) 新增 Auths 工具类,提供系统用户注入
- (core) 新增开放平台 API 支持 - 新增 @OpenApi 注解,用于标记开放平台接口 - 实现开放平台 API 上报机制,启动时自动上报接口信息 - 添加用户上下文处理,支持在 MQ 消息中传递用户信息 - 新增开放平台 API 测试用例
- (core) 增加 OpenApi 注解 path 属性并优化相关功能 - 在 OpenApi 注解中添加 path 属性,用于指定开放网关接口地址 - 更新 MessageBusSource DTO,增加 openapi path 字段 - 更新 OpenApiEndpointReportListener,使用新的 OpenApi path属性
- (mq) 添加单活跃消费者配置
- Poi 版本定义
- (blade-error-report) 优化全局异常拦截逻辑,区分业务异常和程序异常,提供统一的错误上报机制 1. 优化全局异常拦截逻辑,区分业务异常和程序异常 2. 提供统一的错误上报入口,将 web 请求的异常和 mq 消费的异常归拢到一处进行处理
- (feature/3.0.0) 去除mybatisplus的默认MapperScan配置 https://gitlab.tiangong.site/aikero/backend/blade/-/issues/29
- (blade-error-report) 添加钉钉机器人错误上报策略,使用本地缓存对错误去重
- (blade-oplog) Oplog 模块接入统一错误上报
- (auth) 添加用户上下文管理功能 - 新增 UserContextUtil 工具类,用于管理用户上下文
- (openapi) 新增开放接口网关功能 - 添加 OpenApiBusinessGatewayConfiguration 和 OpenApiGatewayConfiguration 类 - 更新 AutoConfiguration导入和测试用例
- (auth) 认证模块配置调整 - 将 AuthAutoConfiguration 拆分为多个配置类 - 新增 AuthMvcConfiguration 和 AuthRedisConfiguration - 支持 reactive、servlet 双环境使用
- (auth) 用户上下文环境判断处理,避免SaToken 无法处理非 web 环境
- 重写 JWT Token 的生成逻辑,确保每次生成的 token 都一样
- (mq) 简单支持动态配置多个 RabbitMQ vhost - 新增 BladeRabbitTemplate 类,支持多 vhost 发送消息- 添加 DynamicRabbitHolder 对象,用于动态管理 RabbitMQ vhost - 修改 LocalForwardingToRemoteAdapter 和 OpenApiEndpointReportListener,支持动态选择 vhost - 更新 RabbitMqAutoConfiguration,支持动态配置多个 vhost
- (mq) 调整消息总线自动配置顺序 - 将 MessageBusAutoConfiguration 和 RabbitMqAutoConfiguration 设置为自动配置类 - 调整自动配置的加载顺序,使其在 RabbitAutoConfiguration 之前加载 - 修改 DynamicRabbitHolder.peek() 方法返回值类型,允许返回 null - 优化 BladeRabbitTemplate.use() 方法逻辑,提高代码可读性 - 删除 UnconfigureTest 类,简化测试结构
- (auth) 创建用户上下文时生成临时 token 并登录
- (openapi) 新增开放接口网关启动器 - 新增 blade-openapi-gateway-spring-boot-starter 模块
- (auth) Feign 中继支持, - 在 BearerTokenRelayRequestInterceptor 中增加对 InnerApi 注解的支持 - 修改 InnerApiHandler 中的检查逻辑,只在需要认证时停止路由
- (mq) 兼容默认消息转换器
- (auth) 临时用户 token 增加排查信息
- (auth) 优化用户上下文切换逻辑 - 重构 UserContextUtil 类,新增虚拟 Web 容器处理逻辑
- (file/topic) 修改版本上报组件包路径
- (auth) 优化用户信息处理逻辑 - 在 AbstractCurrentUserInfoBuilder 中增加从请求头获取用户信息的逻辑
- (feign) 优化 BearerTokenRelayRequestInterceptor 中继逻辑
- (file) 添加了
blade-diagnostics-spring-boot-starter项目 为了提供更好的诊断功能,添加了blade-diagnostics-spring-boot-starter项目,包含了自动配置类DiagnosticsAutoConfiguration和应用启动诊断监听器ApplicationStartupDiagnosticsListener,以及相关的依赖。新增了一些文件,更新了一些文件。 - (blade-web) 全局异常处理:考虑参数校验异常和数据库异常
- (auth) 重构认证模块- 移除 SaToken 相关代码,改为自建基于 JWT 的认证机制 - 重新设计用户上下文切换逻辑,使用临时 token 方案 - 更新异常处理机制,引入新的认证相关异常类 - 优化注解处理器实现,增强代码可读性和可维护性 - 调整项目结构,移除不必要的依赖和文件
- (gateway) 新增网关模块以支持服务版本隔离和跨域配置 - 添加 ReactiveGatewayConfig 类以配置网关过滤器- 新增 ReactiveGatewayProperties 类用于网关公共配置 - 实现 AccessLoggingFilter 访问日志过滤器 - 添加 LocalExceptionFilter 统一异常过滤器 - 实现 UacsAuthenticationFilter 用户 token 兼容过滤器 - 新增 ServiceVersionInstanceFilter 服务版本过滤器 - 添加 JwtParser 和 SsoUser 类用于 JWT 解析 - 新增 OpenApiConstants 类定义开放 API 常量- 更新构建配置和项目结构以支持新模块
- (user) 移除用户信息标识和相关工具类 - 移除 UserConstant 中的冗余常量定义 - 使用 HeaderConstants 中的 USER_INFO 常量替代自定义标识 - 更新 UserContextUtil 中的用户信息处理逻辑 - 标记虚拟 Web容器相关方法为 deprecated
- (feign) 优化 token 中继拦截器逻辑 - 移除了 CIAM 相关的常量和拦截器 - 优化了 BearerTokenRelayRequestInterceptor 的实现 - 删除了未使用的 InnerFeignInterceptor 和 MockUserRequestInterceptor - 调整了 HeaderConstants 中的常量 - 移除了 FeignConfigProperties 中的冗余配置
- (auth) 重构认证模块 - 重构 UserContextUtil,使其不再依赖 SaToken - 新增 PermissionLoader 接口和实现类,用于加载用户权限 - 更新 AuthAutoConfiguration,支持多种权限缓存策略 -重构 AuthMvcConfiguration,移除对 Redis 的直接依赖 - 新增 HttpPermissionService,用于从远程服务加载权限信息 - 更新相关测试用例和配置文件
- (test) 重构 MockMvc 配置以支持临时令牌 - 使用 UserContextUtil 创建临时令牌替代原有的登录逻辑
- (auth) 实现权限加载接口
- (auth) 优化未登录异常处理
- (blade-util) 提供断言工具类
- (auth) Http权限加载逻辑优化 - 移除 RestTemplate 依赖,使用本地缓存权限服务 - 重构权限加载和缓存机制 - 优化权限检查逻辑,提高性能
- 全局异常上报,添加请求头信息
- (auth) 调整配置支持测试 - 移除 SaToken 相关配置 - 调整缓存策略,支持本地缓存和无缓存 - 删除未使用的枚举类 ErrorCodeEnum 和 TokenTypeEnum - 优化权限加载逻辑 - 简化 AuthProperties 中的系统用户配置
- (libs.versions.toml) 异常上报模块版本声明
🐛 Bug Fixes
- (jimmer-starter) 解决编译报错
- (test-starter) 引入 H2 依赖,解决单元测试启动报错
- (test-starter) Mock mvc 添加完请求头后,清除线程变量
- (user) 优化异常提示信息
- (auth) 修复权限和角色列表的获取逻辑,避免类型转换异常
- 修复自动配置加载顺序冲突问题
- (auth) 修复权限检查逻辑 - 将 PreAuth 注解的查找范围从方法扩展到类级别
- (blade-mq) 对 Queue 定义去重
- 更新拼写错误:将OpLoFunction改为OpLogFunction (feature/3.0.0)
- (user) 修复 token 中用户信息异常
- 生成 token 的时候,extra 里的 userInfo 不应该 toJson()
- (auth) 优化权限端点上报功能的 MQ 配置检查逻辑 - 将日志级别从 warn 改为报错信息输出 - 使用 BusinessException 抛出未启用 MQ 配置的异常
- (openapi) 优化开放端点上报功能的配置校验 - 通过抛出 BusinessException 提示用户未启用 mq 配置
- (mq) 优化消息队列初始化逻辑, - 仅保留以 "blade." 开头的队列,避免加载不必要的队列
- (blade-auth) 调整 blade-auth 的依赖
- (auth) 优化虚拟 web 容器初始化逻辑
- (blade-tenant) 修复配置项命名错误问题
- (blade-error-report) 不依赖 dingtalk 时,启动不报错,默认 DO_NOTHING 策略
- (user) 修复登录验证逻辑 - 在 AbstractCurrentUserInfoBuilder 中添加对登录状态的判断
- (protocol) 修正源码包路径
- (feature/3.0.0) 🐛️删除 blade-core中 ksp 非必要参数 "moduleBlade"
- (user) 修复本地调试时用户信息和 token 设置问题 - 修复了用户信息解析时可能出现的空指针异常 -优化了 token 设置逻辑,增加了异常捕获 - 提高了代码的健壮性和安全性
- (gateway) 修复 JWT 解析中可能的空指针异常
- (user) 修复 token 解析空指针异常
- (auth) Token 解析错误静默输出,不阻断业务 - 修改 UserContextUtil 中的 token 使用方式 - 更新 AbstractCurrentUserInfoBuilder 中的 token 解析逻辑 - 添加错误日志记录
- (auth) 优化权限加载器的空值处理 - 在 permissionUtil 方法中,将 PermissionLoader 参数改为可空类型 - 使用空值合并操作符(?:)为 PermissionLoader 提供默认实现 EmptyPermissionService
💼 Other
- (feature/3.0.0) [web-cloud] 废弃bladeApmSpringBootStarter
- (feature/3.0.0) [all] 修改启动配置的日志级别为INFO 便于启动查看
- (feature/3.0.0) 合并2.x版本的修改
- (feature/3.0.0) [jimmer] 版本升级至 0.8.155
- (feature/2.1.8) 还原冲突脚本
- (blade-auth) 升级 Sa-Token 版本并优化依赖 - 将 Sa-Token 版本从 1.38.0 升级到 1.39.0 - 添加 Redis 相关依赖以支持分布式 session - 引入 Commons Pool2 依赖 - 更新 libs.versions.toml 文件以反映新依赖和版本号
- 移除 SkyWalking 日志相关代码
- (versions) 添加钉钉 API 依赖
- (auth) 更新依赖模块
- 添加 version-catalog blade-core-protocol依赖, blade-core-protocol 依赖项
- Publish 任务依赖 test 任务
- (web) 添加 blade-feign-starter 依赖 - 在 blade-web-cloud-spring-boot-starter 的 build.gradle.kts 文件中添加了 bladeFeignSpringBootStarter 的 API 依赖
- (3.0.0) 更新版本号并移除快照版本
🚜 Refactor
- (core) 移除了 deprecated 的 failed 函数的函数体使用
- (user) 移除用户服务中的客户端相关代码
- (auth-starter) 重构认证模块 1. 移除 user-profile 依赖 2. 调整配置项
- (auth) 优化认证模块配置和组件加载 - 修改 AuthProperties 中 tokenName 属性默认值为 "Authorization" - 调整 AuthRedisInject 类的条件加载方式 - 重构 SaTokenAutoConfiguration 中的 bladePermissionEndpointReportListener 方法
- (auth) 新增 @PreCheckIgnore 注解用于忽略登录态校验 - 新增 PreCheckIgnore 注解,用于标记不需要进行登录态校验的方法或类- 实现 PreCheckIgnoreHandler处理器,处理该注解的逻辑 - 将 OpenApi 注解标记为过时,推荐使用 PreCheckIgnore 替代
- (auth) 默认采用共享 redis 模式实现权限共享,配置与实现调整 -将 AuthProperties 中的 cache 默认值改为 REDIS - 新增 SaTokenAutoConfiguration 中的 configSaTokenMixin 方法 - 新增 SaSessionPermissionLoader 类
- (mq) 重构 BusEvent、ApplicationBusEvent 和CoreBusEvent - 优化消息队列配置和绑定逻辑 - 更新消息转换和序列化方式 - 增加测试配置和测试用例
- (mq) 修正 RabbitMqAutoConfiguration 包名和自动配置顺序
- (mq) 事件消息及方法重命名 - 将 BusEvent 重命名为 AbstractBusEvent,作为消息事件的抽象基类 - 更新相关适配器和事件类以使用新的 AbstractBusEvent - 修改 MessageBusEvent 中的 coreBus 方法名称为 of,简化调用 - 更新测试用例以适应新的事件体系
- (auth) 优化 BladeAuthInterceptor 登录验证逻辑 -移除了冗余的 setAuth 方法,使用 init 块进行初始化 - 简化了登录验证和用户信息组装的逻辑 - 在 blade-web-boot 依赖列表中添加了 blade-mq-spring-boot-starter
- (auth) 重构权限端点上报逻辑 - 将 BladePermissionEndpointReportHandler 从 ApplicationListener 改为 ApplicationRunner -移除 AuthAutoConfiguration 中的 SaToken 配置方法 - 删除 TokenProperties 中的冗余属性- 更新权限端点上报方式,使用 MessageBusPublisher
- (auth) 重构权限端点上报功能 - 将 BladePermissionEndpointReportHandler 从 ApplicationRunner 改为 ApplicationListener - 优化权限端点上报逻辑,增加日志记录和空判断 - 修改测试用例以适应新的配置
- (auth) 优化权限端点上报逻辑 - 移除对 MessageBusPublisher 的直接依赖,改用事件发布方式 -增加对 MQ 配置状态的检查,提高系统稳定性- 更新 PreCheckPermission 注释,增加示例说明
- (auth) 优化权限端点报告的解析逻辑 -将单个 RequestMappingHandlerMapping 实例替换为多个实例的 Map- 使用 flatMap 聚合所有 handlerMethods,提高代码可读性和效率
- 重构项目并更新包名
- (auth) 重构认证异常处理 - 新增 AuthExceptionHandler 类,专门处理认证相关的异常 - 移除 GlobalExceptionHandler 中的认证异常处理逻辑 - 更新项目依赖,移除 blade-auth-spring-boot-starter 的直接引用
- 移除 sso_token 的存储逻辑
- (auth) 重构权限处理和用户认证逻辑 - 新增 MessageBusSource 文件,定义权限上报传输对象 - 重构用户认证工具类 Auth,优化用户上下文构建逻辑 - 更新 CurrentUserHolder 和 TokenHolder,使用 object 替代 class - 移除 Auths 工具类,功能已整合到 Auth 中 - 更新权限端点上报监听器,使用 PermissionReportDto 传递权限信息 - 新增 InnerApiHandler 处理内网 API 注解 - 优化测试用例,移除不必要的权限检查测试
- (blade) 清理过时和弃用代码
- 删除自定义日志配置
- (protocol) 抽离轻量化 protocol 模块
- (blade) 清理过时和警告代码
- (user) 重构用户模块 - 重构 CurrentUserInfoBuilder 接口和实现类
- (jimmer) 替换 CurrentUserHolder 为 DefaultCurrentUserContentSetter
- (mq) 优化消息队列用户上下文传递逻辑 - 移除了 LocalForwardingToRemoteAdapter 中的系统用户回退逻辑 - 更新了 RemoteForwardingToLocalAdapter 中的用户上下文处理方式
- (openapi) 调整用户上下文工具类引用
- (mq) 使用环境属性替代 bean 定义异常来判断 MQ 是否启用 - 更新 MessageBusAutoConfiguration 中的条件注解,去除 matchIfMissing 属性
- (openapi-gateway) 调整安全检查逻辑顺序 - 将白名单检查提前至请求头检查之前 - 优化代码结构,提高可读性
- 独立版本上报组件 (feature/3.0.0) blade-versions-report-spring-boot-starter
- (feign) 优化 token 和用户信息中继逻辑- 使用 runCatching 替代 try-catch 结构,简化异常处理 - 将日志级别从 debug 改为 info,增强日志可见性 - 重构中继逻辑,提高代码可读性和维护性
- (user) 删除未使用的用户相关 DTO 类 - 删除了 UserDto、UserMenusDto 和 UserMenusReqDto 三个未使用的 DTO 类 - 移除了 AbstractCurrentUserInfoBuilder 中的冗余导入 - 更新了 AbstractCurrentUserInfoBuilder 的作者信息
📚 Documentation
- (mq) 更新 README 文档
- (gateway) 订正注释
⚡ Performance
- (feature/3.0.0) 合并分离好的日志管理
- (feature/3.0.0) 编辑blade-web-cloud-simple
- (feature/2.1.8) [web] 简化web内部旧有代码
- (feature/3.0.0) 同步2.2.1版本的日志格式
- (auth): 调整日志级别以减少生产环境输出
- (auth) 优化登录验证逻辑 - 在 AuthTokenInterceptor 中添加登录状态判断 - 仅当用户已登录时,才执行 currentUserInfoBuilder.build 方法
🎨 Styling
- (blade-core) 删除 USER_INFO 常量末尾的空格 - 移除了 HeaderConstants.kt 文件中 USER_INFO常量末尾的空格
🧪 Testing
- (feature/3.0.0) [core] 添加单元测试
- (jimmer-starter) 编写单元测试 测试 ID 生成器和实体拦截器
- (blade-starters) 为所有 starter 模块编写单元测试,确保升级 Spring Boot 3 不会影响到之前的模块
- (jimmer-starter) 补充实体拦截器相关的单元测试 1. 总是以拦截器设置的公共字段为准,不允许业务侧主动设置\n2. 没有用户上下文时,也能正常插入数据
- (test) 修复由于缺少redis依赖而导致的单元测试错误
- (test-starter) 添加断言任意异常的扩展函数
- (auth) 更新权限检查信息断言
- (blade-util) 更新 TtlWrapperTest 中的测试用例 - 移除了对 TtlCallable 类型的检查 - 添加了对 ttlCallable 和 ttlSupplier 的 call 方法的测试 - 优化了测试用例,使其更加关注功能验证而非类型检查
- 移除不必要的集成测试 - 删除了 blade-data-redis、blade-lock 和 blade-sequence 模块中的 Spring Boot Starter 测试文件
- (openapi) 更新 @OpenApi 注解的第二个参数,使其与 API 路径匹配
- (auth) 修正用户 ID 断言错误
- (blade) 更新测试用例,清理无效测试
- (auth) 用户上下文相关测试 - 新增 UserContextsTest 类,覆盖用户上下文切换、系统用户上下文切换、异常处理等测试用例 - 重构 UserContextUtilTest 类,增加对用户 token 创建和验证的测试用例 - 优化测试代码结构,提高可读性和可维护性
- (user) 添加 CurrentUser 构建器测试 - 新增 AbstractCurrentUserInfoBuilderTest 类,实现对 CurrentUser 构建器的单元测试
- (auth) 权限解析和访问测试 - 新增 AuthSpringBootStarterTest 类,整合测试权限解析和访问控制 - 更新 AuthAnnotationTestController,添加新的测试方法 - 移除 UserContextUtilKtStarterTest 类,整合测试用例 - 新增对 OpenApi、InnerApi 和 PreCheckIgnore 注解的测试 - 优化权限解析测试,使用 AuthPermissionEndpointReportListener
⚙️ Miscellaneous Tasks
- (feature/3.0.0) Jimmer升级0.8.148
- (feature/3.0.0) 同步内容
[2.1.7] - 2024-07-22
💼 Other
- (feature/2.1.7) [兼容配置]仍然添加对Date输入输出的支持
[2.1.6] - 2024-07-17
🚀 Features
- (feature/3.0.0) 适配sb3
- (feature/3.0.0) Gradle.properties使用默认的group与Version标定项目组和版本
- (feature/3.0.0) 重命名实体类DeletedEntity
- (feature/3.0.0) [sequence] 升级cosid版本2.9.1
🐛 Bug Fixes
- (feature/3.0.0) [sequence] 修复blade.sequence.code.prefix对于Random类型生成无效 https://gitlab-scm.jzcang.cn/fashion/backend/common/blade/-/issues/23
- (feature/3.0.0) [mybatis-plus] 修复升级引起的数据权限拼接错误https://gitlab-scm.jzcang.cn/fashion/backend/common/blade/-/issues/24
- (feature/2.1.6) [auth] 修复StpLogic逻辑实现类
- (feature/2.1.6) [sequence] 修复blade.sequence.code.prefix对于Random类型生成无效 https://gitlab-scm.jzcang.cn/fashion/backend/common/blade/-/issues/23 - https://gitlab-scm.jzcang.cn/fashion/backend/common/blade/-/issues/23
💼 Other
- (feature/3.0.0) Springboot 3.3.2
- (feature/3.0.0) [web] 🪓废除对Date类型的输入输出支持 时间不再支持Date类型
- (feature/2.1.6) Release: 2.1.6
🚜 Refactor
- (feature/3.0.0) 废弃WebCustomizer接口 废除增量配置拦截器的方式
- (feature/3.0.0) 增加JDK版本的启动打印
- (feature/3.0.0) [jimmer] 添加SimpleBaseEntity不冗余name属性的基础实体类
- (feature/3.0.0) [jimmer] 完善注释
⚙️ Miscellaneous Tasks
- (feature/2.1.6) 添加jib插件依赖
- (feature/2.1.6) 升级gradle依赖版本
- (feature/3.0.0) 添加删除mac文件的脚本
[2.1.5] - 2024-07-10
💼 Other
- (feature/2.1.5-SNAPSHOT) Release:2.1.5
⚡ Performance
- (feature/2.1.3-SNAPSHOT) [core] ComplexPageParam复杂分页查询对象的当前分页字段由page修改为pageNum以免前端老项目修改过多 - ComplexPageParam复杂分页查询对象的当前分页字段由page修改为pageNum以免前端老项目修改过多 - 分页返回结构对象增加针对新版统一字段名的方式提供[PageVo.kt]
- (feature/2.1.3-SNAPSHOT) [mybatis] 修改拓展函数的命名 适配新版分页实体
[2.1.3] - 2024-07-09
🚀 Features
- (feature/2.1.3-SNAPSHOT) 完善Jimmer与mp的自动填充逻辑 修改为严格模式 自动填充字段 填充值要么全部由自动填充填充 要么全部按手动填充
- (feature/2.1.3-SNAPSHOT) 增加复杂分页转换spring分页对象方法toPageableOrDefaultSort 如果sort没有传递 默认使用 更新时间 创建时间降序排序
- (feature/2.1.3-SNAPSHOT) 增加IP地址离线解析IpAddrParser
- (feature/2.1.3-SNAPSHOT) Core增加表示失败成功的枚举ResultState
- (feature/2.1.3-SNAPSHOT) 增加base模块的单元测试 base无容器依赖 可以在项目内部执行单元测试 以保证基础的功能api无问题
- (feature/2.1.3-SNAPSHOT) Util包增加单元测试
- (feature/2.1.3-SNAPSHOT) 不添加JsonFormat方式LocalDateTime类型的增加毫秒时间格式的解析 https://gitlab-scm.jzcang.cn/fashion/backend/common/blade/-/issues/20 - 支持 2024-06-04 17:16:10.494毫秒类型的解析 - 其余自定义使用@JsonFormat实现
- (feature/2.1.3-SNAPSHOT) 🔥🔥🔥新增操作日志模块 https://gitlab-scm.jzcang.cn/fashion/backend/common/blade/-/issues/21 - 操作日志记录模块
- (feature/2.1.3-SNAPSHOT) 修改日志打印方式 自动配置类更简洁
- (feature/2.1.3-SNAPSHOT) OpLOg支持嵌套处理
- (feature/2.1.3-SNAPSHOT) OpLogParser对于spel字符的解析还是使用isNullOrBlank
- (feature/2.1.3-SNAPSHOT) [web]添加生产环境blade版本是否为正式版的启动校验
- (feature/2.1.3-SNAPSHOT) [core]限制分页的pageSize最大值为200
- (feature/2.1.3-SNAPSHOT) [web]添加依赖上报逻辑
- (feature/2.1.3-SNAPSHOT) [kotlin] 🔥升级2.0 - 🔥kotlin升级2.0 - 更新KSP版本适配2.0 - 抽取blade-oplog独立包 便于drawer引用 - 增加启动校验blade正式版
- (feature/2.1.3-SNAPSHOT) [oplog-starter]抽取精简AbstractOpTypeHandler的逻辑
- (feature/2.1.3-SNAPSHOT) [oplog-starter]防止result字符过大影响性能进行裁切
- 使用安全访问器配置项目Module 使用ksp生成BladeVersion
🐛 Bug Fixes
- (feature/2.1.3-SNAPSHOT) Jimmerservice的updateById默认使用了强制手动更新实现了
- (feature/2.1.3-SNAPSHOT) 开启解包并且返回false情况下是增加操作不记录日志 - 开启解包 - 解包结果为false - 是增加操作 结果:不记录日志
- (feature/2.1.3-SNAPSHOT) [tenant] 修复 jimmer自动配置没有依赖还会加载报错的问题
- (feature/2.1.3-SNAPSHOT) [util] 条件化注册ObjectMapper的jimmer动态对象Module
- (feature/2.1.3-SNAPSHOT) [oplog] 手动添加日志前缀oplog
- (feature/2.1.3-SNAPSHOT) [blade-oplog] fix忘记提交build.gradle.kts
- (feature/2.1.3-SNAPSHOT) [blade-oplog-starter] 支持查询、导出、导入等无法绑定归属bizId的场景
- (feature/2.1.3-SNAPSHOT) [blade-oplog-starter] 增加更新操作关于diffContent字段在成功场景下的校验
- (feature/2.1.3-SNAPSHOT) [oplog]配置文件默认值问题,简化文件配置的默认值可以不填写
- (feature/2.1.3-SNAPSHOT) [oplog] 修复
DataResponse<Unit>无法序列化的问题 - (feature/2.1.3-SNAPSHOT) [core] 增加版本生成
- (feature/2.1.3-SNAPSHOT) [core] 使用组合依赖方式而不是用继承
- (feature/2.1.3-SNAPSHOT) [ksp] BladeVersionProcessorProvider完善注释
💼 Other
- (feature/2.1.3-SNAPSHOT) 发布2.1.3正式版
🚜 Refactor
- (feature/2.1.3-SNAPSHOT) 合并catalog的发布到外层build 废除blade-catalog
- (feature/2.1.3-SNAPSHOT) 注解日志的success属性必填
- (feature/2.1.3-SNAPSHOT) OpLog注解属性fail修改为failure
- (feature/2.1.3-SNAPSHOT) 完善 注解Operator的获取
- (feature/2.1.3-SNAPSHOT) 完善diff的简洁定义方式 - 修改自定义函数的注解名称 - 调整操作人获取的方式
- (feature/2.1.3-SNAPSHOT) OpLogContext上下文初始化优化
- (feature/2.1.3-SNAPSHOT) 修正OpLogDto的
- (feature/2.1.3-SNAPSHOT) 修正OpLogDto的名称为 OpLogPayload
- (feature/2.1.3-SNAPSHOT) [oplog]简单抽离OpType对应的校验逻辑
- (feature/2.1.3-SNAPSHOT) 【oplog】修改diff老对象名称为_diffOldContent
- (feature/2.1.3-SNAPSHOT) [oplog] 增加飞书告警
- (feature/2.1.3-SNAPSHOT) [oplog] 完善飞书告警
📚 Documentation
- (feature/2.1.3-SNAPSHOT) 增加issue模板
- (feature/2.1.3-SNAPSHOT) 忽略.kotlin文件夹
- (feature/2.1.3-SNAPSHOT) [oplog]添加类注释
⚡ Performance
- (feature/2.1.3-SNAPSHOT) 改善mp与jimmer的自动填充逻辑 deleted createdTime revisedTime三个字段简单填充 无视一切配置 只判断用户如果手动设值则不自动填充 反之自动填充
- (feature/2.1.3-SNAPSHOT) 复杂分页查询实体默认排序toPageableOrDefaultSort添加可选更新时间字段排序 - 有一些表不一定有更新字段
- (feature/2.1.3-SNAPSHOT) 给予快照版本上线的友好提示
- (feature/2.1.3-SNAPSHOT) [oplog]开启异步发送告警
- (feature/2.1.3-SNAPSHOT) [oplog]支持通知多实现
- (feature/2.1.3-SNAPSHOT) [oplog]调整飞书机器人通知配置 便于拓展
- (feature/2.1.3-SNAPSHOT) [oplog]添加subcategory字段支持
- (feature/2.1.3-SNAPSHOT) [oplog]去除subcategory校验
- (feature/2.1.3-SNAPSHOT) [oplog]修改OpTypeHandlerFactory变量变成
- (feature/2.1.3-SNAPSHOT) [web] 上报使用批量接口
🎨 Styling
- (feature/2.1.3-SNAPSHOT) 添加完善oplog日志
- (feature/2.1.3-SNAPSHOT) 调整上下文结构
- (feature/2.1.3-SNAPSHOT) 【oplog】修改打印日志
- (feature/2.1.3-SNAPSHOT) 【oplog】消除启动警告
- (feature/2.1.3-SNAPSHOT) [oplog] 精简依赖
- (feature/2.1.3-SNAPSHOT) 修正依赖
- (feature/2.1.3-SNAPSHOT) 格式化代码升级jimmer到139
- (feature/2.1.3-SNAPSHOT) [versions]独立版本声明
⚙️ Miscellaneous Tasks
- (feature/2.1.3-SNAPSHOT) Update:jimmer:0.8.132
[2.1.2] - 2024-05-14
🚀 Features
- (feature/2.1.2-SNAPSHOT) 适配插件0.1.0版本
- (feature/2.1.2-SNAPSHOT) 抽离toml文件部署配置到单独的blade-catalog的module管理 1. 修改适配新版本的公共配置 2. 修改jimmer的版本为0.8.125
- (feature/add-issue-template) 添加issue模板
- (feature/2.1.2-SNAPSHOT) 改价mp自动填充逻辑https://gitlab-scm.jzcang.cn/fashion/backend/blade/-/issues/19 1 提供配置项(blade.mybatis-plus.force-auto-fill):默认true 开启使用Holder获取的字段值 强制自动填充(不管更新实体有无值) 原生方法updateById(entity) 2 如果关闭(blade.mybatis-plus.force-auto-fill)强制自动填充 就是现在的逻辑:更新实体相关字段只要有值 就使用更新实体的值 否则使用Holder获取的字段值填充 原生方法updateById(entity) 3 提供任何场景下(实际情况主要是针对少数异步或没有在线用户的场景下)无视blade.mybatis-plus.force-auto-fill的配置 可以强制使用实体属性值更新 提供拓展函数支持 userMapper.updateById(updateUser, forceManualFill = true) 或 userMapper.updateByIdForceManualFill(updateUser) 核心逻辑同2
- (feature/2.1.2-SNAPSHOT) 发布2.1.2
🐛 Bug Fixes
- (feature/2.1.2-SNAPSHOT) JDK编译版本过高导致JDK11无法使用gradle插件问题
- (feature/2.1.2-SNAPSHOT) 修复apm日志收集问题 - Skywalking-logback组件的GAV坐标错误 - 添加 Skywalking-logback依赖在apm-starter模块内
- (feature/2.1.2-SNAPSHOT) 修复apm日志收集问题 - Skywalking-logback组件的GAV坐标错误 - 添加 Skywalking-logback依赖在apm-starter模块内 - 调整依赖级别为api
- (feature/2.1.2-SNAPSHOT) 修复apm依赖为runtimeOnly
- (feature/2.1.2-SNAPSHOT) Feign模块多余引用了slf4j-api的2.0.x版本
- (feature/2.1.2-SNAPSHOT) 重组jackson内容 1. 删除不需要的module NullValueModule 2. 抽取jackson相关Module到独立的模块blade-jackson 3. 修复https://gitlab-scm.jzcang.cn/fashion/backend/blade/-/issues/13
- (feature/2.1.2-SNAPSHOT) 修复动态端口配置后打印最终随机端口值https://gitlab-scm.jzcang.cn/fashion/backend/blade/-/issues/10 - fix:https://gitlab-scm.jzcang.cn/fashion/backend/blade/-/issues/10 - 修改拦截器加载日志级别为info
- (feature/2.1.2-SNAPSHOT) 兼容放宽参数结构,自动忽略丢弃未知属性的接收https://gitlab-scm.jzcang.cn/fashion/backend/blade/-/issues/17
💼 Other
- (feature/2.1.2-SNAPSHOT) 修改jimmer版本为0.8.122
- (feature/2.1.2-SNAPSHOT) 自动配置打印的日志提升为info
- (feature/2.1.2-SNAPSHOT) 精简mp模块日志打印
- (feature/2.1.2-SNAPSHOT) 修改jimmer版本为0.8.130
- (feature/2.1.2-SNAPSHOT) 修整自动填充日志显示
⚙️ Miscellaneous Tasks
- (feature/2.1.2-SNAPSHOT) Feign模块使用openfeign-starter级别依赖管理 避免版本冲突
- (feature/2.1.2-SNAPSHOT) 添加kapt依赖插件
- (feature/2.1.2-SNAPSHOT) 升级jimmer以来到0.8.131
[2.1.1] - 2024-04-02
🚀 Features
- (feature/2.1.1-SNAPSHOT) 修正编译
- (feature/2.1.1-SNAPSHOT) 修改版本管理方式
- (feature/2.1.1-SNAPSHOT) 添加springboot springcloud基于catalog的依赖引入
- (feature/2.1.1-SNAPSHOT) 使用插件简化一点点settings文件的配置
- (feature/2.1.1-SNAPSHOT) 去除不需要的插件
- (feature/2.1.1-SNAPSHOT) 将随机与预取随机编码生成分离 预取随机编码实现未经测试
- (feature/2.1.1-SNAPSHOT) 预取随机编码实现未经测试 暂时先注释
- (feature/2.1.2-SNAPSHOT) BusinessCodeGenerator增加generate(codeRule: CodeRule, count: Long)
- (feature/2.1.1-SNAPSHOT) 发布正式版2.1.1
🐛 Bug Fixes
- (feature/2.1.1-SNAPSHOT) 排除Redisson依赖redis模块 Redisson默认使用springboot3 使用toml自定义版本代替
- (feature/2.1.1-SNAPSHOT) 修改编码生成逻辑
- (feature/refactor-code-gen) 修复使用统一编码生成访问端点串类型:https://gitlab-scm.jzcang.cn/fashion/backend/blade/-/issues/14
- (feature/2.1.1-SNAPSHOT) 临时修复: 批量生成随机数返回全部预生成编码问题-暂时使用旧代码
- (feature/2.1.2-SNAPSHOT) 编码生成
💼 Other
- (feature/2.1.0-SNAPSHOT) Change2gradle
- (feature/2.1.0-SNAPSHOT) 梳理gradle好结构
- (feature/2.1.0-SNAPSHOT) 调整依赖
- (feature/2.1.0-SNAPSHOT) 完善gradle结构
- (feature/2.1.1-SNAPSHOT) 修改dev.aga.gradle.version-catalog-generator插件版本为1.4.1
- (feature/2.1.1-SNAPSHOT) 修改依赖传递错误 1. 修改依赖传递错误 2.移动logback的依赖到logging-core 放在starter里死活加载不出来 3. 删除注释掉无用的AllowLogger类
- (feature/2.1.1-SNAPSHOT) 修改去除publishing的配置 修改jimmer版本107
- (feature/2.1.1-SNAPSHOT) 外置变量到gradle.properties中定义
- (feature/2.1.1-SNAPSHOT) 升级依赖版本 kotlinVersion = "1.9.23" googleKspVersion = "1.9.23-1.0.19" kotlinLoggingVersion = "6.0.3" fastjson2kotlinVersion = "2.0.47"
- (feature/2.1.1-SNAPSHOT) 将内部包做api引入
- (feature/2.1.1-SNAPSHOT) 修改jimmer版本为108
- (feature/2.1.1-SNAPSHOT) 修改gradle插件vcg版本为1.5.0
- (feature/2.1.1-SNAPSHOT) 增加metadata.json的生成
- (feature/2.1.1-SNAPSHOT) Starters的build文件使用toml定义的版本 去除写死版本
- (feature/2.1.1-SNAPSHOT) 排除gradle-dependencies的的publishing配置 不需要生成jar包
- (feature/2.1.1-SNAPSHOT) 删除父本地生成jar包
- (feature/2.1.1-SNAPSHOT) 格式化代码 抽取publish仓库配置
- (feature/2.1.1-SNAPSHOT) 统一使用catalog声明依赖
- (feature/2.1.1-SNAPSHOT) 简化toml版本命名 去除Version后缀
- (feature/2.1.1-SNAPSHOT) 回退版本 搞错了
- (feature/2.1.1-SNAPSHOT) 整理注释
- (feature/2.1.1-SNAPSHOT) 将mockito-inline修改为api传递依赖
- (feature/2.1.1-SNAPSHOT) 升级插件配置
- (feature/2.1.2-SNAPSHOT) 重构编号生成-未完成
- (feature/2.1.2-SNAPSHOT) 升级gradle依赖版本到8.7
- (feature/2.1.2-SNAPSHOT) 修改一些命名
🚜 Refactor
- (feature/2.1.2-SNAPSHOT) 重构编码生成
⚡ Performance
- (feature/2.1.1-SNAPSHOT) 迁移合并日志apm配置 1. 合并日志文件为一份logback-spring.xml 2. 迁移配置到apm-starter 不放在logging-core了 3. logging-starter变为一个空项目 是否保留后续再说
[2.0.2] - 2024-03-05
🚀 Features
- (feature/2.0.2) 提供复杂分页查询的外层实体ComplexPageParam对内层泛型实体T的级联JSR校验
🐛 Bug Fixes
- (feature/2.0.2-SNAPSHOT) 修复api日志打印实体参数格式问题 fixed:https://gitlab-scm.jzcang.cn/fashion/backend/blade/-/issues/12
- (bugfix/validation-api.version定义错误) 修改validation-api.version定义错误
💼 Other
- (feature/2.0.2-SNAPSHOT) 更新Jimmer的版本为0.8.94 添加分页拓展函数
- (feature/2.0.2-SNAPSHOT) 更新Jimmer的版本为0.8.100
- (feature/2.0.2-SNAPSHOT) 更新Jimmer的版本为0.8.101
- (feature/2.0.2-SNAPSHOT) 发布2.0.2
⚡ Performance
- (feature/2.0.2) 增加分页参数对象的排序类型为asc desc
[2.0.1] - 2024-01-31
🚀 Features
- (feature/2.0.1) Https://gitlab-scm.jzcang.cn/fashion/backend/blade/-/issues/3 增设逻辑 在com.zjkj.blade.user.builder.CurrentUserInfoBuilder#additionHandle 从JWT中获取Token信息(key为:ssoToken) 修改异常处理 提供标记接口:TokenErrorException,若拓展了该接口的异常类,捕获到后统一返回前端 401 错误 跳去登录页
- (feature/2.0.1) 修改Feign提供一个mock用户直接请求目标接口
- (feature/2.0.1) 缩小blade-feign包依赖
- (feature/2.0.1) 修改异步情况下中继Token从http header里拿不到信息的错误
- (feature/2.0.1) 提供TTL传递用户信息的TTL顶级函数
- (feature/2.0.1) 增加403异常
- (feature/2.0.1) 提供Mock单元测试获取当前用户信息 [test]增加单元测试方法withMockedCurrentUserContent
- (feature/2.0.1) Ciam的Token提供redis的存储器CiamTokenHolder 1. 登录后设置ciam token 2. 获取传递当前用户id获取
- (feature/2.0.1) Ciam Token存储在redis的代码迁移至独立包blade-plugin-ciam 不与blade耦合
- (feature/2.0.2) 添加ksp插件、jimmer公共配置模块
- (feature/2.0.2) 添加jimmer-starter模块
- (feature/2.0.2) 升级Jimmer版本到0.8.80/修改公共字段自动填充
- (feature/2.0.2) DataResponse针对failed的情况message的异常传递可为空
- (feature/2.0.2) 修改BaseServiceImpl findById数据不存在的提示词
- (feature/2.0.2) 升级jimmer版本为0.8.83、添加PageReq实体与spring data分页对象Pageable的转换、jimmer常用异常全局处理器的添加
- (feature/2.0.2) 增加新的分页组合结构对象PageParams/jimmer分页查询base方法 jimmer版本修改为0.8.84
- (feature/2.0.2) 添加jimmer多租户拦截器
- (feature/2.0.2) 添加简单的md5字符串生成用于Jimmer的id填充
- (dev) 新增SQL打印插件 SQL打印插件拦截器 -- 默认不开启 -- 需要开启请配置:blade.mybatis-plus.logging.enabled=true -- 可配置日志级别:blade.mybatis-plus.logging.level=INFO
- (feature/2.0.1) 修改UserClient接口ContextId名称,避免与其他冲突
- (feature/2.0.1) 全局异常AccessDeniedException处理,导入自定义的。
🐛 Bug Fixes
- (feature/2.0.1) 全局异常打印一些异常未打印异常栈
- (feature/2.0.2) 修复ApiParameterLogger中获取args数组元素为null问题
- (feature/2.0.2) 修复编译警告⚠️[WARNING] 未与 -source 11 一起设置系统模块路径
- (feature/2.0.1) 修复String.parseJsonList解析json串为数组类型错误 fixed:https://gitlab-scm.jzcang.cn/fashion/backend/blade/-/issues/11
💼 Other
- 修复feign 硬编码式声明@Bean的依赖顺序问题
- Format
- (feature/2.0.1) 完善mybatis-plus 自动填充器debug日志 完善mybatis-plus 自动填充器debug日志
- TokenHolder里的clean方法调用错误 本地变量的remove调用前判断是否存在值 不存在则不用调用
- DataResponse修改为直接使用主构造器构造对象
- (feature/2.0.1) 创建changelog文件
- (feature/2.0.1) 更新jackson-bom版本至2.16.1 解决: 1. kotlin下同类下属性有is 无is的序列化错误 例如:isAdmin admin 在jackson序列化时会认为是同个字段 会报错 Conflicting getter definitions for property "isAdmin": com.zjkj.fashion.user.profile.role.vo.req.SysRoleUpdateReq#getIsAdmin() vs com.zjkj.fashion.user.profile.role.vo.req.SysRoleUpdateReq#getAdmin() 2. mapstruct也会有类似问题
- (feature/2.0.2) 添加Jimmer BaseService的注释
- (feature/2.0.1) 发布2.0.1版本正式版本
🚜 Refactor
- (feature/2.0.1) 请求404处理返回固定Json结构、分离自有系统与Ciam常用常量
⚡ Performance
- (feature/2.0.1) RedisTemplate的Value序列化修改为json方式
- (feature/2.0.1) 将MockFeign拦截器、code编码生成默认置为关闭 1. 将MockFeign拦截器、code编码生成默认置为关闭 2. 修复当关闭MockFeign开关后,仍然校验配置文件为空不通过问题
- (feature/2.0.1) DataPermissionInterceptor当查询权限结果集合为空时,返回恒不等式1=2 阻止查出数据
- (feature/2.0.2) 调整Jimmer异常处理器的优先级到最高避免被全局异常处理器先处理了异常 - 修改判空文件名为NullChecker - 提供DataResponse顶级函数的api 使用更方便
- (feature/2.0.2) 为Jimmer数据创建方法添加事务注解
🎨 Styling
- (feature/2.0.1) 修改分页结构属性类型为Int 涉及PageReq、PageRespVo
- (feature/2.0.2) 移除jimmer实体基类BaseEntity的id字段提供拓展性 补全jimmer基类实体的注释
- (feature/2.0.2) 修改BaseServiceImpl将Repository移动到最后面
- (feature/2.0.2) 优化导包和格式化代码
📝 Generated by aikero-ci-robot with ❤️
