From ba83e5d28ab00215a1b0d0cd6a4cfd63f39a22fd Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 3 May 2021 22:43:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9B=B4=E6=96=B0=E6=97=A5?= =?UTF-8?q?=E5=BF=97=EF=BC=9B=20=E4=BF=AE=E6=94=B9=20README=20=E7=9A=84?= =?UTF-8?q?=E5=9B=BE=E7=89=87=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE | 4 +- README.md | 27 ++++++--- .../sms/SysSmsTemplateController.java | 2 +- .../src/main/resources/application-dev.yaml | 2 +- .../src/main/resources/application-local.yaml | 2 +- 更新日志.md | 58 +++++++++++++++++-- 6 files changed, 77 insertions(+), 18 deletions(-) diff --git a/LICENSE b/LICENSE index 8564f294c7..bd9da62351 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2018 RuoYi +Copyright (c) 2021 ruoyi-vue-pro Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in @@ -17,4 +17,4 @@ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index d43db2a6ec..5250dc0f78 100644 --- a/README.md +++ b/README.md @@ -93,25 +93,25 @@ | 框架 | 说明 | 版本 | 学习指南 | | --- | --- | --- | --- | -| [Spring Boot](https://spring.io/projects/spring-boot) | 应用开发框架 | 2.4.2 | [文档](https://github.com/YunaiV/SpringBoot-Labs) | +| [Spring Boot](https://spring.io/projects/spring-boot) | 应用开发框架 | 2.4.5 | [文档](https://github.com/YunaiV/SpringBoot-Labs) | | [MySQL](https://www.mysql.com/cn/) | 数据库服务器 | 5.7 | | | [Druid](https://github.com/alibaba/druid) | JDBC 连接池、监控组件 | 1.2.4 | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) | | [MyBatis Plus](https://mp.baomidou.com/) | MyBatis 增强工具包 | 3.4.1 | [文档](http://www.iocoder.cn/Spring-Boot/MyBatis/?yudao) | | [Dynamic Datasource](https://dynamic-datasource.com/) | 动态数据源 | 3.3.2 | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) | | [Redis](https://redis.io/) | key-value 数据库 | 5.0 | | | [Redisson](https://github.com/redisson/redisson) | Redis 客户端 | 3.1.46 | [文档](http://www.iocoder.cn/Spring-Boot/Redis/?yudao) | -| [Spring MVC](https://github.com/spring-projects/spring-framework/tree/master/spring-webmvc) | MVC 框架 | 5.4.2 | [文档](http://www.iocoder.cn/SpringMVC/MVC/?yudao) | -| [Spring Security](https://github.com/spring-projects/spring-security) | Spring 安全框架 | 5.4.2 | [文档](http://www.iocoder.cn/Spring-Boot/Spring-Security/?yudao) | +| [Spring MVC](https://github.com/spring-projects/spring-framework/tree/master/spring-webmvc) | MVC 框架 | 5.4.6 | [文档](http://www.iocoder.cn/SpringMVC/MVC/?yudao) | +| [Spring Security](https://github.com/spring-projects/spring-security) | Spring 安全框架 | 5.4.6 | [文档](http://www.iocoder.cn/Spring-Boot/Spring-Security/?yudao) | | [Hibernate Validator](https://github.com/hibernate/hibernate-validator) | 参数校验组件 | 6.1.7 | [文档](http://www.iocoder.cn/Spring-Boot/Validation/?yudao) | | [Quartz](https://github.com/quartz-scheduler) | 任务调度组件 | 2.3.2 | [文档](http://www.iocoder.cn/Spring-Boot/Job/?yudao) | | [Knife4j](https://gitee.com/xiaoym/knife4j) | Swagger 增强 UI 实现 | 3.0.2 | [文档](http://www.iocoder.cn/Spring-Boot/Swagger/?yudao) | | [Resilience4j](https://github.com/resilience4j/resilience4j) | 服务保障组件 | 1.7.0 | [文档](http://www.iocoder.cn/Spring-Boot/Resilience4j/?yudao) | -| [SkyWalking](https://skywalking.apache.org/) | 分布式应用追踪系统 | 8.6.0 | [文档](http://www.iocoder.cn/Spring-Boot/SkyWalking/?yudao) | -| [Spring Boot Admin](https://github.com/codecentric/spring-boot-admin) | Spring Boot 监控平台 | 8.6.0 | [文档](http://www.iocoder.cn/Spring-Boot/Admin/?yudao) | +| [SkyWalking](https://skywalking.apache.org/) | 分布式应用追踪系统 | 8.5.0 | [文档](http://www.iocoder.cn/Spring-Boot/SkyWalking/?yudao) | +| [Spring Boot Admin](https://github.com/codecentric/spring-boot-admin) | Spring Boot 监控平台 | 2.3.1 | [文档](http://www.iocoder.cn/Spring-Boot/Admin/?yudao) | | [Jackson](https://github.com/FasterXML/jackson) | JSON 工具库 | 2.11.4 | | | [MapStruct](https://mapstruct.org/) | Java Bean 转换 | 1.4.1 | [文档](http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao) | | [Lombok](https://projectlombok.org/) | 消除冗长的 Java 代码 | 1.16.14 | [文档](http://www.iocoder.cn/Spring-Boot/Lombok/?yudao) | -| [JUnit](https://junit.org/junit5/) | Java 单元测试框架 | 5.7.0 | - | +| [JUnit](https://junit.org/junit5/) | Java 单元测试框架 | 5.7.1 | - | | [Mockito](https://github.com/mockito/mockito) | Java Mock 框架 | 3.6.28 | - | ### 前端 @@ -123,9 +123,20 @@ ## 演示图 +### 系统功能 + +| 模块 | biu | biu | biu | +| --- | --- | --- | --- | +| 首页 | ![登陆](http://www.iocoder.cn/images/ruoyi-vue-pro/登陆.jpg) | ![首页](http://www.iocoder.cn/images/ruoyi-vue-pro/首页.jpg) | ![个人中心](http://www.iocoder.cn/images/ruoyi-vue-pro/个人中心.jpg) | +| 用户管理 | | | | + +### 基础设施 + +### 研发工具 + - + @@ -154,7 +165,7 @@ - +
- []()
diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsTemplateController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsTemplateController.java index b57beb255e..c3a280a5fb 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsTemplateController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsTemplateController.java @@ -24,7 +24,7 @@ import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; -@Api("短信模板") +@Api(tags = "短信模板") @RestController @RequestMapping("/system/sms-template") public class SysSmsTemplateController { diff --git a/yudao-admin-server/src/main/resources/application-dev.yaml b/yudao-admin-server/src/main/resources/application-dev.yaml index 5e71e2322d..622c2d4ef7 100644 --- a/yudao-admin-server/src/main/resources/application-dev.yaml +++ b/yudao-admin-server/src/main/resources/application-dev.yaml @@ -160,7 +160,7 @@ yudao: mock-enable: true mock-secret: test file: - base-path: http://127.0.0.1:${server.port}${yudao.web.api-prefix}/system/file/get/ + base-path: http://api-dashboard.yudao.iocoder.cn${yudao.web.api-prefix}/infra/file/get/ xss: enable: false exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系 diff --git a/yudao-admin-server/src/main/resources/application-local.yaml b/yudao-admin-server/src/main/resources/application-local.yaml index da750e747f..53ab065605 100644 --- a/yudao-admin-server/src/main/resources/application-local.yaml +++ b/yudao-admin-server/src/main/resources/application-local.yaml @@ -160,7 +160,7 @@ yudao: mock-enable: true mock-secret: test file: - base-path: http://127.0.0.1:${server.port}${yudao.web.api-prefix}/system/file/get/ + base-path: http://127.0.0.1:${server.port}${yudao.web.api-prefix}/infra/file/get/ xss: enable: false exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系 diff --git a/更新日志.md b/更新日志.md index 25417accac..10ae12ffb6 100644 --- a/更新日志.md +++ b/更新日志.md @@ -2,18 +2,66 @@ * 邮件 * 钉钉、飞书等通知 + +## [v1.2.0] 待定 + * 工作流 + +## [v1.1.0] 待定 + * 支付 * 三方平台接入 ## [v1.0.0] 2021.05.03 -### ⭐ New Features +第一个版本,基于 [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue) 重构,主要是三个方面: +* 代码的重构 +* 技术选型的调整 +* 后台功能的新增 -### ⚡️ Optimization +因此,`v1.0.0` 的更新日志,分成这三方面来写。 -### 🐞 Bug Fixes +### 代码的重构 -### 📔 Documentation +* 调整整体代码结构,将多个 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 代码告警的问题。 -### 🔨 Dependency Upgrades +### 后台功能的新增 + +* 增加 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 接口文档是缺失的,已经全部补全,可见 地址。 \ No newline at end of file