## 计划中

* 邮件
* 钉钉、飞书等通知
* 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

### ⭐ New Features

* 【优化】引入 form generator 0.2.0 版本，并重构相关代码
* 【修改】修改部门负责人，从 String 字符串，调整成和后台用户的用户编号绑定
* 【新增】流程表单，支持动态进行表单的配置
* 【新增】工作组，用于支持指定工作组进行任务的审批
* 【新增】流程模型的管理，支持新增、导入、编辑、删除、发布流程模型
* 【新增】我的流程的管理，支持发起流程
* 【新增】待办任务的管理，支持任务的审批通过与不通过
* 【新增】已办任务的管理，支持详情的查看
* 【新增】任务分配规则，可指定角色、部门成员、部门负责人、用户、用户组、自定义脚本等维度，进行任务的审批
* 【新增】引入 bpmn-process-designer 0.0.1 版本，提供流程设计器的能力

### 🐞 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.28：Mockito 提供对 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> 地址。
