51 Star 585 Fork 233

ballcat-projects / ballcat

2023-10-24 13:00
1438397 hccake 1622643582 Hccake

✨ 添加 DistributedLock 在获取锁失败时可以进行自旋重试的能力。
@Cached 注解默认进行 3 次自旋尝试,可通过属性 retryCount 进行修改。

最后提交信息为: :bookmark:release 1.4.1
2023-05-31 08:59
1438397 hccake 1622643582 Hccake

[1.4.0] 2023-05-31

💛 Warning

  • TraceId 过滤器从日志模块迁移到了 ballcat-spring-boot-starter-web 模块中
  • TraceId 请求响应头的 name 修改为可配置,默认值为 X-Trace-Id,之前为 traceId,注意调整代码或修改配置(ballcat.web.trace-id-header-name)

⭐ Features

日志模块

  • :sparkles: (Log) 新增 ballcat.log.access.filter-order 用于配置访问日志的过滤器优先级,默认值 -1000
  • :art: (Log) 默认的访问日志处理器,抽取请求响应体是否应该记录的判断方法,方便用户继承重写
  • :recycle: 重构 TraceId 相关代码
    • 迁移 TraceIdFilter 到 web 模块中
    • TraceId 先从请求头中读取,没有的话再进行生成
    • TraceId 响应头的 name 修改为可配置,默认值为 X-Trace-Id
    • 抽取 TraceIdGenerator 接口,方便用户覆盖默认的 TraceId 生成逻辑

OAuth2

  • :zap: 优化资源所有者授权模式登陆时的错误提示信息

业务模块

  • :pencil2: 错别字修正,登陆 -> 登录

🔨 Dependency

  • :arrow_up: bump easyexcel from 3.1.5 to 3.3.2
最后提交信息为: :bookmark:release v1.4.0
2023-05-24 10:12
1438397 hccake 1622643582 Hccake

[1.3.0] 2023-05-23

💛 Warning

  • 修改了 user 表中的字段名称, 使其更具规范性,sex -> gender, phone -> phone_number
  • 修改了所有业务表的主键 id 类型,从 integer 调整为 long 类型

⭐ Features

通用模块

涉及模块:ballcat-common-coreballcat-common-modelballcat-common-util

  • :sparkles: 添加系统命令执行工具类
  • :sparkles: 添加等待队列, 无限等待至队列中存在值
  • :sparkles: 添加线程池工具类
  • :sparkles: 添加布尔工具类
  • :sparkles: 添加StopWatch用于计算执行耗时
  • :zap: 切换动态定时器队列到线程安全队列

OAuth2

  • :sparkles: (OAuth2) 抽象资源所有者授权模型,方便用户扩展登陆方式
  • :bug: (OAuth2) fix refresh token 未持久化导致无法使用的问题
  • :zap: 允许用户仅通过实现 OAuth2TokenResponseEnhancer 接口进行覆盖默认 Token 响应增强的行为
  • :zap: 补充登陆时返回的用户信息,额外返回手机号、邮箱、性别

数据权限

涉及模块:ballcat-spring-boot-starter-datascope

  • :sparkles: (数据权限) DataPermissionUtils#executeWithDataPermissionRule 支持返回值

钉钉通知

涉及模块:ballcat-extend-dingtalk

  • :sparkles: 添加钉钉负载发送类

GRPC

涉及模块:ballcat-spring-boot-starter-grpc

  • :sparkles: 添加 grpc starter 模块

业务模块

  • :bug: (System) 修复组织架构返回未按sort字段进行排序的问题 (#252)
  • :zap: (System) 增加角色code检测,防止新增已存在的code时直接返回数据库异常 (#253)
  • :recycle: 所有业务表主键修改为 Long 类型
  • :recycle: sys_user 表中 sex 字段改为 gender, phone 改为 phone_number

🔨 Dependency

  • :arrow_up: spring-boot from 2.7.11 to 2.7.12
  • :arrow_up: bump flatten-maven-plugin from 1.3.0 to 1.5.0
  • :arrow_up: bump maven-compiler-plugin from 3.10.1 to 3.11.0
  • :arrow_up: bump maven-resource-plugin from 3.3.0 to 3.3.1
  • :arrow_up: bump maven-release-plugin from 3.0.0-M7 to 3.0.0
  • :arrow_up: bump maven-javadoc-plugin from 3.4.1 to 3.5.0
  • :arrow_up: bump maven-source-plugin from 3.2.1 to 3.3.0
  • :arrow_up: bump spring-javaformat-maven-plugin from 0.0.38 to 0.0.39
  • :pushpin: remove s3-transfer-manager, s3-transfer-manager is released and can manage it with s3-bom
最后提交信息为: :bookmark:release v1.3.0
2023-05-11 10:09
1438397 hccake 1622643582 Hccake

[1.2.0] 2023-05-10

💛 Warning

  • 移除了 ballcat-auth 模块以及所有 spring-security-oauth2 的相关代码

⭐ Features

  • :art: 授权服务器和资源服务器配置切换到 SecurityFilterChain
  • :fire: 移除授权服务器中的 AuthenticationManagerConfiguration
  • :zap: (OAuth2) 密码模式改为直接使用 DaoAuthenticationProvider 进行认证操作,避免 AuthenticationManagerProvider 之间的循环依赖
  • :sparkles: (OSS) 新增 ballcat.oss.chunked-encoding 配置,用于控制是否进行分块传输,默认为 false (#250)
最后提交信息为: :bookmark:release 1.2.0
2023-04-25 13:39
1438397 hccake 1622643582 Hccake

[1.1.0] 2022-04-24

💛 Warning

  • 数据权限中 DataScope 不兼容更新,getTableNames 修改为 includes

  • Redis 组件中的 ballcat.redis.locked-time-out 配置修改为ballcat.redis.default-lock-timeout 并修改默认值为 10s

  • spring-javaformat 新版本优化了链式调用代码的格式化,更新后重新 format 代码,会导致大量文件更新。

  • 授权服务器的登录验证码开关默认值切换为 false,开启了验证码校验的注意修改对应配置为 true.

  • ballcat-admin-core 模块不再默认开启资源服务器的配置,需要用户在自己的配置类上手动添加 @EnableOauth2ResourceServer 注解。

  • ballcat-admin-core 不再传递授权服务器的依赖,用户根据自己的需要在配置类上添加对应的注解,以及 pom.xml 中引入对应的依赖:

    • 切换到 spring authorization server

            <!-- 基于 spring authorization server 的授权服务器 -->
          <dependency>
              <groupId>com.hccake</groupId>
              <artifactId>ballcat-spring-security-oauth2-authorization-server</artifactId>
          </dependency>
      

      添加注解 @org.ballcat.springsecurity.oauth2.server.authorization.annotation.EnableOauth2AuthorizationServer

    • 或者继续使用 spring-oauth2

               <!-- 已废弃,基于 spring oauth2 的授权服务器 -->
           <dependency>
               <groupId>com.hccake</groupId>
               <artifactId>ballcat-auth-controller</artifactId>
               <scope>provided</scope>
           </dependency>
      

      添加注解 @com.hccake.ballcat.auth.annotation.EnableOauth2AuthorizationServer

  • spring authorization server 的登陆和退出端点变更为 /oauth2/token/oauth2/revoke,请求方式也略有不同,请注意同步前端更新

⭐ Features

全局

  • :fire: 移除 dynamic-datasource 和 jasypt 等未在 ballcat 仓库中直接使用的第三方工具的版本管理
  • :sparkles: 版本统一由ballcat-dependencies模块管理,顶级父工程不再重复管理
  • :rotating_light: 处理部分 SonarLint Error

OAuth2 授权服务器

涉及模块:ballcat-spring-security-oauth2-authorization-server

  • :sparkles: 使用 accessTokenResponseHandler 方式配置 token 增强,方便作用于所有的 grant_type
  • :zap: 授权服务器的登录验证码开关默认值设置为 false
  • :sparkles: 提供默认的 BallcatOAuth2TokenCustomizer,方便做远程 token 自省
  • :sparkles: (授权服务器) 不再自动配置,改为使用 @EnableOauth2AuthorizationServer 注解显式开启
  • :sparkles: 添加 AnonymousForeverAuthenticationProvider,用于在使用错误 token 的访问资源时不终止流程,而是切换身份到匿名用户访问
  • :white_check_mark: (OAuth2) 添加授权服务器部分功能的单元测试
  • :sparkles: 提供了 OAuth2AuthorizationObjectMapperCustomizer 类,方便用户扩展 OAuth2Authorization 的序列化逻辑

OAuth2 资源服务器:

涉及模块:ballcat-spring-security-oauth2-resource-server

  • :zap: (资源服务器) 远程不透明令牌自省器从 nimbus 实现迁移到 spring 实现,并移除 nimbus 依赖
  • :zap: (资源服务器) 优化远程自省时解析的 attributes,只保留必要属性
  • :zap: 删除手动指定鉴权管理器操作,开启资源服务器后默认会创建

后台管理模块

  • :bug: fix 角色分页查询条件错误添加了 code 的问题

通用模块

涉及模块:ballcat-common-coreballcat-common-modelballcat-common-util

  • :recycle: BooleanEnum 重构, 同时管理 boolean 类型和对应的 int 类型值, 使用包装类, 方便与包装类进行 equals 判断, 避免拆箱的空指针
  • :recycle: 重载部分R对象方法
  • :art: 精简依赖范围 ballcat-common-util 的依赖 hutool-extra 缩小为 hutool-core
  • :sparkles: 添加 array 工具类
  • :sparkles: 添加https部分静态实现
  • :bug: 修复 AbstractQueueThread 线程被中断的情况下, 未正确调用 shutdown 方法的问题
  • :zap: 补充部分工具类
  • :sparkles: 添加spring 环境工具类
  • :sparkles: 添加LocalDateTime工具类
  • :zap: markdown支持代码写入
  • :sparkles: 添加指定动态休眠的定时器

脱敏工具

涉及模块:ballcat-common-desensitize

  • :zap: Holder 中的数据存储从静态常量修改为实例属性
  • :white_check_mark: 修复在不同顺序下执行测试用例导致结果不同的问题

IP 组件

涉及模块:ballcat-spring-boot-starter-ip2region

  • :sparkles: Ip工具类添加两个静默查询方法

Redis 组件

涉及模块:ballcat-common-redisballcat-spring-boot-starter-redis

  • :sparkles: 缓存锁添加几个超时时间的重载方法,方便用户自己控制锁释放时间
  • :recycle: 分布式锁使用spring内置断言替代hutool断言
  • :zap: ballcat.redis.locked-time-out 配置修改为ballcat.redis.default-lock-timeout 并修改默认值为 10s
  • :zap: CacheLock 类移动到 lock 包下,同时移除内部 redisTemplate 的引用,改为使用 RedisHelper
  • :sparkles: redis 支持对redis的新增、修改、删除、过期的监听

数据权限

涉及模块:ballcat-spring-boot-starter-datascope

  • :sparkles: 新增 DataPermissionUtils#executeAndIgnoreAll 方法,方便忽略数据权限进行方法执行

  • :boom: DataScope 使用 includes 方法替换原 getTableNames 方法,以便支持更加多元化的方式来判断是否需要控制当前表

mybatis

涉及模块:ballcat-extend-mybatis-plus

  • :sparkles: LambdaQueryWrapperX#isPresent 添加对 Optional 和 Map 的判空支持

NTP 服务

涉及模块:ballcat-extend-ntp

  • :sparkles: 添加ntp模块, 添加 NtpCn 类便于国内使用

钉钉通知

涉及模块:ballcat-extend-dingtalk

  • :zap: 钉钉消息发送模块请求工具转为okhttp
  • :bug: 修复 MarkDown 引用文本换行异常
  • :zap: MarkDown 添加支持多行引用文本的方法
  • :white_check_mark: 添加钉钉消息发送测试用例

🔨 Dependency

  • :arrow_up: commons-net from 3.8.0 to 3.9.0
  • :arrow_up: springdoc-openapi from 1.6.13 to 1.7.0
  • :arrow_up: spring-boot from 2.7.6 to 2.7.11
  • :arrow_up: easyexcel from 3.1.2 to 3.1.5
  • :arrow_up: hutool from 5.8.10 to 5.8.16
  • :arrow_up: mybatis-plus from 3.5.2 to 3.5.3.1
  • :arrow_up: spring-authorization-server from 0.4.0 to 0.4.2
  • :arrow_up: spring-javaformat from 0.0.35 to 0.0.38
  • :arrow_up: xxl-job from 2.3.1 to 2.4.0
  • :arrow_up: lombok from 1.18.24 to 1.18.26
  • :arrow_up: ip2region from 2.6.6 to 2.7.0
2022-12-05 10:39
1438397 hccake 1622643582 Hccake

[1.0.3] 2022-12-05

💛 Warning

此版本移除了 ballcat 的 pom 中配置的 maven resource filter 控制,会导致 application.yml 中的 @profiles.active@
等占位符无法正确解析替换,注意在自己项目的 pom.xml 中添加对应的 maven resource filter 配置。

配置方式参看: Maven 占位符配置

⭐ Features

全局

  • :fire: 移除 ballcat pom.xml 中对于 maven resource 的过滤配置,交由项目自己控制
  • :rotating_light: fix some java doc warning
  • :construction_worker: 明确指定 maven-surefire-plugin 插件的版本以及执行的字符集为 UTF-8
  • :construction_worker: 取消 maven 编译插件编译时跳过 test class 的配置
  • :white_check_mark: 修复单元测试在 maven test 命令时不执行或者执行报错的问题

定时任务组件

涉及模块:ballcat-spring-boot-starter-job

  • :bug: (定时任务) 修复xxl-job执行器存在默认名称导致自动注册spring应用名失败

IP 组件

涉及模块:ballcat-spring-boot-starter-ip2region

  • :bug: 修复用户在启用资源过滤的情况下 ip2region 数据文件损坏的问题

Redis 组件

涉及模块:ballcat-common-redisballcat-spring-boot-starter-redis

  • :zap: 明确指定下 Ballcat Redis 自动配置的顺序,需要在 spring-boot 的自动配置之前
  • :bug: 修复 RedisHelper#setExAt 的过期时间设置不正确的问题
  • :bug: 修复 RedisHelper#incrByAndExpire 序列化异常与 lua 脚本错误问题

数据权限

涉及模块:ballcat-spring-boot-starter-datascope

  • :sparkles: 添加只有 JOIN 关键字的连表 sql 处理支持
  • :bug: 修复在排除部分 DataScope 后剩余的 DataScope 没有匹配中当前 sql,导致后续不排除 DataScope 再执行时跳过了数据权限的问题
  • :bug: 修复在 DataScope 内部又进行了 SQL 查询导致数据权限控制递归调用时,导致的空指针问题

Excel 组件

涉及模块:ballcat-spring-boot-starter-easyexcel

  • :sparkles: Excel 导出支持动态 sheet 数量,不必指定 sheet 属性
  • :sparkles: Excel 导出支持指定 fill 填充模式
  • :zap: 添加 @ResponseExcel 导出的校验:fill 属性必须配合 template 使用
  • :sparkles: 添加 EmptyHeadGenerator 组件,用来忽略 excel 头生成
  • :art: Excel 导出部分过期方法替换
  • :bug: 修复 Excel 导出名称有空格时变成 + 号的问题
  • :white_check_mark: 添加 Excel 基础功能的测试方法
  • :white_check_mark: 添加导出时不写入头信息的单元测试用例

🔨 Dependency

  • :arrow_up: hutool from 5.8.9 to 5.8.10
  • :arrow_up: ip2region from 2.6.5 to 2.6.6
  • :arrow_up: s3 from 2.18.6 to 2.18.20
  • :arrow_up: spring-boot from 2.7.5 to 2.7.6
  • :pushpin: spring-authorization-server from 0.4.0-M2 to 0.4.0
最后提交信息为: :bookmark:release ballcat v1.0.3
2022-11-17 20:50
1438397 hccake 1622643582 Hccake

[1.0.1] 2022-11-16

💛 Warning

此版本移除了 @EnableAccessLog@EnableOperationLog 注解,访问日志和操作日志将默认启用,用户可以使用
ballcat.log.access.enabled=falseballcat.log.operation.enabled=false 配置来进行关闭

⭐ Features

  • :sparkles: (Log) 使用配置替换注解来控制日志的开启和关闭
  • :bug: 修复 MdcTaskDecorator 清除子线程 MDC 上下文时机不对
  • :bug: 修复 LambdaAliasWrapper 构建嵌套条件时,生成的 SQL 条件对应值为 null 的问题
  • :fire: 删除 AbstractIdTreeNode,防止用户使用不当造成一些一场问题
最后提交信息为: :bookmark:release ballcat v1.0.1
2022-11-09 10:54
1438397 hccake 1622643582 Hccake

[1.0.0] 2022-11-08

💛 Warning

  • ballcat-auth 相关组件标记为过期,授权服务器将于下个版本切换到 spring-authorization-server
  • OAuth2 授权码流程现在使用无状态登录,需要配合前端页面改动(注意升级前端页面)
  • OssClient 过期,现在推荐使用 OssTemplate 组件
  • oss 移除 domain 属性配置,可用 endpoint 属性配置替代,endpoint 属性配置兼容端点与自定义域名
  • oss endpoint 属性配置需配置协议头,例如:http://s3-cn-east-1.qiniucs.com
  • oss 移除 rootPath 属性配置(可用 object-key-prefix 属性配置替代)
  • xxl-job 相关配置添加前缀 ballcat
  • 日志组件的配置现在默认集成到 ballcat-admin-core 中,在不修改的默认实现的情况下无需自己添加配置类了
  • ballcat-common-security 组件移除,部分类的包名有变动
  • 验证码组件切换到了 tianai-captcha,如果想继续使用原 anji-captcha, 注意前后端验证码相关代码都不要改动

⭐ Features

全局优化

  • :rotating_light: fix some javadoc warning
  • :green_heart: 移除 git 换行符配置避免, git 换行符处理导致的 jpg 文件损坏
  • :pushpin: 统一使用 jakarta 替换 javax
  • :zap: 优化 maven 依赖配置:
    • 移除 spring-boot-configuration-processor 的依赖传递
    • 清理 IDEA 自动生成的部分无用配置
    • 格式化 pom 文件,依赖、模块引入等按照字母顺序排列

业务模块

  • :bug: (Notify) 修复可以查询到已删除公告的问题
  • :bug: (System) 修复多管理员同时删除角色造成的空指针问题
  • :zap: (System) 对字典的新建修改添加校验
  • :sparkles: (System) 允许用户新建菜单时不指定 id, 而是使用自增的方式 (#gh-220)
  • :zap: (System) 字典项修改时状态可以不传

ballcat-admin-core

:sparkles: 内置默认的日志配置类,并根据当前使用的授权服务器注入不同的登陆处理器

Redis 组件

涉及模块:ballcat-common-redisballcat-spring-boot-starter-redis

  • :sparkles: @CacheDel 注解增强为可重复注解
  • :sparkles: RedisHelper 几个带过期时间的方法添加过期时间单位支持
  • @CacheDel 注解添加 allEntries 属性,支持删除同一个命名空间下所有相关key

mybatis-plus 相关

涉及模块:ballcat-extend-mybatis-plus

  • :sparkles: WrapperX 组件新增 lambdaUpdate 方法

OpenAPI 组件

涉及模块:ballcat-extend-openapi

  • :bug: fix 在 webflux 环境下无法启动的问题

ballcat-common-core

  • :sparkles: 添加上下文组件, 以及上下文组件接入 spring
  • :art: 现有线程顶级类使用上下文组件的方式接入 spring
  • :sparkles: SpringUtils 添加一个 publishEvent 发布事件方法
  • :sparkles: validate 注解支持使用 {} 替换非占位符的 default message

ballcat-common-model

  • :art: SystemResultCode 添加部分常用状态码
  • :art: 修改 SelectData 属性 extendObj 为 attributes

ballcat-common-util

  • :art: 修改 TreeNode 定义,使用 key 和 parentKey 做为父子节点的关联属性,更普适化
  • :sparkles: 添加 TreeUtils#forEachDFS 方法,深度优先遍历树节点

IP 组件

  • :sparkles: 添加 ballcat-spring-boot-starter-ip2region 模块,方便快速集成 Ip2region

定时任务组件

涉及模块:ballcat-spring-boot-starter-job

  • :boom: 调整 xxl-job 配置添加 ballcat 前缀
  • :recycle: 优化 xxl-job 的自动配置
  • :fire: 移除 @EnableXxlJob 注解, 用户现在可以通过 ballcat.xxl.job.enabledfalse 来关闭 xxl-job 的使用

幂等组件

涉及模块:ballcat-common-idempotentballcat-spring-boot-starter-idempotent

  • :sparkles: 添加幂等组件 starter
  • :recycle: 抽象幂等 key 前缀生成器
  • :recycle: 优化幂等插件包结构
  • :truck: KeyGenerator 接口修改为 IdempotentKeyGenerator, 防止自动配置和别的组件的 keyGenerator 重名导致的注册失败

OSS 组件

涉及模块:ballcat-spring-boot-starter-oss

  • :boom: 重新实现的 OSS 操作,部分兼容老版API,并补全许多 S3 原生操作封装支持
  • :boom: oss 移除 domain 属性配置(可用 endpoint 属性替代, endpoint 兼容端点与自定义域名)
  • :boom: oss endpoint 属性配置需配置协议头
  • :boom: oss 移除rootPath属性配置 (可用 object-key-prefix 属性配置替代)
  • :sparkles: oss 新增enabled属性配置,用于控制oss是否启用
  • :sparkles: 新增 OssTemplate 组件,用以替代原 OssClient 组件
  • :sparkles: 新增 ObjectWithGlobalKeyPrefixOssTemplate 支持原 OssClient 中配置的全局 key 前缀

Security 相关

  • :recycle:ballcat-common-security 模块进行拆分
  • :sparkles: 添加 ballcat-security-core 模块,验证码 validator 迁入此模块方便复用
  • :fire: 移除过时的忽略鉴权路径,使用 ballcat.security.oauth2.resourceserver.ignore-urls 配置
  • :zap: AuthenticationManager 交由授权服务器注册

ballcat-auth

  • :zap: 密码解密判断在非密码模式下直接跳过
  • :sparkles: 使用 scope 来控制客户端是否跳过验证码以及密码解密
  • :art: 客户端登录验证 client id 和 client secret
  • :fire: 移除弃用的测试客户端判断方法
  • :recycle: 表单登录的配置从资源服务器迁移到授权服务器
  • :art: 缩小 auth 模块的包扫描范围
  • :sparkles: 对于授权码流程使用 STATELESS 无状态登录模式

Excel 模块

涉及组件:ballcat-spring-boot-starter-excel

  • :sparkles: DefaultAnalysisEventListener 添加 set 方法,便于 excel 导入时指定表头行数
  • :sparkles: @RequestExcel 注解添加 headRowNumber 属性方便指定 Excel Head 行数
  • :adhesive_bandage: 临时使用覆盖 class 的方式修复 easyexcel 导入 excel 时,在 Listener 的 invokeHead 中修改头信息不生效的问题

Web 相关

涉及模块:ballcat-spring-boot-starter-web

  • :rewind: 为了兼容部分客户端软件,回退使用 application/json;charset=UTF-8content-type
  • :bulb: 修复 PageParamArgumentResolverSupport 类中一个错误的注释
  • :sparkles: 异常通知支持同时发送给多个渠道, 旧配置方法过期
  • :fire: 移除无用的 additional-spring-configuration-metadata.json 文件
  • :zap: 优化 SpringUtils 中的 ApplicationContext 注入时机

日志组件

涉及模块:ballcat-common-logballcat-spring-boot-starter-log

  • :art: 提高 access log filter order,以便在 security filter chain 之前调用
  • :zap: LoginLogUtils 抽取
  • :sparkles: 内置默认的日志配置类,并根据当前使用的授权服务器注入不同的登陆处理器
  • :fire: 移除 LogUtils 中无用代码

🔨 Dependency

  • :pushpin: 使用 springdoc-openapi bom 进行相关依赖管理

  • 依赖:

    • 【修改】使用 jakarta 相关依赖替换 javax
    • 【升级】awssdk from 2.18.2 to 2.18.6
    • 【升级】easyexcel from 3.1.1 to 3.1.2
    • 【升级】flatten-maven-plugin from 1.2.5 to 1.3.0
    • 【升级】hutool from 5.8.5 to 5.8.9
    • 【升级】jsoup from 1.15.2 to 1.15.3
    • 【升级】swagger from 1.5.21 to 1.6.8
    • 【升级】swagger-v3 from 2.2.0 to 2.2.4
    • 【升级】spring-boot from 2.7.3 to 2.7.5
    • 【升级】spring-security-oauth2 from 2.3.8.RELEASE to 2.5.2.RELEASE
    • 【升级】springdoc-openapi from 1.6.11 to 1.6.12
  • 插件:

    • 【升级】spring-javaformat from 0.0.34 to 0.0.35
    • 【升级】maven-compiler-plugin from 3.8.0 to 3.10.1
    • 【升级】maven-source-plugin from 3.1.0 to 3.2.1
    • 【升级】maven-javadoc-plugin from 3.1.1 to 3.4.1
    • 【升级】nexus-staging-maven-plugin from 1.6.8 to 1.6.13
最后提交信息为: :bookmark:release v1.0.0
2022-09-01 10:13
1438397 hccake 1622643582 Hccake

[0.9.0] 2022-08-31

⭐ Features

Common 相关

涉及模块:ballcat-common-core ballcat-common-util

  • :bug: 修复 AbstractQueueThread 中 getPollTimeoutMs 修饰符错误导致无法被子类覆写
  • 🌟 新增系统工具类, 完善多个工具类方法.
  • 🌟 新增 AbstractTimer 定时器线程
  • :bug: 修复部分情况下, 临时文件夹被删除导致文件处理失败

WebSocket 相关

涉及模块:ballcat-common-websocket ballcat-spring-boot-starter-websocket

  • ⚡ 减少获取 sessionKey 时发生 NPE 的可能性
  • 🌟 新增使用 RocketMQ 做为消息分发器的相关代码

Redis 相关

涉及模块:ballcat-common-redis ballcat-spring-boot-starter-redis

  • ⚡ 优化 CacheLock 的 RedisScript 使用单例模式,防止产生不同的 sha 值
  • RedisHelper 方法名重构,命名规则修改参考 redis 原生命令
  • 🌟 RedisHelper 添加 Stream 流相关使用方法以及其他数据结构的常用方法

OpenAPI 文档

涉及模块:ballcat-extend-openapi

  • 🐛 修复 swagger-ui 中分页查询 sort 参数无法添加多个的问题
  • 🐛 修复 sort 的正则中.未加转义字符,导致校验不严谨的问题
  • 🐛 修复使用 jar 包运行时无法正确显示分页参数的问题

Log 日志相关

涉及模块:ballcat-common-log ballcat-log-biz ballcat-spring-boot-starter-log

  • :zap: 操作日志相关注解的 type 属性从枚举修改为 int,方便用户扩展
  • :zap: 只在用户名密码方式鉴权失败时进行登录失败的日志记录

mybatis 相关

涉及模块:ballcat-extend-mybatis-plus

  • 🐛 修复 EnumNameTypeHandler 为默认枚举类型处理器时 处理实现IEnum的枚举值获取异常

🔨 Dependency

  • 【升级】spring-boot from 2.7.1 to 2.7.3
  • 【升级】jsoup from 1.14.3 to 1.15.2
  • 【升级】hutool from 5.8.3 to 5.8.5
  • 【升级】springdoc-openapi from 1.6.9 to 1.6.11
  • 【升级】spring-javaformat from 0.0.31 to 0.0.34
  • 【升级】mapstruct from 1.4.2.final to 1.5.2.final
最后提交信息为: :bookmark:release v0.9.0
2022-07-13 10:19
1438397 hccake 1622643582 Hccake

[0.8.0] 2022-07-12

:warning: Warning

  • 分页参数的默认参数名修改为 page,前端注意对应更新, 也可以通过配置 ballcat.pageable.page-parameter-name 修改为之前版本的参数名 current
  • 验证码 anji-captch 相关的配置以及依赖移除,用户根据自己需求按需添加。(相关代码示例,在 ballcat-admin-sample 和 ballcat-boot 模板仓库中可以查看)
  • ballcat.upms 下指定超级管理员的 id 和 username 的配置,移动到 ballcat.system 下了
  • 分页上限配置 ballcat.web.max-page-size 现在改为 ballcat.pageable.max-page-size

⭐ Features

全局调整

  • 🎨 使用 @SneakyThrows 注解使用时显示指定异常类型
  • 🌟 全局 starter 支持 spring-boot 2.7.x 后使用的 AutoConfiguration.imports 的方式进行自动配置的加载
    (目前依然兼容低版本 springboot 使用 spring.factories 的自动注册方法)

短信相关改动 ballcat-spring-boot-starter-sms

  • 🌟 整合 aliyun 短信服务
  • 🌟 调整腾讯云 sdk 版本,解决与 aliyun 依赖冲突问题

文件上传 ballcat-spring-boot-starter-file

  • 🎨 FTP 文件上传切换使用 hutool 工具类实现
  • 🐞 修复本地文件上传时返回的路径错误问题
  • ♻ 重构 File 模块的代码结构

国际化 ballcat-i18n

  • 🐞 修复 I18nData 的 resultMap 中,字段 remark 多加了一个 s 的问题
  • 🌟 @I18nField 注解的 code 值支持使用 SPEL 表达式
  • 🌟 添加 @I18nIgnore 注解,可以添加在 controller 的方法上,用于指定忽略 I18n 处理

数据权限 ballcat-spring-boot-starter-datascope

  • ⚡ 优化 DataPermissionRule 的构建方式,添加有参构造,以及支持链式调用
  • ⚡ 将编程式数据权限控制的方法从 DataPermissionHandler 的实例方法,抽取为 DataPermissionUtils 的一个静态方法,使用更加简单便捷
  • 🐞 修复在 DataScope 中执行 sql 导致嵌套执行拦截器,出现匹配计数空指针的问题
  • ✅ add jsqlparse table alias test

密码相关 ballcat-system ballcat-auth ballcat-common-security

  • 🌟 系统用户新建和修改密码时使用 PasswordEncoder 进行加密处理,方便使用者更换密码算法
  • 🌟 系统用户的密码正则规则支持使用 yml 配置进行自定义:ballcat.system.password-rule
  • 🔥 移除 PasswordUtilsencode 以及 matches 等方法,防止用户错误使用.
  • 🎨 PasswordUtils#createDelegatingPasswordEncoder 修改为 public 方法,方便外部调用
  • 🎨 优化下修改密码时,密码异常的错误提示

分页查询相关 ballcat-spring-boot-starter-web ballcat-common-model

  • 🌟 排序参数兼容使用尾缀 [] 的方式进行传参,例如 sortsort[] 都可以做为排序参数
  • 🎨 默认的当前页参数由 current 修改为 page,后续版本中将移除 PageParam 的 current 属性
  • 🌟 分页参数支持自定义参数名:
    ballcat:
      pageable:
        page-parameter-name: page # 不想改动前端,这里可以修改为 current
        size-parameter-name: size
        sort-parameter-name: sort #同时会自动支持尾缀[]的参数形式,如 sort[]
        max-page-size: 100
    

OpenAPI 文档 ballcat-extend-openapi

  • 🌟 添加对于动态分页参数的支持,会自动根据配置进行切换文档中的分页查询属性
    (在引入了 ballcat-spring-boot-starter-web 的情况下)

Redis 相关

  • 🌟 缓存/缓存更新注解增强: 增加时长单位

mybatis-plus-extend

  • 🐞 修复 LambdaAliasQueryWrapperX 嵌套构建条件语句时别名丢失的问题
  • ✅ 添加 LambdaAliasQueryX 的测试用例
  • 🎨 OtherTableColumnAliasFunction 类更名为 ColumnFunction
  • 🌟 添加 ColumnFunction#create 方法,在进行连表查询时,构建第三方表的列名更方便

校验 Validator

  • 新增枚举以及值范围检验的自定义注解
    • @OneOfStrings 校验值是否是指定的字符串之一
    • @OneOfInts 校验值是否是指定的 int 值之一
    • @OneOfClasses 校验值是否是指定的 class 类型之一
    • @ValueOfEnum 校验值是否满足于指定的 Enum

Xss 防注入相关 ballcat-spring-boot-starter-xss

  • 🐞 修复反序列化时携带了错误的 json 可能出现的异常问题

系统管理相关

  • 🌟 添加用户新建和修改时的数据校验
  • 🐞 修复用户新建时无法指定为锁定状态的问题

OAuth2 ballcat-auth-biz

  • 🐞 修复客户端登录模式使用 from 传参不走自定义异常处理的问题
  • 🌟 验证码校验逻辑抽象,方便用户切换验证码的底层依赖
  • 🔥 移除了默认的 anji-captcha 相关的依赖以及配置,用户按需添加

🔨 Dependency

  • 【移除】移除了对 spring-boot-admin 的依赖管理
  • 【修改】取消 spring-boot-starter-web 强制剔除 tomcat 的配置,容器选择权交给用户
  • 【升级】spring-boot from 2.6.6 to 2.7.1
  • 【升级】kafka from 2.5.0 to 2.6.3
  • 【升级】dynamic-datasource-spring-boot-starter from 3.5.0 to 3.5.1
  • 【升级】hutool from 5.7.22 to 5.8.3
  • 【升级】fastjson from 1.2.79 to 1.2.80
  • 【升级】springdoc-openapi from 1.6.7 to 1.6.9
  • 【升级】 mybatis from 3.5.9 to 3.5.10
  • 【升级】 mybatis-plus from 3.5.1 to 3.5.2
  • 【升级】 xxl-job from 2.3.0 to 2.3.1
  • 【升级】easyexcel from 3.0.5 to 3.1.1
最后提交信息为: :bookmark:release v0.8.0
2022-04-20 10:47
1438397 hccake 1622643582 Hccake

OpenAPI 相关改动 ballcat-extend-openapi

  • 🐞 swagger-api 版本冲突,依赖管理 到 2.2.0,保持和 springdoc-openapi 一致
  • 🔥 弃用 ballcat.openapi.security-schemes 配置,现在使用 ballcat.openapi.components.security-schemes
  • 🔥 弃用 ballcat.openapi.global-security-requirements,现在使用 ballcat.openapi.security 属性替代
  • 🩹 修复部分属性 ide 中没有提示的问题

Web 相关改动 ballcat-spring-boot-starter-web

  • 🐞 修复 null 值序列化处理不支持 @kimi 注解的问题
  • ✅ 添加 jackson null 值序列化器的测试用例
  • 🌟 异常通知消息添加 RequestURI 的信息输出
  • 🌟 全局异常日志打印请求URI
最后提交信息为: :bookmark:Release v0.7.1
2022-04-13 10:53
1438397 hccake 1622643582 Hccake

:warning: Warning

  • 此版本操作日志表有字段新增,升级前注意先执行对应的增量 SQL

  • 访问日志的忽略 url 现在只需填写 servlet 内的路径了,升级后请注意调整,防止失效

  • openapi 的配置文件调整,现在文档基本信息的属性添加了一个 info 的前缀

  • WebSocket 组件中的 AbstractJsonWebSocketMessage 改名为 JsonWebSocketMessage,升级时如遇到 class import 失败,请注意对应修改类名

  • 由于 spring-javaformat 组件的升级,现在如果在 jdk8 环境下,请在项目跟目录新建一个名为 .springjavaformatconfig 的文件,文件内容如下:

    java-baseline=8
    

⭐ New Features

日志相关改动 ballcat-common-log spring-boot-starter-log

  • 🌟 访问日志的忽略 url 现在只需填写 servlet 内的路径了
  • 🌟 操作日志注解增强:用户可以指定是否记录当前操作方法的参数和返回值
  • 🐞 抛 BusinessException 异常时,日志记录丢失 traceId 的问题
  • 🐞 CustomAccessLogHandler#getParams 改变不可变的 parameterMap 集合问题
  • 🐞 修复公告图片上传时的操作日志记录异常问题

国际化 ballcat-common-i18n

  • 🌟 优化下细节:在 i18n 处理失败时,也正常响应

web 服务 ballcat-spring-boot-starter-web

  • 🌟 actuator 拦截器现在只在引入了 actuator 时开启,且拦截地址跟随 actuator 的 base-path 配置
  • 🐞 修复默认配置下仅引入 ballcat-spring-boot-starter-web 时启动异常的问题

分页查询调整 ballcat-common-core

  • 🌟 分页参数 PageParam 的 valid 校验支持
  • 🌟 PageParam 分页条数上限可通过配置 ballcat.web.page-size-limit 动态修改,默认值 100
  • 🌟 所有分页接口,添加 PageParam 的入参校验
  • 🌟 支持带表别名的排序列
  • 🌟 分页查询新增参数 sort 设置排序规则,格式为:property(,asc|desc),支持传入多个排序字段

缓存工具 ballcat-spring-boot-starter-redis

  • 🌟 redis 相关 bean 添加 @ConditionalOnMissBean 注解,方便用户替换
  • 🌟 RedisHelper 工具类添加 zset 的基本操作
  • 🐞 修复在没有配置 ballcat.redis.key-prefix 属性时启动报错的问题

系统管理 ballcat-system

  • 🌟 组织机构树查询支持模糊查询名称
  • 🌟 新增组织机构列表查询
  • 🌟 菜单和组织机构的筛选都移交到前端处理了
  • 🎨 解耦 system 和 websocket 模块(notify 解耦未完成,后续重构通知时处理)

Tree 工具相关改动 ballcat-common-util

  • 🌟 TreeUtils 新增剪枝方法 pruneTree
  • 🌟 TreeUtils 泛型调整
  • 🎨 SimpleTreeNode.getChildren 方法重写,方便直接获取对应的类型数据

数据权限组件 ballcat-spring-boot-starter-datascope

  • 🐞 修复 DataPermissionAnnotationHolder 只清空了 deque,没有 remove 的问题
  • 🌟 添加编程式数据权限规则控制支持,可与 @DataPermission 注解嵌套使用

数据权限规则优先级,由高到低:

  1. 编程式规则
  2. 当前方法的注解规则
  3. 当前类的注解规则
  4. 调用者使用的权限规则
  5. 全局默认规则

长连接组件 ballcat-websocket

  • 🌟 优化下 UserSessionKeyGenerator 的 Conditional 判断,方便用户替换
  • 🌟 WebSocket 的 session 存储角色,从 WebSocketSessionHolder 修改为 WebSocketSessionStore
  • 🌟 现在不再默认覆盖同一 sessionKey 的 wsSession 了,方便用户进行全客户端推送
  • 🌟 新增AbstractMessageDistributor, 将MessageDistributor的 default 方法下沉到该抽象类中
  • 🌟 跨域配置添加 allowed-origin-patterns 属性
  • 🌟 添加 SockJs 的支持
  • 🎨 优化下 RedisMessageListener 的注册方式,防止误扫描导致的 bean 注册异常
  • 🎨 优化 ballcat-spring-boot-starter-websocket 的配置类结构
  • 🎨 精简代码层级,将接口 JsonWebSocketMessage 删除,原抽象类 AbstractJsonWebSocketMessage 改名为 JsonWebSocketMessage

幂等组件 ballcat-idemptent

  • 🌟 幂等控制注解增强:可以指定消息单位以及幂等拦截时的错误提示了
  • 🌟 幂等组件允许用户控制是否再异常时删除幂等标识,方便有些不允许重试的方法进行幂等控制
  • ✅ 添加幂等组件的一些测试用例

接口文档 ballcat-extend-openapi

  • 🌟 添加部分 OpenAPI 配置
  • 🌟 文档信息的配置下沉到 info 前缀下

其他问题

  • 🐞 调整 ProviderManager 的层级,以解决错误的 token 会触发两次鉴权失败异常的问题
  • 🐞 修复 OSS 上传文件时不主动关闭临时的流. 导致大量文件上传时出现异常
  • 🐞 公告信息分页查询 bug
  • 🐞 fix jdk11 下打包异常的问题

🔨 Dependency Upgrades

  • 【升级】spring-boot from 2.6.2 to 2.6.6,且后续使用官方 dependencies 进行依赖管理
  • 【升级】spring-boot-admin from 2.6.0 to 2.6.6
  • 【升级】spring-javaformat from 0.0.29 to 0.0.31
  • 【升级】hutool from 5.7.12 to 5.7.19
  • 【升级】mybatis-plus from 3.5.0 to 3.5.1
  • 【升级】springdoc-openapi from 1.6.4 to 1.6.7
  • 【升级】software.amazon.awssdk from 2.16.61 tp 2.17.154
最后提交信息为: :bookmark:Release v0.7.0
2022-01-20 10:22
1438397 hccake 1622643582 Hccake

⚠ Warning

  • Swagger2 相关注解迁移到 OpenAPI3,由于使用了 springdoc-openapi,且该项目当前版本的一些问题,如果没有在 服务中引入
    springdoc-openapi-ui 的依赖,或者配置中添加 springdoc.api-docs.enabled=false 的配置,则会导致启动报错
  • 删除了 knife4j-ui 的版本管理,对于 OpenAPI3,请使用 knife4j 的 3.x 版本
  • springfox 组件未适配 springboot 2.6.2 版本,如需继续使用 springfox,请添加 spring.mvc.pathmatch.matching-strategy=ant-path-matcher 配置,以及注册 SpringfoxHandlerProviderBeanPostProcessor 到 spring 容器中
  • springboot 2.6.x 默认禁止循环依赖,如有循环依赖启动将会报错,请注意修改代码,或者添加配置 spring.main.allow-circular-references = true (不建议)

⭐ New Features

  • 【修改】修改 jackson 脱敏支持的模块添加方式,使用为注册 JsonDesensitizeModule 的形式,以便复用 spring-boot 默认的 module 注册。
  • 【修改】调整 CustomJavaTimeModule 的注册方式,防止被 JSR310 的 JavaTimeModule 覆盖
  • 【删除】移除过时已久的 IPageArgumentResolver,让 starter-web 和 mybatis-plus 模块解耦。
  • 【删除】移除过时的 Lov 相关代码。
  • 【修改】Swagger2 相关注解迁移到 OpenAPI3
  • 【修改】文档底层支持从 springfox 迁移到 springdoc-openapi
  • 【添加】对于 GET 请求的入参封装类,如 xxQO,添加 @ParameterObject 注解,以便在文档上正确展示查询入参
  • 【修改】由于 springfox 长久不更新,弃用基于该框架的 ballcat-spring-boot-starter-swagger 组件
  • 【新增】添加 ballcat-extend-openapi,模块,基于 springdoc-openapi 做了部分扩展,参看文档
  • 【删除】删除 knife4j-ui 的版本管理
  • 【修改】代码优化,显示指定部分参数或返回值的泛型
  • 【修改】Sonarlint 部分代码警告处理
  • 【删除】移除 dependencies pom 中无用的 pluginManagement 部分
  • 【修改】hutool 依赖管理改为使用 hutool 官方提供的 bom
  • 【新增】添加 ballcat-extend-tesseract 扩展模块,用于 OCR 文字识别工具的调用封装
  • 【修改】字典相关逻辑调整
    • 去除字典只读/可写的属性控制
    • 字典项增加启用/禁用的状态属性
    • 字典现在在有字典项的情况下不允许删除(之前会自动级联删除)
  • 【修改】同步 mybtais-plus 升级 3.5.x 后,AbstractMethod 的方法名获取做的调整
  • 【修改】ballcat-spring-boot-starter-oss 更新 oss 相关方法与变量. 由 path 变为 key. 符合 oss 规范,原 rootPath 属性标记为过期,修改为 objectKeyPrefix
  • 【添加】ballcat-spring-boot-starter-oss 新增根据 File 直接上传的方法
  • 【修改】StreamUtils 克隆流方法优化. 使用 FileOutStream 保证不会因为文件过大而内存溢出
  • 【修改】OssDisabledException 父类由 Exception 修改为 RuntimeException
  • 【修改】ballcat-common-idempotent 幂等组件微调
    • RedisIdempotentKeyStore 的 stringRedisTemplate 属性,改为构造器注入
    • 取消 IdempotentAspect 切面的 @citizenl 注解,防止误注册

🐞 Bug Fixes

  • 【修复】修复删除字典项时没有将变动通知到前端的问题
  • 【修复】修复 FileUtils#updateTmpDir 方法中文件夹创建异常的问题

🔨 Dependency Upgrades

  • 【升级】spring-boot from 2.5.6 to 2.6.2
  • 【升级】lombok from 1.18.20 to 1.18.22
  • 【升级】spring-javaformat from 0.0.28 to 0.0.29
  • 【升级】hutool from 5.7.12 to 5.7.19
  • 【升级】dynamic-datasource from 3.4.1 to 3.5.0
  • 【升级】jasypt from 3.0.3 to 3.0.4
  • 【升级】jsoup from 1.14.2 to 1.14.3
  • 【升级】mybatis-plus from 3.4.3.4 to 3.5.0
  • 【升级】mybatis from 3.5.7 to 3.5.9
  • 【升级】jsqlparse from 4.2 to 4.3
  • 【升级】fastjson from 1.2.76 to 1.2.79
  • 【升级】spring-boot-admin from 2.5.4 to 2.6.0
最后提交信息为: :memo:readme 更新
2021-12-06 10:08
1438397 hccake 1622643582 Hccake

:warning: Warning

  • 由于业务实体类的统一修改,其对应的表结构发生了变化
  • 批量方法从 saveBatchSomeColumn 切换到 saveBatch 后,注意项目中的 jdbcUrl 配置,需要添加 rewriteBatchedStatements=true 条件,否则插入效率降低

⭐ New Features

  • 【修改】 业务实体类添加父类 LogicDeletedBaseEntity,统一支持逻辑删除
  • 【修改】 业务实体类统一修改描述、备注等属性名为 remarks
  • 【修改】 业务代码批量插入部分方法从 saveBatchSomeColumn 切换到 saveBatch, 经实测,开启批处理事务以及 jdbcUrl 连接添加rewriteBatchedStatements=true 后, 循环 insert into 批量提交比 insert into values 语法速度更快。
  • 【新增】 ballcat-spring-boot-starter-file 组件,支持 local 本地 和 ftp 文件上传操作
  • 【添加】 TreeUtils#treeToList() 方法,支持将树平铺为列表
  • 【添加】 ImageUtils#mixResolveClone() 方法,先使用快速解析,若失败回退到正常解析方法
  • 【新增】 FileUtils 工具类
  • 【新增】 BaseEntityLogicDeletedBaseEntity 实体类基类
  • 【新增】 支持定制 Redis Key 前缀的生成规则
  • 【新增】 DistributeLock , 更加方便的进行分布式锁的使用
  • 【新增】 AbstractMessageEventListener 类,提供默认的消息序列化处理
  • 【添加】 ExtendService#saveBatch() 方法
  • 【新增】 多线程对同一 websocket session 进行发送操作的支持
  • 【修改】 默认提供的 MybatisPlusConfig 配置类中的自动填充处理类的条件注解修改,方便用户替换为自己的 MetaObjectHandler
  • 【新增】 线程池配置 @Async 异步线程日志支持 traceId 输出
  • 【添加】 TokenGrantBuilder#getAuthenticationManager() 方法,方便子类继承时获取 AuthenticationManager (#133)
  • 【修改】 FileService ,OssClient 不再为必须依赖,当没有配置 Oss 时,默认回退使用 FileClient,根据配置走本地存储或者
  • 【修改】 MappedStatementIdsWithoutDataScopeWITHOUT_MAPPED_STATEMENT_ID_MAP 属性类型为 ConcurrentHashMap
  • 【修改】 TraceIdFilter 默认在响应头中返回 TraceId 参数,方便排查问题
  • 【修改】 UserInfoCoordinator 从类调整为接口,并提供默认实现 DefaultUserInfoCoordinatorImpl

🐞 Bug Fixes

  • 【修复】 数据权限使用 JDK动态代理或者桥接方法时无法正确找到 @DataPermission 注解的问题
  • 【修复】 数据权限在 SQL 右连接,内连接失效的问题
  • 【修复】 数据权限对于使用括号包裹的 sql 解析失效的问题
  • 【修复】 在仅使用 ballcat.swagger.enabled=false 的情况下,swagger 没有正常关闭的问题
  • 【修复】 由于跨域问题,导致 swagger 无法在聚合者 Aggregator 中对 文档提供者 Provider 进行调试的问题
  • 【修复】 WebSocket 在接收普通文本属性时的异常问题,现在会回退使用 PlanTextMessageHandler 进行处理
  • 【修复】 查询指定名称的组织时构建树失败的问题

🔨 Dependency Upgrades

  • 【升级】 spring-boot from 2.5.4 to 2.5.6
  • 【升级】 spring-boot-admin from 2.5.1 to 2.5.4
最后提交信息为: :bookmark:v0.5.0 版本 release
2021-10-15 11:14
1438397 hccake 1622643582 Hccake

Warning

  • mybatis-plus 升级,其对应一些 count 方法,返回值修改为了 Long 类型,项目中有使用的地方需要对应修改
  • 默认登录时返回的 token 属性有所变更,原 roles 修改为 roleCodes,前端注意对应升级
  • websocket 默认使用 local 进行分发,这将导致集群状态下的数据推送异常,如需集群部署,请修改对应配置
  • websocket 相关接口 MessageSender 移除,该接口并入 MessageDistributor ,注意修改对应依赖引入类型

Added

  • feat:ballcat-auth 授权服务器定制增强:
    • 允许用户自定义 AccessTokenConverter,修改自省端点 /check_token 的返回值
    • 允许用户定制授权处理器或者新增授权处理器,用户可以通过覆盖 TokenGrantBuilder 实现
    • 允许用户添加自己的 AuthenticationProvider 方便处理自定义的 grant_type
    • 添加 OAuth2ClientConfigurer 抽象接口,方便用户替换 ClientDetailsService 的配置方式
    • ballcat-system 模块解耦,方便复用 ballcat-auth 快速搭建一个授权服务器,例如 C 端用户 和 后台用户分离登陆系统,各搭建一套基于 OAuth2 的登录。
    • 根据 OAuth2 规范,调整 check_token 端点响应,在 token 不正确时响应 200,响应体为 { active: false },而不是返回 400
  • feat:数据权限对于 jsqlparse 4.2 后,连表使用尾缀多个 OnExpression 方式的 SQL 解析支持
  • feat:角色添加 scopeResource 属性,以便支持自定义数据权限设置一些信息
  • feat:默认的 jackson 时间序列化添加了 Instant 类型支持,防止在使用时出现异常 InvalidDefinitionException: Java 8 date/time type java.time.Instant not supported by default

Changed

  • refactor:资源服务器对于客户端凭证生产的token 解析支持,对应的 userdetails 为 ClientPrincipal

  • refactor:授权服务器自省端点的 scope 属性响应调整,根据 OAuth2 自省端点协议,scope 应返回字符串,用空格间隔

  • refactor:数据权限调整

    • 问题修复: fix 数据权限在表名使用 `` 转义字符时失效的问题
    • 性能优化:对于无需数据权限控制的 sql 在解析一次后进行记录,后续不再进行解析处理
    • 结构调整:防止误用以及避免歧义,DataScopeHolder 修改为 DataScopeSqlProcessor 的私有内部类
  • refactor:SelectData 试图对象中的 value 修改为 Object 类型,selected 和 disabled 修改为 Boolean 类型

  • refactor:系统用户相关的 service 和 mapper 层,修改使用 Collection 接收参数,方便使用

  • refactor:TokenAttributeNameConstants 常量类拆分

  • refactor:UserInfoDTO 属性调整,新增了 menus 用于存储用户拥有的菜单对象集合,修改 roles 属性用于存储用户拥有的角色对象集合,原 roles 属性修改为 roleCodes 存储角色标识集合

  • refactor:为避免歧义,登录和自省端点返回信息中的属性名称 roles 修改为 roleCodes

  • bug:修复使用 ballcat-spring-boot-starter-web 时,若没有引入 security 依赖则启动异常的问题

  • refactor: system 相关事件优化调整

    1. 用户组织变动时发布 UserOrganizationChangeEvent 事件
    2. 用户新建的事件由 UserChangeEvent 修改为 UserCreatedEvent
    3. system 的 event 类从 biz 迁移到 model 模块中
  • refactor:ballcat-common-websocket 移除 MessageSender 接口,将其并入消息分发器 MessageDistributor

  • refactor:ballcat-spring-boot-starter-websocket 与 redis 解耦,将默认注册的消息分发器由 redis 改为 local,基于内存分发。可通过 ballcat.websocket.message-distributor 属性修改为 redis 或者 custom,值为 custom 表示,用户自己定制 MessageDistributor(如修改为使用 mq,可用性更高)

    ballcat:
        websocket:
            # 默认为 local 仅支持单节点使用,redis 基于 PUB/SUB 消息订阅支持了集群下的消息推送问题
            message-distributor: redis # local | redis | custom
    
  • refactor:ballcat-spring-boot-starter-redis 调整 AddMessageEventListenerToContainer 的注册方式,防止用户配置包扫描导致的加载顺序异常

  • refactor:有用户绑定组织时,不允许删除组织

Dependency

  • Bump spring-boot from 2.4.8 to 2.5.5
  • Bump lombok from 1.18.16 to 1.18.20
  • Bump mybatis-plus 3.4.4 to 3.4.3.4
  • Bump mybatis 3.5.6 to 3.5.7
  • Bump jsqlparser 4.0 to 4.2
  • Bump flatten-maven-plugin from 1.2.5 to 1.2.7
  • Bump spring-javaformat from 0.0.27 to 0.0.28
  • Bump hutool from 5.7.3 to 5.7.12
  • Bump spring-boot-admin from 2.4.2 to 2.5.1
  • Bump dynamic-datasource-spring-boot-starter from 3.3.2 to 3.4.1
最后提交信息为: :bookmark:release v0.4.0
2021-09-09 09:41
1438397 hccake 1622643582 Hccake

Warning

  • 多个模块包名调整,注意重新 import 对应路径
  • 国际化重构,改动较大,注意对应代码调整。国际化使用文档参看:http://www.ballcat.cn/guide/feature/i18n.html
  • 由于 ballcat-common-conf 的删除,非 admin 服务中的 mybatis-plus 的相关配置,如分页插件,批量插入方法的注入,需要按需添加。
  • 操作日志优化,修改了 OperationLogHandler 的相关方法,如果有自定义 OperationLogHandler ,需要注意同步更新

Added

  • feat: 国际化功能的默认支持,新增 ballcat-i18n 相关模块,以便提供默认的业务国际化实现方式
  • feat: 登录用户名密码错误时的错误消息国际化处理
  • feat: ballcat-common-redis 针对 PUB/SUB 新增 MessageEventListener 接口,ballcat-spring-boot-starter-redis 中会自动注册所有实现 MessageEventListener 接口的监听器
  • feat: ballcat-common-redis 中的 @CacheDel 注解,新增 multiDel 属性,方便批量删除缓存
  • feat: 新增 ballcat-common-idempotent 幂等模块
  • feat: 针对 hibernate-validation 校验的提示消息,支持使用 {},占位替代 defaultMessage
  • feat: ballcat-common-core 中默认新增了 CreateGroupUpdateGroup 接口,方便分组校验使用
  • feat: 新增 ballcat-spring-boot-starter-web 模块,该模块基于 spring-boot-starter-web, 并使用 undertow 作为默认的嵌入式容器,且将 ballcat-common-conf 中对 web 应用的配置增强,如全局异常管理,以及 Sql 防注入处理,jackson 的默认配置等配置移动到此项目中
  • feat: ballcat-extend-mybatis-plus 模块中,为了支持连表查询的条件构建,新增 OtherTableColumnAliasFunction ,方便使用 LambdaAliasQueryWrapperX 进行关联表查询条件的构建
  • feat: ballcat-spring-boot-starter-easyexcel 支持导出时进行 Excel 头信息的国际化处理,使用 {} 进行占位表示,使用示例可参看 I18nData 的导出使用
  • feat: ballcat-spring-boot-starter-swagger 配置的扫描路径 basePackage ,支持使用 , 进行多包名的分割扫描
  • feat: ballcat-spring-boot-starter-datascope 中的数据权限控制注解 @DataPermission 扩展支持在 Mapper 之外使用,且支持方法嵌套调用时使用不同的 @DataPermission 环境

Changed

  • refactor: ballcat-common-conf 内原先对于 mybati-plus 的自动填充、分页插件、以及批量插入方法注入的配置移动到 ballcat-admin-core

  • refactor: SpELUtils 改名为 SpelUtils,并移动到 ballcat-common-util 模块中

  • refactor: ApplicationContextHolder 改名为 SpringUtils,并移动到 ballcat-common-util 模块中

  • refactor: ballcat-spring-boot-starter-log 中拆分出 ballcat-common-log 模块,解决在 log-biz 模块中需要引入 starter 的问题,部分代码的包名有变更

  • refactor: ballcat-spring-boot-starter-redis 中拆分出 ballcat-common-redis 模块

  • refactor: 重构原先的国际化 i18n 功能,新增 ballcat-common-i18n 模块,移除原先的 ballcat-extend-i18n 模块

  • pref: 取消 ballcat-spring-boot-starter-webspring-security-core 的传递依赖

  • fix: 修复当查询一个不存在的系统配置后,由于缓存空值,导致添加配置后依然查询不到的问题

  • pref: 菜单查询的返回类型修改为 SysMenuPageVO

  • fix: 修复 excel 导出的 content-type 和实际文件类型不匹配的问题

  • fix: 提高缓存切面的 Order,使其在事务提交后执行更新或删除操作,防止并发导致缓存数据错误

  • pref: 菜单支持删除 icon

  • fix: 修复当菜单 id 修改时,未级联修改其子菜单的父级 id 的问题

  • pref: 优化操作日志,改为在方法执行前获取方法参数信息,防止用户在执行方法时将方法入参修改了

  • pref: ballcat-admin-core 中默认扩展 springboot 默认的 TaskExecutor 配置,将拒绝策略从抛出异常修改为使用当前线程执行

  • refactor: 移动 TreeNode 模型到 common-util 包中,以便减少 common-util 包的依赖

  • refactor: ballcat-spring-boot-starter-xss 抽象出 XssCleaner 角色,用于控制 Xss 文本的清除行为,方便用户自定义

  • pref: 用户登陆时的错误信息返回原始的细节信息,而不是全部返回用户名密码错误

  • fix: ballcat-system-biz websocket 包名拼写错误修复

Removed

  • 移除 ballcat-common-conf,相关代码拆分入 ballcat-spring-boot-starter-webballcat-admin-core

Dependency

  • Bump jsoup from 1.13.1 to 1.14.2
最后提交信息为: :bookmark:release v0.3.0
2021-08-11 11:06
1438397 hccake 1622643582 Hccake

Added

  • feat: 新增 ballcat-extend-redis-module 模块,提供对布隆过滤器的操作

  • feat: 新建用户时可以直接绑定用户角色,而不必分两次操作了

  • feat: 支持修改菜单ID,方便转移菜单位置时,保持菜单 ID 规则

  • feat: 新增 ballcat-common-security 模块

    • 新增 CustomRedisTokenStore 用于在序列化异常时,直接清除缓存。避免每次修改 UserDetails 时都需要用户手动去删除所有缓存信息
    • 迁移 PasswordUtils 从 common-util 到 common-security,且 PasswordEncoder 使用 DelegatingPasswordEncoder, 方便未来切换密码加密算法
    • 迁移 OAuth 相关的异常处理,从 ballcat-oauth-controller 到 common-secutiy
    • 新增 ResourceServer 相关配置以及基础组件,基于 SpringSecurity 5.X
    • SysUserDetails rename to User, sysUser 中的相关属性,现在直接写在 User 类中,同时删除了 userResource 和 userAttributes 属性,新增了 attributes 属性。

Changed

  • refactor: 数据权限 dataScopes 通过 ThreadLocal 进行方法间传递

  • refactor: 拆分 admin-websocket 模块,方便用户剔除不需要的组件.

  • refactor: ballcat-spring-boot-starter-websocket 模块中 websocket 相关的封装代码抽取到 ballcat-commo-websocket 模块,starter 仅保留自动配置相关代码

  • pref: 菜单的逻辑删除属性使用 mybatis-plus 的自动填充功能,且当菜单 ID 已使用时提示详情

  • pref: 精简了一些 common 模块中不需要的依赖

  • refactor: OAuth2 ResourceServer 底层从 spring-security-oauth2 依赖迁移至 SpringSecurity 5.x

  • pref: common-conf 中现在默认注册 jackson 的脱敏序列化器了,用户可以通过注册 name 为 ”desensitizeCustomizer“ 的 Jackson2ObjectMapperBuilderCustomizer bean,覆盖默认配置

  • refactor: ballcat-spring-boot-starter-log 和业务解耦,操作日志的生产和存储全部交由业务项目自己处理,ballcat-log-biz 模块中提供了默认的操作日志实体类,以及 OperationLogHandler 的默认实现

  • refactor: 由于 common-security 的抽取, ballcat-oauth 模块只剩下了授权相关,故更名为 ballcat-auth,同时做了一些结构上的调整,方便后续独立部署授权服务器。

    • 配置 ballcat.upms.loginCaptchaEnabled 现在调整为 ballcat.security.oauth2.authorizationserver.loginCaptchaEnabled ,用以控制登录验证码的开关
    • 配置 ballcat.security.ignoreUrls 现在调整为 ballcat.security.oauth2.resourceserver.ignoreUrls 用以控制资源服务器对部分 url 的鉴权忽略
    • 配置 ballcat.security.iframeDeny 现在调整为 ballcat.security.oauth2.resourceserver.iframeDeny 用于开启资源服务器的嵌入 iframe 允许
    • 新增 @EnableOauth2AuthorizationServer 注解,用以开启授权服务器 (ballcat-admin-core 模块中默认开启)

Removed

  • 移除 ballcat-oauth-model,相关代码迁入 ballcat-common-security

Dependency

  • Bump spring-boot from 2.4.3 to 2.4.8
  • knife4j from 2.0.8 to 2.0.9
  • hutool from 5.5.8 to 5.7.3
  • fastjson from 1.2.75 to 1.2.76
  • dynamic-datasource from 3.3.1 to 3.3.2
  • spring-boot-admin from 2.4.1 to 2.4.2
  • anji-captcha from 1.2.8 to 1.2.9
最后提交信息为: :bookmark:release v0.2.0
Java
1
https://gitee.com/ballcat-projects/ballcat.git
git@gitee.com:ballcat-projects/ballcat.git
ballcat-projects
ballcat
ballcat

搜索帮助