Commit 716bbb98136e81a9b491816d36e32849d1b3d5c6
Merge branch 'master' of https://gitee.com/zhijiantianya/ruoyi-vue-pro into feature/1.6.1
Showing
9 changed files
with
20 additions
and
312 deletions
sql/bpm-flowable.sql
| @@ -1343,7 +1343,7 @@ CREATE TABLE `FLW_CHANNEL_DEFINITION` ( | @@ -1343,7 +1343,7 @@ CREATE TABLE `FLW_CHANNEL_DEFINITION` ( | ||
| 1343 | `DESCRIPTION_` varchar(255) DEFAULT NULL, | 1343 | `DESCRIPTION_` varchar(255) DEFAULT NULL, |
| 1344 | PRIMARY KEY (`ID_`), | 1344 | PRIMARY KEY (`ID_`), |
| 1345 | UNIQUE KEY `ACT_IDX_CHANNEL_DEF_UNIQ` (`KEY_`,`VERSION_`,`TENANT_ID_`) | 1345 | UNIQUE KEY `ACT_IDX_CHANNEL_DEF_UNIQ` (`KEY_`,`VERSION_`,`TENANT_ID_`) |
| 1346 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | 1346 | +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; |
| 1347 | 1347 | ||
| 1348 | -- ---------------------------- | 1348 | -- ---------------------------- |
| 1349 | -- Records of FLW_CHANNEL_DEFINITION | 1349 | -- Records of FLW_CHANNEL_DEFINITION |
| @@ -1370,7 +1370,7 @@ CREATE TABLE `FLW_EV_DATABASECHANGELOG` ( | @@ -1370,7 +1370,7 @@ CREATE TABLE `FLW_EV_DATABASECHANGELOG` ( | ||
| 1370 | `CONTEXTS` varchar(255) DEFAULT NULL, | 1370 | `CONTEXTS` varchar(255) DEFAULT NULL, |
| 1371 | `LABELS` varchar(255) DEFAULT NULL, | 1371 | `LABELS` varchar(255) DEFAULT NULL, |
| 1372 | `DEPLOYMENT_ID` varchar(10) DEFAULT NULL | 1372 | `DEPLOYMENT_ID` varchar(10) DEFAULT NULL |
| 1373 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | 1373 | +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; |
| 1374 | 1374 | ||
| 1375 | -- ---------------------------- | 1375 | -- ---------------------------- |
| 1376 | -- Records of FLW_EV_DATABASECHANGELOG | 1376 | -- Records of FLW_EV_DATABASECHANGELOG |
| @@ -1389,7 +1389,7 @@ CREATE TABLE `FLW_EV_DATABASECHANGELOGLOCK` ( | @@ -1389,7 +1389,7 @@ CREATE TABLE `FLW_EV_DATABASECHANGELOGLOCK` ( | ||
| 1389 | `LOCKGRANTED` datetime DEFAULT NULL, | 1389 | `LOCKGRANTED` datetime DEFAULT NULL, |
| 1390 | `LOCKEDBY` varchar(255) DEFAULT NULL, | 1390 | `LOCKEDBY` varchar(255) DEFAULT NULL, |
| 1391 | PRIMARY KEY (`ID`) | 1391 | PRIMARY KEY (`ID`) |
| 1392 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | 1392 | +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; |
| 1393 | 1393 | ||
| 1394 | -- ---------------------------- | 1394 | -- ---------------------------- |
| 1395 | -- Records of FLW_EV_DATABASECHANGELOGLOCK | 1395 | -- Records of FLW_EV_DATABASECHANGELOGLOCK |
| @@ -1414,7 +1414,7 @@ CREATE TABLE `FLW_EVENT_DEFINITION` ( | @@ -1414,7 +1414,7 @@ CREATE TABLE `FLW_EVENT_DEFINITION` ( | ||
| 1414 | `DESCRIPTION_` varchar(255) DEFAULT NULL, | 1414 | `DESCRIPTION_` varchar(255) DEFAULT NULL, |
| 1415 | PRIMARY KEY (`ID_`), | 1415 | PRIMARY KEY (`ID_`), |
| 1416 | UNIQUE KEY `ACT_IDX_EVENT_DEF_UNIQ` (`KEY_`,`VERSION_`,`TENANT_ID_`) | 1416 | UNIQUE KEY `ACT_IDX_EVENT_DEF_UNIQ` (`KEY_`,`VERSION_`,`TENANT_ID_`) |
| 1417 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | 1417 | +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; |
| 1418 | 1418 | ||
| 1419 | -- ---------------------------- | 1419 | -- ---------------------------- |
| 1420 | -- Records of FLW_EVENT_DEFINITION | 1420 | -- Records of FLW_EVENT_DEFINITION |
| @@ -1434,7 +1434,7 @@ CREATE TABLE `FLW_EVENT_DEPLOYMENT` ( | @@ -1434,7 +1434,7 @@ CREATE TABLE `FLW_EVENT_DEPLOYMENT` ( | ||
| 1434 | `TENANT_ID_` varchar(255) DEFAULT NULL, | 1434 | `TENANT_ID_` varchar(255) DEFAULT NULL, |
| 1435 | `PARENT_DEPLOYMENT_ID_` varchar(255) DEFAULT NULL, | 1435 | `PARENT_DEPLOYMENT_ID_` varchar(255) DEFAULT NULL, |
| 1436 | PRIMARY KEY (`ID_`) | 1436 | PRIMARY KEY (`ID_`) |
| 1437 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | 1437 | +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; |
| 1438 | 1438 | ||
| 1439 | -- ---------------------------- | 1439 | -- ---------------------------- |
| 1440 | -- Records of FLW_EVENT_DEPLOYMENT | 1440 | -- Records of FLW_EVENT_DEPLOYMENT |
| @@ -1452,7 +1452,7 @@ CREATE TABLE `FLW_EVENT_RESOURCE` ( | @@ -1452,7 +1452,7 @@ CREATE TABLE `FLW_EVENT_RESOURCE` ( | ||
| 1452 | `DEPLOYMENT_ID_` varchar(255) DEFAULT NULL, | 1452 | `DEPLOYMENT_ID_` varchar(255) DEFAULT NULL, |
| 1453 | `RESOURCE_BYTES_` longblob, | 1453 | `RESOURCE_BYTES_` longblob, |
| 1454 | PRIMARY KEY (`ID_`) | 1454 | PRIMARY KEY (`ID_`) |
| 1455 | -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | 1455 | +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; |
| 1456 | 1456 | ||
| 1457 | -- ---------------------------- | 1457 | -- ---------------------------- |
| 1458 | -- Records of FLW_EVENT_RESOURCE | 1458 | -- Records of FLW_EVENT_RESOURCE |
yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/core/security/TenantSecurityWebFilter.java
| @@ -75,16 +75,16 @@ public class TenantSecurityWebFilter extends ApiRequestFilter { | @@ -75,16 +75,16 @@ public class TenantSecurityWebFilter extends ApiRequestFilter { | ||
| 75 | } | 75 | } |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | - // 2. 如果请求未带租户的编号,检查是否是忽略的 URL,否则也不允许访问。 | ||
| 79 | - if (tenantId == null && !isIgnoreUrl(request)) { | ||
| 80 | - log.error("[doFilterInternal][URL({}/{}) 未传递租户编号]", request.getRequestURI(), request.getMethod()); | ||
| 81 | - ServletUtils.writeJSON(response, CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST.getCode(), | ||
| 82 | - "租户的请求未传递,请进行排查")); | ||
| 83 | - return; | ||
| 84 | - } | ||
| 85 | - | ||
| 86 | - // 3. 校验租户是合法,例如说被禁用、到期 | ||
| 87 | - if (tenantId != null) { | 78 | + //检查是否是忽略的 URL, 如果是则允许访问 |
| 79 | + if (!isIgnoreUrl(request)) { | ||
| 80 | + // 2. 如果请求未带租户的编号,不允许访问。 | ||
| 81 | + if (tenantId == null) { | ||
| 82 | + log.error("[doFilterInternal][URL({}/{}) 未传递租户编号]", request.getRequestURI(), request.getMethod()); | ||
| 83 | + ServletUtils.writeJSON(response, CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST.getCode(), | ||
| 84 | + "租户的请求未传递,请进行排查")); | ||
| 85 | + return; | ||
| 86 | + } | ||
| 87 | + // 3. 校验租户是合法,例如说被禁用、到期 | ||
| 88 | try { | 88 | try { |
| 89 | tenantFrameworkService.validTenant(tenantId); | 89 | tenantFrameworkService.validTenant(tenantId); |
| 90 | } catch (Throwable ex) { | 90 | } catch (Throwable ex) { |
yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/SecurityProperties.java
| @@ -4,7 +4,6 @@ import lombok.Data; | @@ -4,7 +4,6 @@ import lombok.Data; | ||
| 4 | import org.springframework.boot.context.properties.ConfigurationProperties; | 4 | import org.springframework.boot.context.properties.ConfigurationProperties; |
| 5 | import org.springframework.validation.annotation.Validated; | 5 | import org.springframework.validation.annotation.Validated; |
| 6 | 6 | ||
| 7 | -import javax.validation.Valid; | ||
| 8 | import javax.validation.constraints.NotEmpty; | 7 | import javax.validation.constraints.NotEmpty; |
| 9 | import javax.validation.constraints.NotNull; | 8 | import javax.validation.constraints.NotNull; |
| 10 | import java.time.Duration; | 9 | import java.time.Duration; |
| @@ -25,11 +24,6 @@ public class SecurityProperties { | @@ -25,11 +24,6 @@ public class SecurityProperties { | ||
| 25 | @NotNull(message = "Token 过期时间不能为空") | 24 | @NotNull(message = "Token 过期时间不能为空") |
| 26 | private Duration tokenTimeout; | 25 | private Duration tokenTimeout; |
| 27 | /** | 26 | /** |
| 28 | - * Token 秘钥 | ||
| 29 | - */ | ||
| 30 | - @NotEmpty(message = "Token 秘钥不能为空") | ||
| 31 | - private String tokenSecret; | ||
| 32 | - /** | ||
| 33 | * Session 过期时间 | 27 | * Session 过期时间 |
| 34 | * | 28 | * |
| 35 | * 当 User 用户超过当前时间未操作,则 Session 会过期 | 29 | * 当 User 用户超过当前时间未操作,则 Session 会过期 |
yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/filter/JWTAuthenticationTokenFilter.java
| @@ -66,7 +66,7 @@ public class JWTAuthenticationTokenFilter extends OncePerRequestFilter { | @@ -66,7 +66,7 @@ public class JWTAuthenticationTokenFilter extends OncePerRequestFilter { | ||
| 66 | * 注意,在线上环境下,一定要关闭该功能!!! | 66 | * 注意,在线上环境下,一定要关闭该功能!!! |
| 67 | * | 67 | * |
| 68 | * @param request 请求 | 68 | * @param request 请求 |
| 69 | - * @param token 模拟的 token,格式为 {@link SecurityProperties#getTokenSecret()} + 用户编号 | 69 | + * @param token 模拟的 token,格式为 {@link SecurityProperties#getMockSecret()} + 用户编号 |
| 70 | * @return 模拟的 LoginUser | 70 | * @return 模拟的 LoginUser |
| 71 | */ | 71 | */ |
| 72 | private LoginUser mockLoginUser(HttpServletRequest request, String token) { | 72 | private LoginUser mockLoginUser(HttpServletRequest request, String token) { |
yudao-server/src/main/resources/application-dev.yaml
| @@ -168,7 +168,6 @@ wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-sta | @@ -168,7 +168,6 @@ wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-sta | ||
| 168 | yudao: | 168 | yudao: |
| 169 | security: | 169 | security: |
| 170 | token-header: Authorization | 170 | token-header: Authorization |
| 171 | - token-secret: abcdefghijklmnopqrstuvwxyz | ||
| 172 | token-timeout: 1d | 171 | token-timeout: 1d |
| 173 | session-timeout: 30m | 172 | session-timeout: 30m |
| 174 | mock-enable: true | 173 | mock-enable: true |
yudao-server/src/main/resources/application-local.yaml
| @@ -180,9 +180,7 @@ yudao: | @@ -180,9 +180,7 @@ yudao: | ||
| 180 | enable: false # 本地环境,暂时关闭图片验证码,方便登录等接口的测试 | 180 | enable: false # 本地环境,暂时关闭图片验证码,方便登录等接口的测试 |
| 181 | security: | 181 | security: |
| 182 | token-header: Authorization | 182 | token-header: Authorization |
| 183 | - token-secret: abcdefghijklmnopqrstuvwxyz | ||
| 184 | token-timeout: 1d | 183 | token-timeout: 1d |
| 185 | -# session-timeout: 30m | ||
| 186 | session-timeout: 1d | 184 | session-timeout: 1d |
| 187 | mock-enable: true | 185 | mock-enable: true |
| 188 | mock-secret: test | 186 | mock-secret: test |
yudao-ui-admin/src/utils/request.js
| @@ -97,9 +97,9 @@ service.interceptors.response.use(res => { | @@ -97,9 +97,9 @@ service.interceptors.response.use(res => { | ||
| 97 | type: 'error', | 97 | type: 'error', |
| 98 | duration: 0, | 98 | duration: 0, |
| 99 | dangerouslyUseHTMLString: true, | 99 | dangerouslyUseHTMLString: true, |
| 100 | - message: '<div>演示模式,不发进行写操作</div>' | 100 | + message: '<div>演示模式,无法进行写操作</div>' |
| 101 | + '<div> </div>' | 101 | + '<div> </div>' |
| 102 | - + '<div>参考 https://www.iocoder.cn/Yudao/build-debugger-environment 教程</div>' | 102 | + + '<div>参考 https://doc.iocoder.cn/ 教程</div>' |
| 103 | + '<div> </div>' | 103 | + '<div> </div>' |
| 104 | + '<div>5 分钟搭建本地环境</div>', | 104 | + '<div>5 分钟搭建本地环境</div>', |
| 105 | }) | 105 | }) |
yudao-ui-admin/src/views/infra/file/index.vue
| @@ -110,7 +110,7 @@ export default { | @@ -110,7 +110,7 @@ export default { | ||
| 110 | open: false, // 是否显示弹出层 | 110 | open: false, // 是否显示弹出层 |
| 111 | title: "", // 弹出层标题 | 111 | title: "", // 弹出层标题 |
| 112 | isUploading: false, // 是否禁用上传 | 112 | isUploading: false, // 是否禁用上传 |
| 113 | - url: process.env.VUE_APP_BASE_API + '/admin-api/infra/file/upload", // 请求地址 | 113 | + url: process.env.VUE_APP_BASE_API + "/admin-api/infra/file/upload", // 请求地址 |
| 114 | headers: { Authorization: "Bearer " + getToken() }, // 设置上传的请求头部 | 114 | headers: { Authorization: "Bearer " + getToken() }, // 设置上传的请求头部 |
| 115 | data: {} // 上传的额外数据,用于文件名 | 115 | data: {} // 上传的额外数据,用于文件名 |
| 116 | }, | 116 | }, |
更新日志.md deleted
| 1 | -## 计划中 | ||
| 2 | - | ||
| 3 | -* 邮件 | ||
| 4 | -* 钉钉、飞书等通知 | ||
| 5 | -* Vue3 支持 | ||
| 6 | - | ||
| 7 | -### 📝 TODO | ||
| 8 | - | ||
| 9 | -* 支付 | ||
| 10 | - | ||
| 11 | -* 升级 mybatis plus 最新版本,优化多租户的实现 | ||
| 12 | -* RedisKeyDefine 的发现机制 | ||
| 13 | - | ||
| 14 | -## [v.1.6.0] 【进行中】计划 2022.03.04 发布 | ||
| 15 | - | ||
| 16 | -* 基于 flowable 实现工作流 | ||
| 17 | -* 基于 uniapp 实现小程序,完成用户中心相关的功能(社交登陆、修改密码、忘记密码、修改个人信息等等功能) | ||
| 18 | - | ||
| 19 | -### ⚠️ Warning | ||
| 20 | - | ||
| 21 | -TODO | ||
| 22 | - | ||
| 23 | -### 📈 Statistic | ||
| 24 | - | ||
| 25 | -TODO | ||
| 26 | - | ||
| 27 | -### ⭐ New Features | ||
| 28 | - | ||
| 29 | -TODO | ||
| 30 | - | ||
| 31 | -### 🐞 Bug Fixes | ||
| 32 | - | ||
| 33 | -TODO | ||
| 34 | - | ||
| 35 | -### 🔨 Dependency Upgrades | ||
| 36 | - | ||
| 37 | -TODO | ||
| 38 | - | ||
| 39 | -## [v.1.5.1] | ||
| 40 | - | ||
| 41 | -### ⚠️ Warning | ||
| 42 | - | ||
| 43 | -暂无,主要优化多租户功能: | ||
| 44 | -* 创建租户时,自动创建用户、角色等信息 | ||
| 45 | -* 支持租户套餐,自定义每个租户的菜单、操作、按钮等权限信息 | ||
| 46 | - | ||
| 47 | -### 📈 Statistic | ||
| 48 | - | ||
| 49 | -* 总代码行数:71249 | ||
| 50 | -* 源码代码行数:43921 | ||
| 51 | -* 注释行数:16341 | ||
| 52 | -* 单元测试用例数:341 | ||
| 53 | - | ||
| 54 | -### ⭐ New Features | ||
| 55 | - | ||
| 56 | -* 【新增】后端 `yudao.tenant.enable` 配置项,前端 `VUE_APP_TENANT_ENABLE` 配置项,用于开关租户功能。 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/79311ecc71f0c6beabe0e5f84e1423ce745a5f09) | ||
| 57 | -* 【优化】调整默认所有表开启多租户的特性,可通过 `yudao.tenant.ignore-tables` 配置项进行忽略,替代原本默认不开启的策略 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/79311ecc71f0c6beabe0e5f84e1423ce745a5f09) | ||
| 58 | -* 【新增】通过 `yudao.tenant.ignore-urls` 配置忽略多租户的请求,例如说 ,例如说短信回调、支付回调等 Open API [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/79311ecc71f0c6beabe0e5f84e1423ce745a5f09) | ||
| 59 | -* 【新增】新增 `@TenantIgnore` 注解,标记指定方法,忽略多租户的自动过滤,适合实现跨租户的逻辑 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/4d53944771c66b563da1e3d68d3ba43405af8a06) | ||
| 60 | -* 【新增】租户套餐的管理,可配置每个租户的可使用的功能权限 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/6b6d676a6baa2dad16ae9bf03d5002209064c8cc) | ||
| 61 | -* 【优化】新建租户时,自动创建对应的管理员账号、角色等基础信息 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/2598c033a95d4b61d5f5ab3da5f1414f25c510d6) | ||
| 62 | -* 【优化】Redis 最低版本 5.0.0 检测,解决搭建环境过程中无法理解 XREADGROUP 指令的报错 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/c64bb81caeee2721e0c373eee014e3977d88cb37) | ||
| 63 | - | ||
| 64 | -### 🐞 Bug Fixes | ||
| 65 | - | ||
| 66 | -* 【修复】修复不支持根部门的问题 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/fa62ace6af5ecc2f3030fa86d2ce222a1392f1a6) | ||
| 67 | -* 【修复】错误码存在重复的问题 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/10ba70e1079d9a068c054ee677a7accc0b1209fe) | ||
| 68 | -* 【修复】角色的数据范围为仅本人时,登陆后获取权限列表报错的问题 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/c61811a622a6829802e233e303bab091cc308f3a) | ||
| 69 | - | ||
| 70 | -### 🔨 Dependency Upgrades | ||
| 71 | - | ||
| 72 | -* 【升级】spring-boot from 2.5.9 to 2.5.10 | ||
| 73 | -* 【升级】mybatis-plus from 3.4.3.4 to 3.5.1 | ||
| 74 | - | ||
| 75 | -## [v.1.5.0] | ||
| 76 | - | ||
| 77 | -### ⚠️ Warning | ||
| 78 | - | ||
| 79 | -* 修复各种多 Maven Module 重构带来的 Bug,感谢大量群友的 PR 支持! | ||
| 80 | -* 跟进 ruoyi-vue 3.4.0 ~ 3.8.1 版本,感谢这么优秀的开源项目! | ||
| 81 | - | ||
| 82 | -### 📈 Statistic | ||
| 83 | - | ||
| 84 | -* 总代码行数:69299 | ||
| 85 | -* 源码代码行数:42687 | ||
| 86 | -* 注释行数:15888 | ||
| 87 | -* 单元测试用例数:278 | ||
| 88 | - | ||
| 89 | -### ⭐ New Features | ||
| 90 | - | ||
| 91 | -* 【优化】使用 Lombok 简化 JsonUtils 工具类 [#73](https://github.com/YunaiV/ruoyi-vue-pro/pull/73) | ||
| 92 | -* 【新增】兼容 Node 16 版本,通过升级 BPMN-JS 相关库 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/4c169cbc58eb0d0cc4aead73ca127a2957e6a3aa) | ||
| 93 | -* 【新增】前端的表格右侧工具栏组件支持显隐列,具体可见【用户管理】功能 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/20e34e35a3bdc48e6a4c58e3849aa729bd18efe5) | ||
| 94 | -* 【新增】前端的菜单导航显示风格 TopNav(false 为 左侧导航菜单,true 为顶部导航菜单),支持布局的保存与重置 [commit1](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/4bf5b04d542014a49c5a41b20935cef35033a518) [commit2](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/cff4391f2d7830770731c0034085c0f77ea8c68e) | ||
| 95 | -* 【新增】前端的网页标题支持根据选择的菜单,动态展示标题 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/7bf9a85263e0c44b2bc88485b83557c129583f5c) | ||
| 96 | -* 【新增】字典标签样式回显,例如说开启的状态展示为 primary 蓝色,禁用的状态为 info 灰色 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/986d1328e0a0d37e2de2fb9d937faeed9d9bee7b) | ||
| 97 | -* 【新增】前端的 iframe 组件,方便内嵌网页 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/4a8129bffa9e3928c56333e29f5874f55a079764) | ||
| 98 | -* 【新增】在基础设施-配置管理菜单,可通过修改 `yudao.captcha.enable` 配置项,动态修改登录是否需要验证码 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/ec378d75de5660d873514fa16cfabb3671b9eeb4) | ||
| 99 | -* 【新增】在代码生成的预览界面,支持一键复制代码 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/9724a522e9755f6154a82b5f2a0a397662029ab8) | ||
| 100 | - | ||
| 101 | -### 🐞 Bug Fixes | ||
| 102 | - | ||
| 103 | -* 【修复】数据权限的 `DEPT_AND_CHILD` 范围时,未设置自己所在的部门 [#72](https://gitee.com/zhijiantianya/ruoyi-vue-pro/pulls/72) | ||
| 104 | -* 【修复】Knife4j 接口文档 404 的问题,原因是 `spring.mvc.static-path-pattern` 配置项,影响了基础路径 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/f966fae0606178ec5ffa47dd487f7984867da557) | ||
| 105 | -* 【修复】修复文件访问地址错误 [#68](https://github.com/YunaiV/ruoyi-vue-pro/pull/68) | ||
| 106 | -* 【修复】工作流程发起以及审批异常,由 `@NotEmpty` 校验、和 Long 类型异常导致 [#73](https://gitee.com/zhijiantianya/ruoyi-vue-pro/pulls/73) | ||
| 107 | -* 【修复】自定义 DefaultStreamMessageListenerContainerX 实现,解决 Redisson Stream 读取不到数据返回 `null` 导致 NPE 问题 [commit](https://gitee.com/zhijiantianya/ruoyi-vue-pro/commit/2cef84bdc836de9041b5c68dcba0f0e59f666277) | ||
| 108 | -* 【修复】部门更新后,本地缓存不刷新的问题 [#77](https://gitee.com/zhijiantianya/ruoyi-vue-pro/pulls/77) | ||
| 109 | -* 【修复】获取拥有指定的角色用户时,返回错误的 id 编号 [#79](https://gitee.com/zhijiantianya/ruoyi-vue-pro/pulls/79) | ||
| 110 | - | ||
| 111 | -### 🔨 Dependency Upgrades | ||
| 112 | - | ||
| 113 | -*【修复】Maven 构建的一些错误提示 [#78](https://gitee.com/zhijiantianya/ruoyi-vue-pro/pulls/78) | ||
| 114 | - | ||
| 115 | -## [v1.4.0] 2022.02.04 | ||
| 116 | - | ||
| 117 | -### ⚠️ Warning | ||
| 118 | - | ||
| 119 | -大版本重构,基于 Maven Module 的方式拆分多模块,希望大家多多提点建议! | ||
| 120 | - | ||
| 121 | -### 📈 Statistic | ||
| 122 | - | ||
| 123 | -* 总代码行数:69118 | ||
| 124 | -* 源码代码行数:42571 | ||
| 125 | -* 注释行数:15847 | ||
| 126 | -* 单元测试用例数:278 | ||
| 127 | - | ||
| 128 | -### ⭐ New Features | ||
| 129 | - | ||
| 130 | -* 【重构】大模块按照多 Maven Module 的方式拆分,提升可维护性,为后续重构 onemall 提供基础 | ||
| 131 | -* 【移除】将 `yudao-core-service` 模块移除,替换成每个 Maven Module 暴露对应的 `yudao-module-***-api` 模块 | ||
| 132 | -* 【新增】Spring Security 支持读取多种用户类型,从不同的数据库表,从而实现单项目提供管理后台、用户 APP 的不同 RESTful API 接口 | ||
| 133 | -* 【新增】Spring Security 新增 AuthorizeRequestsCustomizer 抽象类, 自定义每个 Maven Module 的 URL 的安全配置 | ||
| 134 | -* 【新增】代码生成器支持多 Maven Module 的方式生成代码,支持管理后台、用户 APP 两种场景的 RESTful API 的生成,支持 H2 SQL 脚本的生成 | ||
| 135 | -* 【新增】每次发布大版本时,将 yudao-ui-admin 编译后,放到 yudao-server 项目中,可以快速体验,无需搭建前端开发环境 | ||
| 136 | -* 【重构】将数据库文档调整到 tool 模块,更加明确 | ||
| 137 | -* 【优化】代码生成器的前端展示效果,例如说 Java 包路径合并 | ||
| 138 | - | ||
| 139 | -### 🐞 Bug Fixes | ||
| 140 | - | ||
| 141 | -* 【修复】用户无权限访问 指定 API 时,未返回 FORBIDDEN 结果码 | ||
| 142 | -* 【修复】定时任务刷新本地缓存时,无租户上线文,导致查询报错 | ||
| 143 | -* 【修复】配置中心只加载了删除的配置 | ||
| 144 | -* 【修复】管理后台 UI 超时登录后,返回登陆界面时,由于未登陆加载不到信息,导致报错的问题 | ||
| 145 | - | ||
| 146 | -### 🔨 Dependency Upgrades | ||
| 147 | - | ||
| 148 | -* 【升级】spring-boot from 2.4.12 to 2.5.9,最新的 Spring Boot 2.6.X 在等更流行一些,稳定第一 | ||
| 149 | -* 【升级】Spring Boot Admin from 2.3.2 to 2.6.2,提供更好的监控能力 | ||
| 150 | -* 【移除】Apache FreeMarker 依赖,修改 Screw 使用 Velocity 作为模板引擎 | ||
| 151 | -* 【升级】redisson from 3.16.6 to 3.16.8 | ||
| 152 | - | ||
| 153 | -## [v1.3.0] 2022.01.24 | ||
| 154 | - | ||
| 155 | -### ⚠️ Warning | ||
| 156 | - | ||
| 157 | -基于 Activiti 7.X 版本实现工作流功能,支持可配置的动态表单、自定义的业务表单。 | ||
| 158 | - | ||
| 159 | -下个版本会提供基于 Flowable 6.X 版本实现的工作流! | ||
| 160 | - | ||
| 161 | -### 📈 Statistic | ||
| 162 | - | ||
| 163 | -* 总代码行数:61594 | ||
| 164 | -* 源码代码行数:37931 | ||
| 165 | -* 注释行数:14225 | ||
| 166 | -* 单元测试用例数:278 | ||
| 167 | - | ||
| 168 | -### ⭐ New Features | ||
| 169 | - | ||
| 170 | -* 【优化】引入 form generator 0.2.0 版本,并重构相关代码 | ||
| 171 | -* 【修改】修改部门负责人,从 String 字符串,调整成和后台用户的用户编号绑定 | ||
| 172 | -* 【新增】流程表单,支持动态进行表单的配置 | ||
| 173 | -* 【新增】工作组,用于支持指定工作组进行任务的审批 | ||
| 174 | -* 【新增】流程模型的管理,支持新增、导入、编辑、删除、发布流程模型 | ||
| 175 | -* 【新增】我的流程的管理,支持发起流程 | ||
| 176 | -* 【新增】待办任务的管理,支持任务的审批通过与不通过 | ||
| 177 | -* 【新增】已办任务的管理,支持详情的查看 | ||
| 178 | -* 【新增】任务分配规则,可指定角色、部门成员、部门负责人、用户、用户组、自定义脚本等维度,进行任务的审批 | ||
| 179 | -* 【新增】引入 bpmn-process-designer 0.0.1 版本,提供流程设计器的能力 | ||
| 180 | -* 【优化】新增 LambdaQueryWrapperX 类,改成使用 Lambda 的方式选择字段,避免手写导致字段不正确 | ||
| 181 | - | ||
| 182 | -### 🐞 Bug Fixes | ||
| 183 | - | ||
| 184 | -* 【修复】biz-data-permission 组件的缓存机制,导致部分 SQL 未进行数据过滤 | ||
| 185 | -* 【修复】codegen 生成代码时,delete 接口补充 dataTypeClass 属性,避免 Swagger 打印 WARN 日志 | ||
| 186 | -* 【修复】Swagger 文档由于写错 `@ApiImplicitParam` 注解的 name 和 dataTypeClass 属性,导致文档生成失败 | ||
| 187 | - | ||
| 188 | -### 🔨 Dependency Upgrades | ||
| 189 | - | ||
| 190 | -* 【升级】redisson from 3.16.3 to 3.16.6,解决 Stream 在调试场景下会存在 NPE 的问题 | ||
| 191 | -* 【升级】spring-boot from 2.4.5 to 2.4.12,最新的 Spring Boot 2.6.X 在等更流行一些,稳定第一 | ||
| 192 | -* 【升级】druid from 1.2.4 to 1.2.8,提升数据库连接池的稳定性 | ||
| 193 | -* 【升级】dynamic-datasource from 3.3.2 to 3.5.0,修复动态数据源切换的问题 | ||
| 194 | - | ||
| 195 | -## [v1.2.0] | ||
| 196 | - | ||
| 197 | -### ⚠️ Warning | ||
| 198 | - | ||
| 199 | -这个版本新增了多租户与数据权限两个重量级的功能,建议花点时间进行了解与学习。 | ||
| 200 | - | ||
| 201 | -### ⭐ New Features | ||
| 202 | - | ||
| 203 | -* 【新增】多租户,支持 Web、Security、Job、MQ、Async、DB、Redis 组件 | ||
| 204 | -* 【新增】数据权限,内置基于部门过滤的规则 | ||
| 205 | -* 【新增】用户前台的昵称、头像的修改 | ||
| 206 | -* 【新增】用户前台的微信公众号、微信小程序的社交登陆的 API 接口 | ||
| 207 | - > 完整功能,需要等基于 Uniapp 实现的用户前台一起~ 努力 coding 中,胖友可以 star 持续关注一波! | ||
| 208 | - | ||
| 209 | -* 【优化】管理后台的登陆成功后,LoginUser 使用统一方法补全信息 | ||
| 210 | - | ||
| 211 | -### 🐞 Bug Fixes | ||
| 212 | - | ||
| 213 | -* 【修复】通知和字典查询接口的 @PreAuthorize 权限标识错误 | ||
| 214 | -* 【修复】代码生成的 Java 类路径缺少 modules 目录 | ||
| 215 | -* 【修复】代码生成的 Test 单元测试类的引入 Util 工具类的包路径不正确 | ||
| 216 | - | ||
| 217 | -### 🔨 Dependency Upgrades | ||
| 218 | - | ||
| 219 | -* 【引入】mockito-inline 3.6.28:Mockito 提供对 final、static 的支持 | ||
| 220 | - | ||
| 221 | -## [v1.1.0] 2021.10.25 | ||
| 222 | - | ||
| 223 | -* 新增管理后台的企业微信、钉钉等社交登录 | ||
| 224 | -* 新增用户前台(例如说,用户使用的小程序)的后端项目 `yudao-user-server` | ||
| 225 | -* 新增公共服务 `yudao-core-service` 项目,通过 Jar 包的方式,提供 `yudao-user-server` 和 `yudao-admin-server` 的共享逻辑的复用 | ||
| 226 | -* 新增用户前台的手机登录、验证码登录 | ||
| 227 | -* 修复管理后台的用户头像上传 404 的问题,原因是请求路径不对 | ||
| 228 | -* 修复用户导入失败的问题,原因是 Lombok 链式与 cglib 读取属性有冲突 | ||
| 229 | -* 修复阿里云短信发送失败的问题,原因是 Opentracing 依赖的版本太低,调整成 0.31.0 | ||
| 230 | - | ||
| 231 | -## [v1.0.0] 2021.05.03 | ||
| 232 | - | ||
| 233 | -第一个版本,基于 [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue) 重构,主要是三个方面: | ||
| 234 | -* 代码的重构 | ||
| 235 | -* 技术选型的调整 | ||
| 236 | -* 后台功能的新增 | ||
| 237 | - | ||
| 238 | -因此,`v1.0.0` 的更新日志,分成这三方面来写。 | ||
| 239 | - | ||
| 240 | -### 代码的重构 | ||
| 241 | - | ||
| 242 | -* 调整整体代码结构,将多个 Maven Module 合并为单个,使用 Java package 进行拆分隔离,如 [图](https://static.iocoder.cn/ruoyi-vue-pro-modules.jpg) 所示。原因是:随着业务逻辑的逐步复杂,多个 Maven Module 的依赖关系的管理,会是一个很大的问题。 | ||
| 243 | -* 拆分 [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) 等不同组件,进行封装与拓展。 | ||
| 244 | -* 基于 [JUnit5](https://junit.org/junit5/) 与 [Mockito](https://github.com/mockito/mockito),实现单元测试,保证功能的正确性,与代码的可维护性。一直自动化,一直爽! | ||
| 245 | -* 增加 SpringBoot 多环境的配置文件,提供完善的 [deploy.sh](https://gitee.com/zhijiantianya/ruoyi-vue-pro/blob/master/bin/deploy.sh) 部署脚本,以及 [Jenkins 部署教程](https://juejin.cn/post/6942098287533129765)。 | ||
| 246 | -* 优化 [Spring Security](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework/yudao-spring-boot-starter-security) 实现权限的代码,提升可读性和维护性。 | ||
| 247 | -* 增加本地缓存(菜单、角色、数据字典等等),提升性能。通过 Redis 订阅发布,实现缓存的实时刷新。 | ||
| 248 | -* 增加 [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 接口的响应对象,避免数据库实体与前端的直接耦合。 | ||
| 249 | -* 优化 [操作日志](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/src/main/java/cn/iocoder/dashboard/framework/logger/operatelog),支持读取 Swagger 作为日志的内容。 | ||
| 250 | -* 优化 [定时任务](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/src/main/java/cn/iocoder/dashboard/framework/quartz),支持执行失败的重试,更完善的执行日志。 | ||
| 251 | -* 优化 [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、单元测试的代码。 | ||
| 252 | -* 调整文件改用 [数据库](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) 存储,而不是文件系统。原因是,项目在部署多个服务节点时,文件需要做同步。未来,会增加阿里云、七牛云等存储云服务。 | ||
| 253 | -* 去除原有数据库的连表查询、递归查询,改为单表操作的方式,多次读取 + 内存拼接。 | ||
| 254 | -* 优化 Java 代码的格式,解决 IDEA 代码告警的问题。 | ||
| 255 | - | ||
| 256 | -### 后台功能的新增 | ||
| 257 | - | ||
| 258 | -* 增加 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 的问题。 | ||
| 259 | -* 增加 [全局错误码](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),统一业务异常的管理。管理后台会支持错误码的管理,支持提示文案的可配置化。 | ||
| 260 | -* 增加 [短信模块](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms),提供短信渠道、短息模板、短信日志的管理,对接阿里云、云片等主流短信平台。 | ||
| 261 | -* 增加 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 的格式、数据类型、过期时间、描述等等信息。 | ||
| 262 | - | ||
| 263 | -### 技术选型的调整 | ||
| 264 | - | ||
| 265 | -* 将 Spring Boot 版本,从 2.1.3 升级到 2.4.5 最新。 | ||
| 266 | -* 增加 [bom](https://gitee.com/zhijiantianya/ruoyi-vue-pro/blob/master/yudao-dependencies/pom.xml) 文件,统一 Maven 的依赖管理。 | ||
| 267 | -* 引入 [MyBatis Plus](https://baomidou.com/) 组件,简化 MyBatis 使用,提升开发效率。 | ||
| 268 | -* 引入 [Redisson](https://github.com/redisson/redisson) 组件,作为 Redis 的客户端,提供更强大的 Redis 操作。 | ||
| 269 | -* 基于 Redis 实现分布式消息队列的功能。接入 Redis [Pub/Sub](https://redis.io/topics/pubsub) 实现广播消费,接入 Redis [Stream](https://redis.io/topics/streams-intro) 实现集群消费。 | ||
| 270 | -* 去除 [fastjson](https://github.com/alibaba/fastjson),统一使用 [Jackson](https://www.jackson.com/) 作为 JSON 库,老爆安全漏洞的悲伤。 | ||
| 271 | -* 引入 [MapStruct](https://mapstruct.org/) 组件,实现数据库实体与 VO 类之间的转换。 | ||
| 272 | -* 引入 [Lombok](https://projectlombok.org/) 组件,生成 setter、getter 等常用方法,去除冗余代码。 | ||
| 273 | -* 引入 Spring [Async](https://www.iocoder.cn/Spring-Boot/Async-Job/?oschina) 功能,实现异步任务。例如说,异步记录 API 访问日志、管理员操作日志等等。 | ||
| 274 | -* 魔改 [Apollo](https://github.com/ctripcorp/apollo) 组件,接入本地数据库,实现内嵌的配置中心。通俗的说,我们可以将原本添加到 `application.yaml` 的配置项,改为添加到数据库中,项目启动会进行读取。 | ||
| 275 | -* 引入 [Hutool](https://github.com/dromara/hutool) 组件,去除大量重复的工具类,也避免原本 Util 存在一些 bug 的问题。 | ||
| 276 | -* 引入 [Screw](https://github.com/pingfangushi/screw) 组件,实现数据库文档的生成,虽然好像现在用途较少。 | ||
| 277 | -* 引入 [EasyExcel](https://github.com/alibaba/easyexcel),提供 Excel 的导入与导出的功能。 | ||
| 278 | -* 实现 [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 重复请求的问题。 | ||
| 279 | -* 引入 [Lock4J](https://gitee.com/baomidou/lock4j),实现声明式的分布式锁的功能。虽然 Redisson 内置了分布式锁的功能,但是通过注解声明一个 `@Lock4j` 注解的使用方式,更加便利,且满足绝大多数场景。 | ||
| 280 | -* 去除原有的服务监控,使用 [SpringBoot Admin](https://github.com/codecentric/spring-boot-admin) 替代,提供更完整的监控能力。 | ||
| 281 | -* 引入 [SkyWalking](https://github.com/apache/skywalking) 组件,实现链路追踪和日志服务的功能。通过链路追踪,我们可以看到一个 API 请求涉及到的 MySQL、Redis 等操作;通过日志服务,我们可以方便的看到每个服务实例的日志。 | ||
| 282 | -* 引入 [Resilience4j](https://github.com/quartz-scheduler) 组件,实现限流、熔断等功能,保证服务的稳定性。 | ||
| 283 | -* 引入 [Knife4j](https://gitee.com/xiaoym/knife4j),美化接口文档。原本所有 API 接口文档是缺失的,已经全部补全,可见 <http://api-dashboard.yudao.iocoder.cn/doc.html> 地址。 |