vue-pro/更新日志.md

218 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 计划中
* 邮件
* 钉钉、飞书等通知
* Vue3 支持
### 📝 TODO
* 支付
* 升级 mybatis plus 最新版本,优化多租户的实现
* RedisKeyDefine 的发现机制
## [v.1.5.0] 【进行中】计划 2022.02.28 发布
* 基于 flowable 实现工作流
* 基于 uniapp 实现小程序,完成用户中心相关的功能(社交登陆、修改密码、忘记密码、修改个人信息等等功能)
### ⚠️ Warning
TODO
### 📈 Statistic
* 总代码行数:
* 源码代码行数:
* 注释行数:
* 单元测试用例数:
### ⭐ New Features
* 【优化】使用 Lombok 简化 JsonUtils 工具类 [#73](https://github.com/YunaiV/ruoyi-vue-pro/pull/73)
* 【新增】兼容 Node 16 版本,通过升级 BPMN-JS 相关库 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/4c169cbc58eb0d0cc4aead73ca127a2957e6a3aa)
### 🐞 Bug Fixes
* 【修复】数据权限的 `DEPT_AND_CHILD` 范围时,未设置自己所在的部门 [#72](https://gitee.com/zhijiantianya/ruoyi-vue-pro/pulls/72)
* 【修复】Knife4j 接口文档 404 的问题,原因是 `spring.mvc.static-path-pattern` 配置项,影响了基础路径 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/f966fae0606178ec5ffa47dd487f7984867da557)
* 【修复】修复文件访问地址错误 [#68](https://github.com/YunaiV/ruoyi-vue-pro/pull/68)
* 【修复】工作流程发起以及审批异常,由 `@NotEmpty` 校验、和 Long 类型异常导致 [#73](https://gitee.com/zhijiantianya/ruoyi-vue-pro/pulls/73)
* 【修复】自定义 DefaultStreamMessageListenerContainerX 实现,解决 Redisson Stream 读取不到数据返回 `null` 导致 NPE 问题 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/2cef84bdc836de9041b5c68dcba0f0e59f666277)
* 【修复】部门更新后,本地缓存不刷新的问题 [#77](https://gitee.com/zhijiantianya/ruoyi-vue-pro/pulls/77)
* 【修复】获取拥有指定的角色用户时,返回错误的 id 编号 [#79](https://gitee.com/zhijiantianya/ruoyi-vue-pro/pulls/79)
### 🔨 Dependency Upgrades
*【修复】Maven 构建的一些错误提示 [#78](https://gitee.com/zhijiantianya/ruoyi-vue-pro/pulls/78)
## [v1.4.0] 2022.02.04
### ⚠️ Warning
大版本重构,基于 Maven Module 的方式拆分多模块,希望大家多多提点建议!
### 📈 Statistic
* 总代码行数69118
* 源码代码行数42571
* 注释行数15847
* 单元测试用例数278
### ⭐ New Features
* 【重构】大模块按照多 Maven Module 的方式拆分,提升可维护性,为后续重构 onemall 提供基础
* 【移除】将 `yudao-core-service` 模块移除,替换成每个 Maven Module 暴露对应的 `yudao-module-***-api` 模块
* 【新增】Spring Security 支持读取多种用户类型,从不同的数据库表,从而实现单项目提供管理后台、用户 APP 的不同 RESTful API 接口
* 【新增】Spring Security 新增 AuthorizeRequestsCustomizer 抽象类, 自定义每个 Maven Module 的 URL 的安全配置
* 【新增】代码生成器支持多 Maven Module 的方式生成代码,支持管理后台、用户 APP 两种场景的 RESTful API 的生成,支持 H2 SQL 脚本的生成
* 【新增】每次发布大版本时,将 yudao-ui-admin 编译后,放到 yudao-server 项目中,可以快速体验,无需搭建前端开发环境
* 【重构】将数据库文档调整到 tool 模块,更加明确
* 【优化】代码生成器的前端展示效果,例如说 Java 包路径合并
### 🐞 Bug Fixes
* 【修复】用户无权限访问 指定 API 时,未返回 FORBIDDEN 结果码
* 【修复】定时任务刷新本地缓存时,无租户上线文,导致查询报错
* 【修复】配置中心只加载了删除的配置
* 【修复】管理后台 UI 超时登录后,返回登陆界面时,由于未登陆加载不到信息,导致报错的问题
### 🔨 Dependency Upgrades
* 【升级】spring-boot from 2.4.12 to 2.5.9,最新的 Spring Boot 2.6.X 在等更流行一些,稳定第一
* 【升级】Spring Boot Admin from 2.3.2 to 2.6.2,提供更好的监控能力
* 【移除】Apache FreeMarker 依赖,修改 Screw 使用 Velocity 作为模板引擎
* 【升级】redisson from 3.16.6 to 3.16.8
## [v1.3.0] 2022.01.24
### ⚠️ Warning
基于 Activiti 7.X 版本实现工作流功能,支持可配置的动态表单、自定义的业务表单。
下个版本会提供基于 Flowable 6.X 版本实现的工作流!
### 📈 Statistic
* 总代码行数61594
* 源码代码行数37931
* 注释行数14225
* 单元测试用例数278
### ⭐ New Features
* 【优化】引入 form generator 0.2.0 版本,并重构相关代码
* 【修改】修改部门负责人,从 String 字符串,调整成和后台用户的用户编号绑定
* 【新增】流程表单,支持动态进行表单的配置
* 【新增】工作组,用于支持指定工作组进行任务的审批
* 【新增】流程模型的管理,支持新增、导入、编辑、删除、发布流程模型
* 【新增】我的流程的管理,支持发起流程
* 【新增】待办任务的管理,支持任务的审批通过与不通过
* 【新增】已办任务的管理,支持详情的查看
* 【新增】任务分配规则,可指定角色、部门成员、部门负责人、用户、用户组、自定义脚本等维度,进行任务的审批
* 【新增】引入 bpmn-process-designer 0.0.1 版本,提供流程设计器的能力
* 【优化】新增 LambdaQueryWrapperX 类,改成使用 Lambda 的方式选择字段,避免手写导致字段不正确
### 🐞 Bug Fixes
* 【修复】biz-data-permission 组件的缓存机制,导致部分 SQL 未进行数据过滤
* 【修复】codegen 生成代码时delete 接口补充 dataTypeClass 属性,避免 Swagger 打印 WARN 日志
* 【修复】Swagger 文档由于写错 `@ApiImplicitParam` 注解的 name 和 dataTypeClass 属性,导致文档生成失败
### 🔨 Dependency Upgrades
* 【升级】redisson from 3.16.3 to 3.16.6,解决 Stream 在调试场景下会存在 NPE 的问题
* 【升级】spring-boot from 2.4.5 to 2.4.12,最新的 Spring Boot 2.6.X 在等更流行一些,稳定第一
* 【升级】druid from 1.2.4 to 1.2.8,提升数据库连接池的稳定性
* 【升级】dynamic-datasource from 3.3.2 to 3.5.0,修复动态数据源切换的问题
## [v1.2.0]
### ⚠️ Warning
这个版本新增了多租户与数据权限两个重量级的功能,建议花点时间进行了解与学习。
### ⭐ New Features
* 【新增】多租户,支持 Web、Security、Job、MQ、Async、DB、Redis 组件
* 【新增】数据权限,内置基于部门过滤的规则
* 【新增】用户前台的昵称、头像的修改
* 【新增】用户前台的微信公众号、微信小程序的社交登陆的 API 接口
> 完整功能,需要等基于 Uniapp 实现的用户前台一起~ 努力 coding 中,胖友可以 star 持续关注一波!
* 【优化】管理后台的登陆成功后LoginUser 使用统一方法补全信息
### 🐞 Bug Fixes
* 【修复】通知和字典查询接口的 @PreAuthorize 权限标识错误
* 【修复】代码生成的 Java 类路径缺少 modules 目录
* 【修复】代码生成的 Test 单元测试类的引入 Util 工具类的包路径不正确
### 🔨 Dependency Upgrades
* 【引入】mockito-inline 3.6.28Mockito 提供对 final、static 的支持
## [v1.1.0] 2021.10.25
* 新增管理后台的企业微信、钉钉等社交登录
* 新增用户前台(例如说,用户使用的小程序)的后端项目 `yudao-user-server`
* 新增公共服务 `yudao-core-service` 项目,通过 Jar 包的方式,提供 `yudao-user-server``yudao-admin-server` 的共享逻辑的复用
* 新增用户前台的手机登录、验证码登录
* 修复管理后台的用户头像上传 404 的问题,原因是请求路径不对
* 修复用户导入失败的问题,原因是 Lombok 链式与 cglib 读取属性有冲突
* 修复阿里云短信发送失败的问题,原因是 Opentracing 依赖的版本太低,调整成 0.31.0
## [v1.0.0] 2021.05.03
第一个版本,基于 [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue) 重构,主要是三个方面:
* 代码的重构
* 技术选型的调整
* 后台功能的新增
因此,`v1.0.0` 的更新日志,分成这三方面来写。
### 代码的重构
* 调整整体代码结构,将多个 Maven Module 合并为单个,使用 Java package 进行拆分隔离,如 [](https://static.iocoder.cn/ruoyi-vue-pro-modules.jpg) 所示。原因是:随着业务逻辑的逐步复杂,多个 Maven Module 的依赖关系的管理,会是一个很大的问题。
* 拆分 [framework](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework) 为多个 Maven Module按照 [Web](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework/yudao-spring-boot-starter-web)、[Security](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework/yudao-spring-boot-starter-security)、[MyBatis](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework/yudao-spring-boot-starter-mybatis)、[Redis](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework/yudao-spring-boot-starter-redis) 等不同组件,进行封装与拓展。
* 基于 [JUnit5](https://junit.org/junit5/) 与 [Mockito](https://github.com/mockito/mockito),实现单元测试,保证功能的正确性,与代码的可维护性。一直自动化,一直爽!
* 增加 SpringBoot 多环境的配置文件,提供完善的 [deploy.sh](https://gitee.com/zhijiantianya/ruoyi-vue-pro/blob/master/bin/deploy.sh) 部署脚本,以及 [Jenkins 部署教程](https://juejin.cn/post/6942098287533129765)。
* 优化 [Spring Security](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework/yudao-spring-boot-starter-security) 实现权限的代码,提升可读性和维护性。
* 增加本地缓存(菜单、角色、数据字典等等),提升性能。通过 Redis 订阅发布,实现缓存的实时刷新。
* 增加 [VO](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo) 类,作为 API 接口的响应对象,避免数据库实体与前端的直接耦合。
* 优化 [操作日志](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/src/main/java/cn/iocoder/dashboard/framework/logger/operatelog),支持读取 Swagger 作为日志的内容。
* 优化 [定时任务](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/src/main/java/cn/iocoder/dashboard/framework/quartz),支持执行失败的重试,更完善的执行日志。
* 优化 [codegen](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen) 代码生成器,在原先生成 Controller、Service、Mapper、数据库实体、Vue 代码的基础上,额外生成 VO、单元测试的代码。
* 调整文件改用 [数据库](https://gitee.com/zhijiantianya/ruoyi-vue-pro/blob/master/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/file/InfFileDO.java) 存储,而不是文件系统。原因是,项目在部署多个服务节点时,文件需要做同步。未来,会增加阿里云、七牛云等存储云服务。
* 去除原有数据库的连表查询、递归查询,改为单表操作的方式,多次读取 + 内存拼接。
* 优化 Java 代码的格式,解决 IDEA 代码告警的问题。
### 后台功能的新增
* 增加 API [访问](https://gitee.com/zhijiantianya/ruoyi-vue-pro/blob/master/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/logger/InfApiAccessLogDO.java)与[异常](https://gitee.com/zhijiantianya/ruoyi-vue-pro/blob/master/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/logger/InfApiErrorLogDO.java)日志,方便排查线上 API 的问题。
* 增加 [全局错误码](https://gitee.com/zhijiantianya/ruoyi-vue-pro/blob/master/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/errorcode/SysErrorCodeDO.java),统一业务异常的管理。管理后台会支持错误码的管理,支持提示文案的可配置化。
* 增加 [短信模块](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms),提供短信渠道、短息模板、短信日志的管理,对接阿里云、云片等主流短信平台。
* 增加 Redis [Key](https://gitee.com/zhijiantianya/ruoyi-vue-pro/blob/master/yudao-framework/yudao-spring-boot-starter-redis/src/main/java/cn/iocoder/yudao/framework/redis/core/RedisKeyDefine.java) 的管理,知道项目中使用到的 Redis Key 的格式、数据类型、过期时间、描述等等信息。
### 技术选型的调整
* 将 Spring Boot 版本,从 2.1.3 升级到 2.4.5 最新。
* 增加 [bom](https://gitee.com/zhijiantianya/ruoyi-vue-pro/blob/master/yudao-dependencies/pom.xml) 文件,统一 Maven 的依赖管理。
* 引入 [MyBatis Plus](https://baomidou.com/) 组件,简化 MyBatis 使用,提升开发效率。
* 引入 [Redisson](https://github.com/redisson/redisson) 组件,作为 Redis 的客户端,提供更强大的 Redis 操作。
* 基于 Redis 实现分布式消息队列的功能。接入 Redis [Pub/Sub](https://redis.io/topics/pubsub) 实现广播消费,接入 Redis [Stream](https://redis.io/topics/streams-intro) 实现集群消费。
* 去除 [fastjson](https://github.com/alibaba/fastjson),统一使用 [Jackson](https://www.jackson.com/) 作为 JSON 库,老爆安全漏洞的悲伤。
* 引入 [MapStruct](https://mapstruct.org/) 组件,实现数据库实体与 VO 类之间的转换。
* 引入 [Lombok](https://projectlombok.org/) 组件,生成 setter、getter 等常用方法,去除冗余代码。
* 引入 Spring [Async](https://www.iocoder.cn/Spring-Boot/Async-Job/?oschina) 功能,实现异步任务。例如说,异步记录 API 访问日志、管理员操作日志等等。
* 魔改 [Apollo](https://github.com/ctripcorp/apollo) 组件,接入本地数据库,实现内嵌的配置中心。通俗的说,我们可以将原本添加到 `application.yaml` 的配置项,改为添加到数据库中,项目启动会进行读取。
* 引入 [Hutool](https://github.com/dromara/hutool) 组件,去除大量重复的工具类,也避免原本 Util 存在一些 bug 的问题。
* 引入 [Screw](https://github.com/pingfangushi/screw) 组件,实现数据库文档的生成,虽然好像现在用途较少。
* 引入 [EasyExcel](https://github.com/alibaba/easyexcel),提供 Excel 的导入与导出的功能。
* 实现 [Idempotent](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/idempotent) 组件,实现幂等的功能,可以用来解决 HTTP 重复请求的问题。
* 引入 [Lock4J](https://gitee.com/baomidou/lock4j),实现声明式的分布式锁的功能。虽然 Redisson 内置了分布式锁的功能,但是通过注解声明一个 `@Lock4j` 注解的使用方式,更加便利,且满足绝大多数场景。
* 去除原有的服务监控,使用 [SpringBoot Admin](https://github.com/codecentric/spring-boot-admin) 替代,提供更完整的监控能力。
* 引入 [SkyWalking](https://github.com/apache/skywalking) 组件,实现链路追踪和日志服务的功能。通过链路追踪,我们可以看到一个 API 请求涉及到的 MySQL、Redis 等操作;通过日志服务,我们可以方便的看到每个服务实例的日志。
* 引入 [Resilience4j](https://github.com/quartz-scheduler) 组件,实现限流、熔断等功能,保证服务的稳定性。
* 引入 [Knife4j](https://gitee.com/xiaoym/knife4j),美化接口文档。原本所有 API 接口文档是缺失的,已经全部补全,可见 <http://api-dashboard.yudao.iocoder.cn/doc.html> 地址。