vue-pro/更新日志.md
2022-01-23 12:27:27 +08:00

159 lines
13 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 支持
## [v1.4.0] 计划
* 工作流
* 修改表单为外置表单
* 修改请假流程
* 暂时以用户的岗位作为activiti 的用户组
* 请假需要请假人部门下具有项目经理岗位, 部门经理, 和人事 岗位的用户
* 新增 芋道源码部门下 用户 normal(岗位 普通用户) projectmgr(岗位 项目经理) depmgr岗位 部门经理) hradmin (岗位 人事)
* 请假流程如下
1. 请假人 normal (密码 123456) 登录在我的请假表单,点击新增,填写请假表单
2. 如果请假天数<=3, 项目经理 进行审批. 项目经理 projectmgr(密码123456) 登录 待办请假,中进行审批,可以查看历史跟踪,和流程图
3. 如果请假天数>3 需部门经理 进行审批部门经理depmgr(密码123456) 登录 待办请假,中进行审批,可以查看历史跟踪,和流程图
4. 人事登陆用户名hradmin 密码:123456) 登录 待办请假, 中进行审批,可以查看历史跟踪,和流程图
5. 流程结束
* 我的请假中,可以查询本人的请假申请, 和进度
### 📝 TODO
* 支付
* 用户前台的社交登陆
* 用户前台的修改手机、修改密码、忘记密码
## [v1.3.0] 进行中
### ⚠️ 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 日志
### 🔨 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> 地址。