Commit b2f5900abcca4d599d6c9bb4477b648f8f22c502
Merge branch 'master' of https://gitee.com/zhijiantianya/ruoyi-vue-pro into feature/visual
Showing
625 changed files
with
43335 additions
and
11051 deletions
Too many changes.
To preserve performance only 100 of 625 files are displayed.
.gitignore
README.md
| @@ -9,6 +9,12 @@ | @@ -9,6 +9,12 @@ | ||
| 9 | 9 | ||
| 10 | 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 | 10 | 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 |
| 11 | 11 | ||
| 12 | +## 🐶 新手必读 | ||
| 13 | + | ||
| 14 | +* 演示地址:<http://dashboard.yudao.iocoder.cn> | ||
| 15 | +* 启动文档:<https://doc.iocoder.cn/quick-start/> | ||
| 16 | +* 视频教程:<https://doc.iocoder.cn/video/> | ||
| 17 | + | ||
| 12 | ## 🐯 平台简介 | 18 | ## 🐯 平台简介 |
| 13 | 19 | ||
| 14 | **芋道**,以开发者为中心,打造中国第一流的快速开发平台,全部开源,个人与企业可 100% 免费使用。 | 20 | **芋道**,以开发者为中心,打造中国第一流的快速开发平台,全部开源,个人与企业可 100% 免费使用。 |
| @@ -17,7 +23,8 @@ | @@ -17,7 +23,8 @@ | ||
| 17 | > | 23 | > |
| 18 | > 😜 给项目点点 Star 吧,这对我们真的很重要! | 24 | > 😜 给项目点点 Star 吧,这对我们真的很重要! |
| 19 | 25 | ||
| 20 | -* 前端采用 [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin) ,正在支持 Vue 3 + ElementUI Plus 最新方案。 | 26 | +* 前端 Vue2 版本采用 [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin) |
| 27 | +* 前端 Vue3 版本采用 [vue-element-plus-admin](https://gitee.com/kailong110120130/vue-element-plus-admin) | ||
| 21 | * 后端采用 Spring Boot、MySQL + MyBatis Plus、Redis + Redisson。 | 28 | * 后端采用 Spring Boot、MySQL + MyBatis Plus、Redis + Redisson。 |
| 22 | * 数据库可使用 MySQL、Oracle、PostgreSQL、SQL Server、MariaDB、国产达梦 DM、TiDB 等 | 29 | * 数据库可使用 MySQL、Oracle、PostgreSQL、SQL Server、MariaDB、国产达梦 DM、TiDB 等 |
| 23 | * 权限认证使用 Spring Security & Token & Redis,支持多终端、多种用户的认证系统。 | 30 | * 权限认证使用 Spring Security & Token & Redis,支持多终端、多种用户的认证系统。 |
| @@ -34,15 +41,6 @@ | @@ -34,15 +41,6 @@ | ||
| 34 | | `yudao-cloud` | Spring Cloud 微服务 | **[Gitee](https://gitee.com/zhijiantianya/yudao-cloud)** [Github](https://github.com/YunaiV/yudao-cloud) | | 41 | | `yudao-cloud` | Spring Cloud 微服务 | **[Gitee](https://gitee.com/zhijiantianya/yudao-cloud)** [Github](https://github.com/YunaiV/yudao-cloud) | |
| 35 | | `Spring-Boot-Labs` | Spring Boot & Cloud 入门 | **[Gitee](https://gitee.com/zhijiantianya/SpringBoot-Labs)** [Github](https://github.com/YunaiV/SpringBoot-Labs) | | 42 | | `Spring-Boot-Labs` | Spring Boot & Cloud 入门 | **[Gitee](https://gitee.com/zhijiantianya/SpringBoot-Labs)** [Github](https://github.com/YunaiV/SpringBoot-Labs) | |
| 36 | 43 | ||
| 37 | -## 🐶 在线体验 | ||
| 38 | - | ||
| 39 | -演示地址:<http://dashboard.yudao.iocoder.cn> | ||
| 40 | -* 账号密码:admin/admin123 | ||
| 41 | - | ||
| 42 | -文档地址:<http://www.iocoder.cn/categories/Yudao/> | ||
| 43 | -* [《如何搭建环境》](http://www.iocoder.cn/categories/Yudao/?yudao) | ||
| 44 | - | ||
| 45 | -视频教程:<https://doc.iocoder.cn/video/> | ||
| 46 | 44 | ||
| 47 | ## 🐼 内置功能 | 45 | ## 🐼 内置功能 |
| 48 | 46 | ||
| @@ -102,17 +100,6 @@ | @@ -102,17 +100,6 @@ | ||
| 102 | 100 | ||
| 103 | ps:核心功能已经实现,正在对接微信小程序中... | 101 | ps:核心功能已经实现,正在对接微信小程序中... |
| 104 | 102 | ||
| 105 | -### 商城系统 | ||
| 106 | - | ||
| 107 | -正在开发中,大体计划如下: | ||
| 108 | -* 2022 Q2 => 完成对 <https://github.com/YunaiV/onemall> 的迁移,作为 onemall 的 Spring Boot 单体版本。 | ||
| 109 | -* 2022 Q4 => 完成对 <https://github.com/YunaiV/onemall>> 的重构,作为 onemall 的 Spring Cloud 微服务版本。 | ||
| 110 | - | ||
| 111 | -### 会员中心 | ||
| 112 | - | ||
| 113 | -正在开发中,大体计划如下: | ||
| 114 | -* 2021 Q1 =》完成对 <https://github.com/YunaiV/onemall> 的迁移 | ||
| 115 | - | ||
| 116 | ### 基础设施 | 103 | ### 基础设施 |
| 117 | 104 | ||
| 118 | | | 功能 | 描述 | | 105 | | | 功能 | 描述 | |
| @@ -137,6 +124,20 @@ ps:核心功能已经实现,正在对接微信小程序中... | @@ -137,6 +124,20 @@ ps:核心功能已经实现,正在对接微信小程序中... | ||
| 137 | | 🚀 | 日志服务 | 轻量级日志中心,查看远程服务器的日志 | | 124 | | 🚀 | 日志服务 | 轻量级日志中心,查看远程服务器的日志 | |
| 138 | | 🚀 | 单元测试 | 基于 JUnit + Mockito 实现单元测试,保证功能的正确性、代码的质量等 | | 125 | | 🚀 | 单元测试 | 基于 JUnit + Mockito 实现单元测试,保证功能的正确性、代码的质量等 | |
| 139 | 126 | ||
| 127 | +### 商城系统 | ||
| 128 | + | ||
| 129 | +建设中... | ||
| 130 | + | ||
| 131 | + | ||
| 132 | + | ||
| 133 | + | ||
| 134 | + | ||
| 135 | + | ||
| 136 | + | ||
| 137 | +### 会员中心 | ||
| 138 | + | ||
| 139 | +和「商城系统」一起开发 | ||
| 140 | + | ||
| 140 | ## 🐨 技术栈 | 141 | ## 🐨 技术栈 |
| 141 | 142 | ||
| 142 | | 项目 | 说明 | | 143 | | 项目 | 说明 | |
| @@ -155,37 +156,50 @@ ps:核心功能已经实现,正在对接微信小程序中... | @@ -155,37 +156,50 @@ ps:核心功能已经实现,正在对接微信小程序中... | ||
| 155 | 156 | ||
| 156 | ### 后端 | 157 | ### 后端 |
| 157 | 158 | ||
| 158 | -| 框架 | 说明 | 版本 | 学习指南 | | ||
| 159 | -|---------------------------------------------------------------------------------------------|------------------|----------|----------------------------------------------------------------| | ||
| 160 | -| [Spring Boot](https://spring.io/projects/spring-boot) | 应用开发框架 | 2.6.8 | [文档](https://github.com/YunaiV/SpringBoot-Labs) | | ||
| 161 | -| [MySQL](https://www.mysql.com/cn/) | 数据库服务器 | 5.7 | | | ||
| 162 | -| [Druid](https://github.com/alibaba/druid) | JDBC 连接池、监控组件 | 1.2.8 | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) | | ||
| 163 | -| [MyBatis Plus](https://mp.baomidou.com/) | MyBatis 增强工具包 | 3.5.2 | [文档](http://www.iocoder.cn/Spring-Boot/MyBatis/?yudao) | | ||
| 164 | -| [Dynamic Datasource](https://dynamic-datasource.com/) | 动态数据源 | 3.5.0 | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) | | ||
| 165 | -| [Redis](https://redis.io/) | key-value 数据库 | 5.0 | | | ||
| 166 | -| [Redisson](https://github.com/redisson/redisson) | Redis 客户端 | 3.17.3 | [文档](http://www.iocoder.cn/Spring-Boot/Redis/?yudao) | | ||
| 167 | -| [Spring MVC](https://github.com/spring-projects/spring-framework/tree/master/spring-webmvc) | MVC 框架 | 5.3.20 | [文档](http://www.iocoder.cn/SpringMVC/MVC/?yudao) | | ||
| 168 | -| [Spring Security](https://github.com/spring-projects/spring-security) | Spring 安全框架 | 5.6.5 | [文档](http://www.iocoder.cn/Spring-Boot/Spring-Security/?yudao) | | ||
| 169 | -| [Hibernate Validator](https://github.com/hibernate/hibernate-validator) | 参数校验组件 | 6.2.3 | [文档](http://www.iocoder.cn/Spring-Boot/Validation/?yudao) | | ||
| 170 | -| [Flowable](https://github.com/flowable/flowable-engine) | 工作流引擎 | 6.7.0 | [文档](https://doc.iocoder.cn/bpm/) | | ||
| 171 | -| [Quartz](https://github.com/quartz-scheduler) | 任务调度组件 | 2.3.2 | [文档](http://www.iocoder.cn/Spring-Boot/Job/?yudao) | | ||
| 172 | -| [Knife4j](https://gitee.com/xiaoym/knife4j) | Swagger 增强 UI 实现 | 3.0.3 | [文档](http://www.iocoder.cn/Spring-Boot/Swagger/?yudao) | | ||
| 173 | -| [Resilience4j](https://github.com/resilience4j/resilience4j) | 服务保障组件 | 1.7.1 | [文档](http://www.iocoder.cn/Spring-Boot/Resilience4j/?yudao) | | 159 | +| 框架 | 说明 | 版本 | 学习指南 | |
| 160 | +|---------------------------------------------------------------------------------------------|-----------------------|-----------|----------------------------------------------------------------| | ||
| 161 | +| [Spring Boot](https://spring.io/projects/spring-boot) | 应用开发框架 | 2.6.9 | [文档](https://github.com/YunaiV/SpringBoot-Labs) | | ||
| 162 | +| [MySQL](https://www.mysql.com/cn/) | 数据库服务器 | 5.7 | | | ||
| 163 | +| [Druid](https://github.com/alibaba/druid) | JDBC 连接池、监控组件 | 1.2.11 | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) | | ||
| 164 | +| [MyBatis Plus](https://mp.baomidou.com/) | MyBatis 增强工具包 | 3.5.2 | [文档](http://www.iocoder.cn/Spring-Boot/MyBatis/?yudao) | | ||
| 165 | +| [Dynamic Datasource](https://dynamic-datasource.com/) | 动态数据源 | 3.5.0 | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) | | ||
| 166 | +| [Redis](https://redis.io/) | key-value 数据库 | 5.0 | | | ||
| 167 | +| [Redisson](https://github.com/redisson/redisson) | Redis 客户端 | 3.17.4 | [文档](http://www.iocoder.cn/Spring-Boot/Redis/?yudao) | | ||
| 168 | +| [Spring MVC](https://github.com/spring-projects/spring-framework/tree/master/spring-webmvc) | MVC 框架 | 5.3.20 | [文档](http://www.iocoder.cn/SpringMVC/MVC/?yudao) | | ||
| 169 | +| [Spring Security](https://github.com/spring-projects/spring-security) | Spring 安全框架 | 5.6.5 | [文档](http://www.iocoder.cn/Spring-Boot/Spring-Security/?yudao) | | ||
| 170 | +| [Hibernate Validator](https://github.com/hibernate/hibernate-validator) | 参数校验组件 | 6.2.3 | [文档](http://www.iocoder.cn/Spring-Boot/Validation/?yudao) | | ||
| 171 | +| [Flowable](https://github.com/flowable/flowable-engine) | 工作流引擎 | 6.7.0 | [文档](https://doc.iocoder.cn/bpm/) | | ||
| 172 | +| [Quartz](https://github.com/quartz-scheduler) | 任务调度组件 | 2.3.2 | [文档](http://www.iocoder.cn/Spring-Boot/Job/?yudao) | | ||
| 173 | +| [Knife4j](https://gitee.com/xiaoym/knife4j) | Swagger 增强 UI 实现 | 3.0.3 | [文档](http://www.iocoder.cn/Spring-Boot/Swagger/?yudao) | | ||
| 174 | +| [Resilience4j](https://github.com/resilience4j/resilience4j) | 服务保障组件 | 1.7.1 | [文档](http://www.iocoder.cn/Spring-Boot/Resilience4j/?yudao) | | ||
| 174 | | [SkyWalking](https://skywalking.apache.org/) | 分布式应用追踪系统 | 8.5.0 | [文档](http://www.iocoder.cn/Spring-Boot/SkyWalking/?yudao) | | 175 | | [SkyWalking](https://skywalking.apache.org/) | 分布式应用追踪系统 | 8.5.0 | [文档](http://www.iocoder.cn/Spring-Boot/SkyWalking/?yudao) | |
| 175 | -| [Spring Boot Admin](https://github.com/codecentric/spring-boot-admin) | Spring Boot 监控平台 | 2.6.7 | [文档](http://www.iocoder.cn/Spring-Boot/Admin/?yudao) | | ||
| 176 | -| [Jackson](https://github.com/FasterXML/jackson) | JSON 工具库 | 2.13.3 | | | ||
| 177 | -| [MapStruct](https://mapstruct.org/) | Java Bean 转换 | 1.4.1 | [文档](http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao) | | ||
| 178 | -| [Lombok](https://projectlombok.org/) | 消除冗长的 Java 代码 | 1.16.14 | [文档](http://www.iocoder.cn/Spring-Boot/Lombok/?yudao) | | ||
| 179 | -| [JUnit](https://junit.org/junit5/) | Java 单元测试框架 | 5.8.2 | - | | ||
| 180 | -| [Mockito](https://github.com/mockito/mockito) | Java Mock 框架 | 4.0.0 | - | | 176 | +| [Spring Boot Admin](https://github.com/codecentric/spring-boot-admin) | Spring Boot 监控平台 | 2.6.7 | [文档](http://www.iocoder.cn/Spring-Boot/Admin/?yudao) | |
| 177 | +| [Jackson](https://github.com/FasterXML/jackson) | JSON 工具库 | 2.13.3 | | | ||
| 178 | +| [MapStruct](https://mapstruct.org/) | Java Bean 转换 | 1.4.1 | [文档](http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao) | | ||
| 179 | +| [Lombok](https://projectlombok.org/) | 消除冗长的 Java 代码 | 1.16.14 | [文档](http://www.iocoder.cn/Spring-Boot/Lombok/?yudao) | | ||
| 180 | +| [JUnit](https://junit.org/junit5/) | Java 单元测试框架 | 5.8.2 | - | | ||
| 181 | +| [Mockito](https://github.com/mockito/mockito) | Java Mock 框架 | 4.0.0 | - | | ||
| 181 | 182 | ||
| 182 | -### 前端 | 183 | +### Vue2 前端 |
| 183 | 184 | ||
| 184 | | 框架 | 说明 | 版本 | | 185 | | 框架 | 说明 | 版本 | |
| 185 | |------------------------------------------------------------------------------|---------------|--------| | 186 | |------------------------------------------------------------------------------|---------------|--------| |
| 186 | | [Vue](https://cn.vuejs.org/index.html) | JavaScript 框架 | 2.6.12 | | 187 | | [Vue](https://cn.vuejs.org/index.html) | JavaScript 框架 | 2.6.12 | |
| 187 | | [Vue Element Admin](https://panjiachen.github.io/vue-element-admin-site/zh/) | 后台前端解决方案 | - | | 188 | | [Vue Element Admin](https://panjiachen.github.io/vue-element-admin-site/zh/) | 后台前端解决方案 | - | |
| 188 | 189 | ||
| 190 | +### Vue3 前端 | ||
| 191 | + | ||
| 192 | +| 框架 | 说明 | 版本 | | ||
| 193 | +|----------------------------------------------------------------------|------------------|--------| | ||
| 194 | +| [Vue](https://staging-cn.vuejs.org/) | Vue 框架 | 3.2.37 | | ||
| 195 | +| [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 3.0.3 | | ||
| 196 | +| [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.2.9 | | ||
| 197 | +| [TypeScript](https://www.typescriptlang.org/docs/) | TypeScript | 4.7.4 | | ||
| 198 | +| [pinia](https://pinia.vuejs.org/) | Vue 存储库 替代 vuex5 | 2.0.17 | | ||
| 199 | +| [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化 | 9.1.10 | | ||
| 200 | +| [windicss](https://cn.windicss.org/) | 下一代工具优先的 CSS 框架 | 3.5.6 | | ||
| 201 | +| [iconify](https://icon-sets.iconify.design/) | 在线图标库 | 2.2.1 | | ||
| 202 | + | ||
| 189 | ## 🐷 演示图 | 203 | ## 🐷 演示图 |
| 190 | 204 | ||
| 191 | ### 系统功能 | 205 | ### 系统功能 |
sql/mysql/ruoyi-vue-pro.sql
| @@ -431,7 +431,6 @@ CREATE TABLE `bpm_task_ext` ( | @@ -431,7 +431,6 @@ CREATE TABLE `bpm_task_ext` ( | ||
| 431 | `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号', | 431 | `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号', |
| 432 | `assignee_user_id` bigint NULL DEFAULT NULL COMMENT '任务的审批人', | 432 | `assignee_user_id` bigint NULL DEFAULT NULL COMMENT '任务的审批人', |
| 433 | `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '任务的名字', | 433 | `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '任务的名字', |
| 434 | - `task_def_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '流程任务key', | ||
| 435 | `task_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '任务的编号', | 434 | `task_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '任务的编号', |
| 436 | `result` tinyint NOT NULL COMMENT '任务的结果', | 435 | `result` tinyint NOT NULL COMMENT '任务的结果', |
| 437 | `reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '审批建议', | 436 | `reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '审批建议', |
sql/mysql/vue3-menu.sql
0 → 100644
| 1 | +-- ---------------------------- | ||
| 2 | +-- Table structure for system_menu | ||
| 3 | +-- icon 不兼容 | ||
| 4 | +-- ---------------------------- | ||
| 5 | +DROP TABLE IF EXISTS `system_menu`; | ||
| 6 | +CREATE TABLE `system_menu` ( | ||
| 7 | + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '菜单ID', | ||
| 8 | + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '菜单名称', | ||
| 9 | + `permission` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '权限标识', | ||
| 10 | + `type` tinyint NOT NULL COMMENT '菜单类型', | ||
| 11 | + `sort` int NOT NULL DEFAULT 0 COMMENT '显示顺序', | ||
| 12 | + `parent_id` bigint NOT NULL DEFAULT 0 COMMENT '父菜单ID', | ||
| 13 | + `path` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '路由地址', | ||
| 14 | + `icon` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '#' COMMENT '菜单图标', | ||
| 15 | + `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '组件路径', | ||
| 16 | + `status` tinyint NOT NULL DEFAULT 0 COMMENT '菜单状态', | ||
| 17 | + `visible` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否可见', | ||
| 18 | + `keep_alive` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否缓存', | ||
| 19 | + `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者', | ||
| 20 | + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | ||
| 21 | + `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者', | ||
| 22 | + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', | ||
| 23 | + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', | ||
| 24 | + PRIMARY KEY (`id`) USING BTREE | ||
| 25 | +) ENGINE = InnoDB AUTO_INCREMENT = 1268 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '菜单权限表' ROW_FORMAT = Dynamic; | ||
| 26 | + | ||
| 27 | +-- ---------------------------- | ||
| 28 | +-- Records of system_menu | ||
| 29 | +-- ---------------------------- | ||
| 30 | +INSERT INTO `system_menu` VALUES (1, '系统管理', '', 1, 10, 0, '/system', 'ep:tools', NULL, 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 13:10:54', b'0'); | ||
| 31 | +INSERT INTO `system_menu` VALUES (2, '基础设施', '', 1, 20, 0, '/infra', 'ep:brush-filled', NULL, 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 13:11:55', b'0'); | ||
| 32 | +INSERT INTO `system_menu` VALUES (5, 'OA 示例', '', 1, 40, 1185, 'oa', 'ep:guide', NULL, 0, b'1', b'1', 'admin', '2021-09-20 16:26:19', '1', '2022-07-20 14:51:03', b'0'); | ||
| 33 | +INSERT INTO `system_menu` VALUES (100, '用户管理', 'system:user:list', 2, 1, 1, 'user', 'ep:avatar', 'system/user/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 13:13:17', b'0'); | ||
| 34 | +INSERT INTO `system_menu` VALUES (101, '角色管理', '', 2, 2, 1, 'role', 'ep:user-filled', 'system/role/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 13:13:41', b'0'); | ||
| 35 | +INSERT INTO `system_menu` VALUES (102, '菜单管理', '', 2, 3, 1, 'menu', 'ep:grid', 'system/menu/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 13:13:54', b'0'); | ||
| 36 | +INSERT INTO `system_menu` VALUES (103, '部门管理', '', 2, 4, 1, 'dept', 'ep:office-building', 'system/dept/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:51:31', b'0'); | ||
| 37 | +INSERT INTO `system_menu` VALUES (104, '岗位管理', '', 2, 5, 1, 'post', 'ep:briefcase', 'system/post/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:41:47', b'0'); | ||
| 38 | +INSERT INTO `system_menu` VALUES (105, '字典管理', '', 2, 6, 1, 'dict', 'ep:list', 'system/dict/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:42:18', b'0'); | ||
| 39 | +INSERT INTO `system_menu` VALUES (106, '配置管理', '', 2, 6, 2, 'config', 'ep:edit', 'infra/config/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:48:29', b'0'); | ||
| 40 | +INSERT INTO `system_menu` VALUES (107, '通知公告', '', 2, 8, 1, 'notice', 'ep:bell-filled', 'system/notice/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:42:30', b'0'); | ||
| 41 | +INSERT INTO `system_menu` VALUES (108, '审计日志', '', 1, 9, 1, 'log', 'ep:document-checked', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:42:52', b'0'); | ||
| 42 | +INSERT INTO `system_menu` VALUES (109, '令牌管理', '', 2, 2, 1261, 'token', 'online', 'system/oauth2/token/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-05-11 23:31:42', b'0'); | ||
| 43 | +INSERT INTO `system_menu` VALUES (110, '定时任务', '', 2, 12, 2, 'job', 'ep:alarm-clock', 'infra/job/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:49:09', b'0'); | ||
| 44 | +INSERT INTO `system_menu` VALUES (111, 'MySQL 监控', '', 2, 9, 2, 'druid', 'ep:wind-power', 'infra/druid/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:50:06', b'0'); | ||
| 45 | +INSERT INTO `system_menu` VALUES (112, 'Java 监控', '', 2, 11, 2, 'admin-server', 'ep:opportunity', 'infra/server/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:49:42', b'0'); | ||
| 46 | +INSERT INTO `system_menu` VALUES (113, 'Redis 监控', '', 2, 10, 2, 'redis', 'ep:set-up', 'infra/redis/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:49:52', b'0'); | ||
| 47 | +INSERT INTO `system_menu` VALUES (114, '表单构建', 'infra:build:list', 2, 2, 2, 'build', 'ep:calendar', 'infra/build/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:47:29', b'0'); | ||
| 48 | +INSERT INTO `system_menu` VALUES (115, '代码生成', 'infra:codegen:query', 2, 1, 2, 'codegen', 'ep:connection', 'infra/codegen/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:46:41', b'0'); | ||
| 49 | +INSERT INTO `system_menu` VALUES (116, '系统接口', 'infra:swagger:list', 2, 3, 2, 'swagger', 'ep:operation', 'infra/swagger/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-07-20 14:47:41', b'0'); | ||
| 50 | +INSERT INTO `system_menu` VALUES (500, '操作日志', '', 2, 1, 108, 'operate-log', 'form', 'system/operatelog/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 51 | +INSERT INTO `system_menu` VALUES (501, '登录日志', '', 2, 2, 108, 'login-log', 'logininfor', 'system/loginlog/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 52 | +INSERT INTO `system_menu` VALUES (1001, '用户查询', 'system:user:query', 3, 1, 100, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 53 | +INSERT INTO `system_menu` VALUES (1002, '用户新增', 'system:user:create', 3, 2, 100, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 54 | +INSERT INTO `system_menu` VALUES (1003, '用户修改', 'system:user:update', 3, 3, 100, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 55 | +INSERT INTO `system_menu` VALUES (1004, '用户删除', 'system:user:delete', 3, 4, 100, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 56 | +INSERT INTO `system_menu` VALUES (1005, '用户导出', 'system:user:export', 3, 5, 100, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 57 | +INSERT INTO `system_menu` VALUES (1006, '用户导入', 'system:user:import', 3, 6, 100, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 58 | +INSERT INTO `system_menu` VALUES (1007, '重置密码', 'system:user:update-password', 3, 7, 100, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 59 | +INSERT INTO `system_menu` VALUES (1008, '角色查询', 'system:role:query', 3, 1, 101, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 60 | +INSERT INTO `system_menu` VALUES (1009, '角色新增', 'system:role:create', 3, 2, 101, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 61 | +INSERT INTO `system_menu` VALUES (1010, '角色修改', 'system:role:update', 3, 3, 101, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 62 | +INSERT INTO `system_menu` VALUES (1011, '角色删除', 'system:role:delete', 3, 4, 101, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 63 | +INSERT INTO `system_menu` VALUES (1012, '角色导出', 'system:role:export', 3, 5, 101, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 64 | +INSERT INTO `system_menu` VALUES (1013, '菜单查询', 'system:menu:query', 3, 1, 102, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 65 | +INSERT INTO `system_menu` VALUES (1014, '菜单新增', 'system:menu:create', 3, 2, 102, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 66 | +INSERT INTO `system_menu` VALUES (1015, '菜单修改', 'system:menu:update', 3, 3, 102, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 67 | +INSERT INTO `system_menu` VALUES (1016, '菜单删除', 'system:menu:delete', 3, 4, 102, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 68 | +INSERT INTO `system_menu` VALUES (1017, '部门查询', 'system:dept:query', 3, 1, 103, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 69 | +INSERT INTO `system_menu` VALUES (1018, '部门新增', 'system:dept:create', 3, 2, 103, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 70 | +INSERT INTO `system_menu` VALUES (1019, '部门修改', 'system:dept:update', 3, 3, 103, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 71 | +INSERT INTO `system_menu` VALUES (1020, '部门删除', 'system:dept:delete', 3, 4, 103, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 72 | +INSERT INTO `system_menu` VALUES (1021, '岗位查询', 'system:post:query', 3, 1, 104, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 73 | +INSERT INTO `system_menu` VALUES (1022, '岗位新增', 'system:post:create', 3, 2, 104, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 74 | +INSERT INTO `system_menu` VALUES (1023, '岗位修改', 'system:post:update', 3, 3, 104, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 75 | +INSERT INTO `system_menu` VALUES (1024, '岗位删除', 'system:post:delete', 3, 4, 104, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 76 | +INSERT INTO `system_menu` VALUES (1025, '岗位导出', 'system:post:export', 3, 5, 104, '', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 77 | +INSERT INTO `system_menu` VALUES (1026, '字典查询', 'system:dict:query', 3, 1, 105, '#', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 78 | +INSERT INTO `system_menu` VALUES (1027, '字典新增', 'system:dict:create', 3, 2, 105, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 79 | +INSERT INTO `system_menu` VALUES (1028, '字典修改', 'system:dict:update', 3, 3, 105, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 80 | +INSERT INTO `system_menu` VALUES (1029, '字典删除', 'system:dict:delete', 3, 4, 105, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 81 | +INSERT INTO `system_menu` VALUES (1030, '字典导出', 'system:dict:export', 3, 5, 105, '#', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 82 | +INSERT INTO `system_menu` VALUES (1031, '配置查询', 'infra:config:query', 3, 1, 106, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 83 | +INSERT INTO `system_menu` VALUES (1032, '配置新增', 'infra:config:create', 3, 2, 106, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 84 | +INSERT INTO `system_menu` VALUES (1033, '配置修改', 'infra:config:update', 3, 3, 106, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 85 | +INSERT INTO `system_menu` VALUES (1034, '配置删除', 'infra:config:delete', 3, 4, 106, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 86 | +INSERT INTO `system_menu` VALUES (1035, '配置导出', 'infra:config:export', 3, 5, 106, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 87 | +INSERT INTO `system_menu` VALUES (1036, '公告查询', 'system:notice:query', 3, 1, 107, '#', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 88 | +INSERT INTO `system_menu` VALUES (1037, '公告新增', 'system:notice:create', 3, 2, 107, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 89 | +INSERT INTO `system_menu` VALUES (1038, '公告修改', 'system:notice:update', 3, 3, 107, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 90 | +INSERT INTO `system_menu` VALUES (1039, '公告删除', 'system:notice:delete', 3, 4, 107, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 91 | +INSERT INTO `system_menu` VALUES (1040, '操作查询', 'system:operate-log:query', 3, 1, 500, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 92 | +INSERT INTO `system_menu` VALUES (1042, '日志导出', 'system:operate-log:export', 3, 2, 500, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 93 | +INSERT INTO `system_menu` VALUES (1043, '登录查询', 'system:login-log:query', 3, 1, 501, '#', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 94 | +INSERT INTO `system_menu` VALUES (1045, '日志导出', 'system:login-log:export', 3, 3, 501, '#', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 95 | +INSERT INTO `system_menu` VALUES (1046, '令牌列表', 'system:oauth2-token:page', 3, 1, 109, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-05-09 23:54:42', b'0'); | ||
| 96 | +INSERT INTO `system_menu` VALUES (1048, '令牌删除', 'system:oauth2-token:delete', 3, 2, 109, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-05-09 23:54:53', b'0'); | ||
| 97 | +INSERT INTO `system_menu` VALUES (1050, '任务新增', 'infra:job:create', 3, 2, 110, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 98 | +INSERT INTO `system_menu` VALUES (1051, '任务修改', 'infra:job:update', 3, 3, 110, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 99 | +INSERT INTO `system_menu` VALUES (1052, '任务删除', 'infra:job:delete', 3, 4, 110, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 100 | +INSERT INTO `system_menu` VALUES (1053, '状态修改', 'infra:job:update', 3, 5, 110, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 101 | +INSERT INTO `system_menu` VALUES (1054, '任务导出', 'infra:job:export', 3, 7, 110, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); | ||
| 102 | +INSERT INTO `system_menu` VALUES (1056, '生成修改', 'infra:codegen:update', 3, 2, 115, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 103 | +INSERT INTO `system_menu` VALUES (1057, '生成删除', 'infra:codegen:delete', 3, 3, 115, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 104 | +INSERT INTO `system_menu` VALUES (1058, '导入代码', 'infra:codegen:create', 3, 2, 115, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 105 | +INSERT INTO `system_menu` VALUES (1059, '预览代码', 'infra:codegen:preview', 3, 4, 115, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 106 | +INSERT INTO `system_menu` VALUES (1060, '生成代码', 'infra:codegen:download', 3, 5, 115, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); | ||
| 107 | +INSERT INTO `system_menu` VALUES (1063, '设置角色菜单权限', 'system:permission:assign-role-menu', 3, 6, 101, '', '', '', 0, b'1', b'1', '', '2021-01-06 17:53:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 108 | +INSERT INTO `system_menu` VALUES (1064, '设置角色数据权限', 'system:permission:assign-role-data-scope', 3, 7, 101, '', '', '', 0, b'1', b'1', '', '2021-01-06 17:56:31', '', '2022-04-20 17:03:10', b'0'); | ||
| 109 | +INSERT INTO `system_menu` VALUES (1065, '设置用户角色', 'system:permission:assign-user-role', 3, 8, 101, '', '', '', 0, b'1', b'1', '', '2021-01-07 10:23:28', '', '2022-04-20 17:03:10', b'0'); | ||
| 110 | +INSERT INTO `system_menu` VALUES (1066, '获得 Redis 监控信息', 'infra:redis:get-monitor-info', 3, 1, 113, '', '', '', 0, b'1', b'1', '', '2021-01-26 01:02:31', '', '2022-04-20 17:03:10', b'0'); | ||
| 111 | +INSERT INTO `system_menu` VALUES (1067, '获得 Redis Key 列表', 'infra:redis:get-key-list', 3, 2, 113, '', '', '', 0, b'1', b'1', '', '2021-01-26 01:02:52', '', '2022-04-20 17:03:10', b'0'); | ||
| 112 | +INSERT INTO `system_menu` VALUES (1070, '代码生成示例', 'infra:test-demo:query', 2, 1, 2, 'test-demo', 'ep:baseball', 'infra/testDemo/index', 0, b'1', b'1', '', '2021-02-06 12:42:49', '1', '2022-07-20 14:46:53', b'0'); | ||
| 113 | +INSERT INTO `system_menu` VALUES (1071, '测试示例表创建', 'infra:test-demo:create', 3, 1, 1070, '', '', '', 0, b'1', b'1', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', b'0'); | ||
| 114 | +INSERT INTO `system_menu` VALUES (1072, '测试示例表更新', 'infra:test-demo:update', 3, 2, 1070, '', '', '', 0, b'1', b'1', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', b'0'); | ||
| 115 | +INSERT INTO `system_menu` VALUES (1073, '测试示例表删除', 'infra:test-demo:delete', 3, 3, 1070, '', '', '', 0, b'1', b'1', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', b'0'); | ||
| 116 | +INSERT INTO `system_menu` VALUES (1074, '测试示例表导出', 'infra:test-demo:export', 3, 4, 1070, '', '', '', 0, b'1', b'1', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', b'0'); | ||
| 117 | +INSERT INTO `system_menu` VALUES (1075, '任务触发', 'infra:job:trigger', 3, 8, 110, '', '', '', 0, b'1', b'1', '', '2021-02-07 13:03:10', '', '2022-04-20 17:03:10', b'0'); | ||
| 118 | +INSERT INTO `system_menu` VALUES (1076, '数据库文档', '', 2, 4, 2, 'db-doc', 'ep:grid', 'infra/dbDoc/index', 0, b'1', b'1', '', '2021-02-08 01:41:47', '1', '2022-07-20 14:47:56', b'0'); | ||
| 119 | +INSERT INTO `system_menu` VALUES (1077, '监控平台', '', 2, 13, 2, 'skywalking', 'ep:aim', 'infra/skywalking/index', 0, b'1', b'1', '', '2021-02-08 20:41:31', '1', '2022-07-20 14:49:15', b'0'); | ||
| 120 | +INSERT INTO `system_menu` VALUES (1078, '访问日志', '', 2, 1, 1083, 'api-access-log', 'log', 'infra/apiAccessLog/index', 0, b'1', b'1', '', '2021-02-26 01:32:59', '1', '2022-04-20 17:03:10', b'0'); | ||
| 121 | +INSERT INTO `system_menu` VALUES (1082, '日志导出', 'infra:api-access-log:export', 3, 2, 1078, '', '', '', 0, b'1', b'1', '', '2021-02-26 01:32:59', '1', '2022-04-20 17:03:10', b'0'); | ||
| 122 | +INSERT INTO `system_menu` VALUES (1083, 'API 日志', '', 2, 8, 2, 'log', 'ep:bell', NULL, 0, b'1', b'1', '', '2021-02-26 02:18:24', '1', '2022-07-20 14:48:36', b'0'); | ||
| 123 | +INSERT INTO `system_menu` VALUES (1084, '错误日志', 'infra:api-error-log:query', 2, 2, 1083, 'api-error-log', 'log', 'infra/apiErrorLog/index', 0, b'1', b'1', '', '2021-02-26 07:53:20', '', '2022-04-20 17:03:10', b'0'); | ||
| 124 | +INSERT INTO `system_menu` VALUES (1085, '日志处理', 'infra:api-error-log:update-status', 3, 2, 1084, '', '', '', 0, b'1', b'1', '', '2021-02-26 07:53:20', '1', '2022-04-20 17:03:10', b'0'); | ||
| 125 | +INSERT INTO `system_menu` VALUES (1086, '日志导出', 'infra:api-error-log:export', 3, 3, 1084, '', '', '', 0, b'1', b'1', '', '2021-02-26 07:53:20', '1', '2022-04-20 17:03:10', b'0'); | ||
| 126 | +INSERT INTO `system_menu` VALUES (1087, '任务查询', 'infra:job:query', 3, 1, 110, '', '', '', 0, b'1', b'1', '1', '2021-03-10 01:26:19', '1', '2022-04-20 17:03:10', b'0'); | ||
| 127 | +INSERT INTO `system_menu` VALUES (1088, '日志查询', 'infra:api-access-log:query', 3, 1, 1078, '', '', '', 0, b'1', b'1', '1', '2021-03-10 01:28:04', '1', '2022-04-20 17:03:10', b'0'); | ||
| 128 | +INSERT INTO `system_menu` VALUES (1089, '日志查询', 'infra:api-error-log:query', 3, 1, 1084, '', '', '', 0, b'1', b'1', '1', '2021-03-10 01:29:09', '1', '2022-04-20 17:03:10', b'0'); | ||
| 129 | +INSERT INTO `system_menu` VALUES (1090, '文件列表', '', 2, 5, 1243, 'file-list', 'upload', 'infra/fileList/index', 0, b'1', b'1', '', '2021-03-12 20:16:20', '1', '2022-07-20 12:10:47', b'0'); | ||
| 130 | +INSERT INTO `system_menu` VALUES (1091, '文件查询', 'infra:file:query', 3, 1, 1090, '', '', '', 0, b'1', b'1', '', '2021-03-12 20:16:20', '', '2022-04-20 17:03:10', b'0'); | ||
| 131 | +INSERT INTO `system_menu` VALUES (1092, '文件删除', 'infra:file:delete', 3, 4, 1090, '', '', '', 0, b'1', b'1', '', '2021-03-12 20:16:20', '', '2022-04-20 17:03:10', b'0'); | ||
| 132 | +INSERT INTO `system_menu` VALUES (1093, '短信管理', '', 1, 11, 1, 'sms', 'ep:chat-dot-square', NULL, 0, b'1', b'1', '1', '2021-04-05 01:10:16', '1', '2022-07-20 14:43:32', b'0'); | ||
| 133 | +INSERT INTO `system_menu` VALUES (1094, '短信渠道', '', 2, 0, 1093, 'sms-channel', 'phone', 'system/sms/smsChannel', 0, b'1', b'1', '', '2021-04-01 11:07:15', '1', '2022-04-20 17:03:10', b'0'); | ||
| 134 | +INSERT INTO `system_menu` VALUES (1095, '短信渠道查询', 'system:sms-channel:query', 3, 1, 1094, '', '', '', 0, b'1', b'1', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', b'0'); | ||
| 135 | +INSERT INTO `system_menu` VALUES (1096, '短信渠道创建', 'system:sms-channel:create', 3, 2, 1094, '', '', '', 0, b'1', b'1', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', b'0'); | ||
| 136 | +INSERT INTO `system_menu` VALUES (1097, '短信渠道更新', 'system:sms-channel:update', 3, 3, 1094, '', '', '', 0, b'1', b'1', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', b'0'); | ||
| 137 | +INSERT INTO `system_menu` VALUES (1098, '短信渠道删除', 'system:sms-channel:delete', 3, 4, 1094, '', '', '', 0, b'1', b'1', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', b'0'); | ||
| 138 | +INSERT INTO `system_menu` VALUES (1100, '短信模板', '', 2, 1, 1093, 'sms-template', 'phone', 'system/sms/smsTemplate', 0, b'1', b'1', '', '2021-04-01 17:35:17', '1', '2022-04-20 17:03:10', b'0'); | ||
| 139 | +INSERT INTO `system_menu` VALUES (1101, '短信模板查询', 'system:sms-template:query', 3, 1, 1100, '', '', '', 0, b'1', b'1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', b'0'); | ||
| 140 | +INSERT INTO `system_menu` VALUES (1102, '短信模板创建', 'system:sms-template:create', 3, 2, 1100, '', '', '', 0, b'1', b'1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', b'0'); | ||
| 141 | +INSERT INTO `system_menu` VALUES (1103, '短信模板更新', 'system:sms-template:update', 3, 3, 1100, '', '', '', 0, b'1', b'1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', b'0'); | ||
| 142 | +INSERT INTO `system_menu` VALUES (1104, '短信模板删除', 'system:sms-template:delete', 3, 4, 1100, '', '', '', 0, b'1', b'1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', b'0'); | ||
| 143 | +INSERT INTO `system_menu` VALUES (1105, '短信模板导出', 'system:sms-template:export', 3, 5, 1100, '', '', '', 0, b'1', b'1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', b'0'); | ||
| 144 | +INSERT INTO `system_menu` VALUES (1106, '发送测试短信', 'system:sms-template:send-sms', 3, 6, 1100, '', '', '', 0, b'1', b'1', '1', '2021-04-11 00:26:40', '1', '2022-04-20 17:03:10', b'0'); | ||
| 145 | +INSERT INTO `system_menu` VALUES (1107, '短信日志', '', 2, 2, 1093, 'sms-log', 'phone', 'system/sms/smsLog', 0, b'1', b'1', '', '2021-04-11 08:37:05', '1', '2022-04-20 17:03:10', b'0'); | ||
| 146 | +INSERT INTO `system_menu` VALUES (1108, '短信日志查询', 'system:sms-log:query', 3, 1, 1107, '', '', '', 0, b'1', b'1', '', '2021-04-11 08:37:05', '', '2022-04-20 17:03:10', b'0'); | ||
| 147 | +INSERT INTO `system_menu` VALUES (1109, '短信日志导出', 'system:sms-log:export', 3, 5, 1107, '', '', '', 0, b'1', b'1', '', '2021-04-11 08:37:05', '', '2022-04-20 17:03:10', b'0'); | ||
| 148 | +INSERT INTO `system_menu` VALUES (1110, '错误码管理', '', 2, 12, 1, 'error-code', 'ep:document-delete', 'system/errorCode/index', 0, b'1', b'1', '', '2021-04-13 21:46:42', '1', '2022-07-20 14:43:42', b'0'); | ||
| 149 | +INSERT INTO `system_menu` VALUES (1111, '错误码查询', 'system:error-code:query', 3, 1, 1110, '', '', '', 0, b'1', b'1', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', b'0'); | ||
| 150 | +INSERT INTO `system_menu` VALUES (1112, '错误码创建', 'system:error-code:create', 3, 2, 1110, '', '', '', 0, b'1', b'1', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', b'0'); | ||
| 151 | +INSERT INTO `system_menu` VALUES (1113, '错误码更新', 'system:error-code:update', 3, 3, 1110, '', '', '', 0, b'1', b'1', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', b'0'); | ||
| 152 | +INSERT INTO `system_menu` VALUES (1114, '错误码删除', 'system:error-code:delete', 3, 4, 1110, '', '', '', 0, b'1', b'1', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', b'0'); | ||
| 153 | +INSERT INTO `system_menu` VALUES (1115, '错误码导出', 'system:error-code:export', 3, 5, 1110, '', '', '', 0, b'1', b'1', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', b'0'); | ||
| 154 | +INSERT INTO `system_menu` VALUES (1117, '支付管理', '', 1, 11, 0, '/pay', 'ep:goods-filled', NULL, 0, b'1', b'1', '1', '2021-12-25 16:43:41', '1', '2022-07-20 13:11:45', b'0'); | ||
| 155 | +INSERT INTO `system_menu` VALUES (1118, '请假查询', '', 2, 0, 5, 'leave', 'user', 'bpm/oa/leave/index', 0, b'1', b'1', '', '2021-09-20 08:51:03', '1', '2022-04-20 17:03:10', b'0'); | ||
| 156 | +INSERT INTO `system_menu` VALUES (1119, '请假申请查询', 'bpm:oa-leave:query', 3, 1, 1118, '', '', '', 0, b'1', b'1', '', '2021-09-20 08:51:03', '1', '2022-04-20 17:03:10', b'0'); | ||
| 157 | +INSERT INTO `system_menu` VALUES (1120, '请假申请创建', 'bpm:oa-leave:create', 3, 2, 1118, '', '', '', 0, b'1', b'1', '', '2021-09-20 08:51:03', '1', '2022-04-20 17:03:10', b'0'); | ||
| 158 | +INSERT INTO `system_menu` VALUES (1126, '应用信息', '', 2, 1, 1117, 'app', 'ep:cellphone', 'pay/app/index', 0, b'1', b'1', '', '2021-11-10 01:13:30', '1', '2022-07-20 14:44:17', b'0'); | ||
| 159 | +INSERT INTO `system_menu` VALUES (1127, '支付应用信息查询', 'pay:app:query', 3, 1, 1126, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', b'0'); | ||
| 160 | +INSERT INTO `system_menu` VALUES (1128, '支付应用信息创建', 'pay:app:create', 3, 2, 1126, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', b'0'); | ||
| 161 | +INSERT INTO `system_menu` VALUES (1129, '支付应用信息更新', 'pay:app:update', 3, 3, 1126, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', b'0'); | ||
| 162 | +INSERT INTO `system_menu` VALUES (1130, '支付应用信息删除', 'pay:app:delete', 3, 4, 1126, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', b'0'); | ||
| 163 | +INSERT INTO `system_menu` VALUES (1131, '支付应用信息导出', 'pay:app:export', 3, 5, 1126, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', b'0'); | ||
| 164 | +INSERT INTO `system_menu` VALUES (1132, '秘钥解析', 'pay:channel:parsing', 3, 6, 1129, '', '', '', 0, b'1', b'1', '1', '2021-11-08 15:15:47', '1', '2022-04-20 17:03:10', b'0'); | ||
| 165 | +INSERT INTO `system_menu` VALUES (1133, '支付商户信息查询', 'pay:merchant:query', 3, 1, 1132, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', b'0'); | ||
| 166 | +INSERT INTO `system_menu` VALUES (1134, '支付商户信息创建', 'pay:merchant:create', 3, 2, 1132, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', b'0'); | ||
| 167 | +INSERT INTO `system_menu` VALUES (1135, '支付商户信息更新', 'pay:merchant:update', 3, 3, 1132, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', b'0'); | ||
| 168 | +INSERT INTO `system_menu` VALUES (1136, '支付商户信息删除', 'pay:merchant:delete', 3, 4, 1132, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', b'0'); | ||
| 169 | +INSERT INTO `system_menu` VALUES (1137, '支付商户信息导出', 'pay:merchant:export', 3, 5, 1132, '', '', '', 0, b'1', b'1', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', b'0'); | ||
| 170 | +INSERT INTO `system_menu` VALUES (1138, '租户列表', '', 2, 0, 1224, 'list', 'peoples', 'system/tenant/index', 0, b'1', b'1', '', '2021-12-14 12:31:43', '1', '2022-04-20 17:03:10', b'0'); | ||
| 171 | +INSERT INTO `system_menu` VALUES (1139, '租户查询', 'system:tenant:query', 3, 1, 1138, '', '', '', 0, b'1', b'1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 172 | +INSERT INTO `system_menu` VALUES (1140, '租户创建', 'system:tenant:create', 3, 2, 1138, '', '', '', 0, b'1', b'1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 173 | +INSERT INTO `system_menu` VALUES (1141, '租户更新', 'system:tenant:update', 3, 3, 1138, '', '', '', 0, b'1', b'1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 174 | +INSERT INTO `system_menu` VALUES (1142, '租户删除', 'system:tenant:delete', 3, 4, 1138, '', '', '', 0, b'1', b'1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 175 | +INSERT INTO `system_menu` VALUES (1143, '租户导出', 'system:tenant:export', 3, 5, 1138, '', '', '', 0, b'1', b'1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 176 | +INSERT INTO `system_menu` VALUES (1150, '秘钥解析', '', 3, 6, 1129, '', '', '', 0, b'1', b'1', '1', '2021-11-08 15:15:47', '1', '2022-04-20 17:03:10', b'0'); | ||
| 177 | +INSERT INTO `system_menu` VALUES (1161, '退款订单', '', 2, 3, 1117, 'refund', 'ep:message-box', 'pay/refund/index', 0, b'1', b'1', '', '2021-12-25 08:29:07', '1', '2022-07-20 14:45:23', b'0'); | ||
| 178 | +INSERT INTO `system_menu` VALUES (1162, '退款订单查询', 'pay:refund:query', 3, 1, 1161, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', b'0'); | ||
| 179 | +INSERT INTO `system_menu` VALUES (1163, '退款订单创建', 'pay:refund:create', 3, 2, 1161, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', b'0'); | ||
| 180 | +INSERT INTO `system_menu` VALUES (1164, '退款订单更新', 'pay:refund:update', 3, 3, 1161, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', b'0'); | ||
| 181 | +INSERT INTO `system_menu` VALUES (1165, '退款订单删除', 'pay:refund:delete', 3, 4, 1161, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', b'0'); | ||
| 182 | +INSERT INTO `system_menu` VALUES (1166, '退款订单导出', 'pay:refund:export', 3, 5, 1161, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', b'0'); | ||
| 183 | +INSERT INTO `system_menu` VALUES (1173, '支付订单', '', 2, 2, 1117, 'order', 'ep:histogram', 'pay/order/index', 0, b'1', b'1', '', '2021-12-25 08:49:43', '1', '2022-07-20 14:44:36', b'0'); | ||
| 184 | +INSERT INTO `system_menu` VALUES (1174, '支付订单查询', 'pay:order:query', 3, 1, 1173, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', b'0'); | ||
| 185 | +INSERT INTO `system_menu` VALUES (1175, '支付订单创建', 'pay:order:create', 3, 2, 1173, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', b'0'); | ||
| 186 | +INSERT INTO `system_menu` VALUES (1176, '支付订单更新', 'pay:order:update', 3, 3, 1173, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', b'0'); | ||
| 187 | +INSERT INTO `system_menu` VALUES (1177, '支付订单删除', 'pay:order:delete', 3, 4, 1173, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', b'0'); | ||
| 188 | +INSERT INTO `system_menu` VALUES (1178, '支付订单导出', 'pay:order:export', 3, 5, 1173, '', '', '', 0, b'1', b'1', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', b'0'); | ||
| 189 | +INSERT INTO `system_menu` VALUES (1179, '商户信息', '', 2, 0, 1117, 'merchant', 'ep:goods', 'pay/merchant/index', 0, b'1', b'1', '', '2021-12-25 09:01:44', '1', '2022-07-20 14:44:58', b'0'); | ||
| 190 | +INSERT INTO `system_menu` VALUES (1180, '支付商户信息查询', 'pay:merchant:query', 3, 1, 1179, '', '', '', 0, b'1', b'1', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 191 | +INSERT INTO `system_menu` VALUES (1181, '支付商户信息创建', 'pay:merchant:create', 3, 2, 1179, '', '', '', 0, b'1', b'1', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 192 | +INSERT INTO `system_menu` VALUES (1182, '支付商户信息更新', 'pay:merchant:update', 3, 3, 1179, '', '', '', 0, b'1', b'1', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 193 | +INSERT INTO `system_menu` VALUES (1183, '支付商户信息删除', '', 3, 4, 1179, '', '', '', 0, b'1', b'1', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 194 | +INSERT INTO `system_menu` VALUES (1184, '支付商户信息导出', 'pay:merchant:export', 3, 5, 1179, '', '', '', 0, b'1', b'1', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', b'0'); | ||
| 195 | +INSERT INTO `system_menu` VALUES (1185, '工作流程', '', 1, 50, 0, '/bpm', 'ep:checked', NULL, 0, b'1', b'1', '1', '2021-12-30 20:26:36', '1', '2022-07-20 13:12:35', b'0'); | ||
| 196 | +INSERT INTO `system_menu` VALUES (1186, '流程管理', '', 1, 10, 1185, 'manager', 'ep:collection-tag', NULL, 0, b'1', b'1', '1', '2021-12-30 20:28:30', '1', '2022-07-20 14:50:31', b'0'); | ||
| 197 | +INSERT INTO `system_menu` VALUES (1187, '流程表单', '', 2, 0, 1186, 'form', 'form', 'bpm/form/index', 0, b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0'); | ||
| 198 | +INSERT INTO `system_menu` VALUES (1188, '表单查询', 'bpm:form:query', 3, 1, 1187, '', '', '', 0, b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0'); | ||
| 199 | +INSERT INTO `system_menu` VALUES (1189, '表单创建', 'bpm:form:create', 3, 2, 1187, '', '', '', 0, b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0'); | ||
| 200 | +INSERT INTO `system_menu` VALUES (1190, '表单更新', 'bpm:form:update', 3, 3, 1187, '', '', '', 0, b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0'); | ||
| 201 | +INSERT INTO `system_menu` VALUES (1191, '表单删除', 'bpm:form:delete', 3, 4, 1187, '', '', '', 0, b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0'); | ||
| 202 | +INSERT INTO `system_menu` VALUES (1192, '表单导出', 'bpm:form:export', 3, 5, 1187, '', '', '', 0, b'1', b'1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', b'0'); | ||
| 203 | +INSERT INTO `system_menu` VALUES (1193, '流程模型', '', 2, 5, 1186, 'model', 'guide', 'bpm/model/index', 0, b'1', b'1', '1', '2021-12-31 23:24:58', '103', '2022-04-20 17:03:10', b'0'); | ||
| 204 | +INSERT INTO `system_menu` VALUES (1194, '模型查询', 'bpm:model:query', 3, 1, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-03 19:01:10', '1', '2022-04-20 17:03:10', b'0'); | ||
| 205 | +INSERT INTO `system_menu` VALUES (1195, '模型创建', 'bpm:model:create', 3, 2, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-03 19:01:24', '1', '2022-04-20 17:03:10', b'0'); | ||
| 206 | +INSERT INTO `system_menu` VALUES (1196, '模型导入', 'bpm:model:import', 3, 3, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-03 19:01:35', '1', '2022-04-20 17:03:10', b'0'); | ||
| 207 | +INSERT INTO `system_menu` VALUES (1197, '模型更新', 'bpm:model:update', 3, 4, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-03 19:02:28', '1', '2022-04-20 17:03:10', b'0'); | ||
| 208 | +INSERT INTO `system_menu` VALUES (1198, '模型删除', 'bpm:model:delete', 3, 5, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-03 19:02:43', '1', '2022-04-20 17:03:10', b'0'); | ||
| 209 | +INSERT INTO `system_menu` VALUES (1199, '模型发布', 'bpm:model:deploy', 3, 6, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-03 19:03:24', '1', '2022-04-20 17:03:10', b'0'); | ||
| 210 | +INSERT INTO `system_menu` VALUES (1200, '任务管理', '', 1, 20, 1185, 'task', 'ep:calendar', NULL, 0, b'1', b'1', '1', '2022-01-07 23:51:48', '1', '2022-07-20 14:50:40', b'0'); | ||
| 211 | +INSERT INTO `system_menu` VALUES (1201, '我的流程', '', 2, 0, 1200, 'my', 'people', 'bpm/processInstance/index', 0, b'1', b'1', '', '2022-01-07 15:53:44', '1', '2022-04-20 17:03:10', b'0'); | ||
| 212 | +INSERT INTO `system_menu` VALUES (1202, '流程实例的查询', 'bpm:process-instance:query', 3, 1, 1201, '', '', '', 0, b'1', b'1', '', '2022-01-07 15:53:44', '1', '2022-04-20 17:03:10', b'0'); | ||
| 213 | +INSERT INTO `system_menu` VALUES (1207, '待办任务', '', 2, 10, 1200, 'todo', 'eye-open', 'bpm/task/todo', 0, b'1', b'1', '1', '2022-01-08 10:33:37', '1', '2022-04-20 17:03:10', b'0'); | ||
| 214 | +INSERT INTO `system_menu` VALUES (1208, '已办任务', '', 2, 20, 1200, 'done', 'eye', 'bpm/task/done', 0, b'1', b'1', '1', '2022-01-08 10:34:13', '1', '2022-04-20 17:03:10', b'0'); | ||
| 215 | +INSERT INTO `system_menu` VALUES (1209, '用户分组', '', 2, 2, 1186, 'user-group', 'people', 'bpm/group/index', 0, b'1', b'1', '', '2022-01-14 02:14:20', '103', '2022-04-20 17:03:10', b'0'); | ||
| 216 | +INSERT INTO `system_menu` VALUES (1210, '用户组查询', 'bpm:user-group:query', 3, 1, 1209, '', '', '', 0, b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0'); | ||
| 217 | +INSERT INTO `system_menu` VALUES (1211, '用户组创建', 'bpm:user-group:create', 3, 2, 1209, '', '', '', 0, b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0'); | ||
| 218 | +INSERT INTO `system_menu` VALUES (1212, '用户组更新', 'bpm:user-group:update', 3, 3, 1209, '', '', '', 0, b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0'); | ||
| 219 | +INSERT INTO `system_menu` VALUES (1213, '用户组删除', 'bpm:user-group:delete', 3, 4, 1209, '', '', '', 0, b'1', b'1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', b'0'); | ||
| 220 | +INSERT INTO `system_menu` VALUES (1215, '流程定义查询', 'bpm:process-definition:query', 3, 10, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-23 00:21:43', '1', '2022-04-20 17:03:10', b'0'); | ||
| 221 | +INSERT INTO `system_menu` VALUES (1216, '流程任务分配规则查询', 'bpm:task-assign-rule:query', 3, 20, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-23 00:26:53', '1', '2022-04-20 17:03:10', b'0'); | ||
| 222 | +INSERT INTO `system_menu` VALUES (1217, '流程任务分配规则创建', 'bpm:task-assign-rule:create', 3, 21, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-23 00:28:15', '1', '2022-04-20 17:03:10', b'0'); | ||
| 223 | +INSERT INTO `system_menu` VALUES (1218, '流程任务分配规则更新', 'bpm:task-assign-rule:update', 3, 22, 1193, '', '', '', 0, b'1', b'1', '1', '2022-01-23 00:28:41', '1', '2022-04-20 17:03:10', b'0'); | ||
| 224 | +INSERT INTO `system_menu` VALUES (1219, '流程实例的创建', 'bpm:process-instance:create', 3, 2, 1201, '', '', '', 0, b'1', b'1', '1', '2022-01-23 00:36:15', '1', '2022-04-20 17:03:10', b'0'); | ||
| 225 | +INSERT INTO `system_menu` VALUES (1220, '流程实例的取消', 'bpm:process-instance:cancel', 3, 3, 1201, '', '', '', 0, b'1', b'1', '1', '2022-01-23 00:36:33', '1', '2022-04-20 17:03:10', b'0'); | ||
| 226 | +INSERT INTO `system_menu` VALUES (1221, '流程任务的查询', 'bpm:task:query', 3, 1, 1207, '', '', '', 0, b'1', b'1', '1', '2022-01-23 00:38:52', '1', '2022-04-20 17:03:10', b'0'); | ||
| 227 | +INSERT INTO `system_menu` VALUES (1222, '流程任务的更新', 'bpm:task:update', 3, 2, 1207, '', '', '', 0, b'1', b'1', '1', '2022-01-23 00:39:24', '1', '2022-04-20 17:03:10', b'0'); | ||
| 228 | +INSERT INTO `system_menu` VALUES (1224, '租户管理', '', 2, 0, 1, 'tenant', 'ep:cherry', NULL, 0, b'1', b'1', '1', '2022-02-20 01:41:13', '1', '2022-07-20 14:51:46', b'0'); | ||
| 229 | +INSERT INTO `system_menu` VALUES (1225, '租户套餐', '', 2, 0, 1224, 'package', 'eye', 'system/tenantPackage/index', 0, b'1', b'1', '', '2022-02-19 17:44:06', '1', '2022-04-21 01:21:25', b'0'); | ||
| 230 | +INSERT INTO `system_menu` VALUES (1226, '租户套餐查询', 'system:tenant-package:query', 3, 1, 1225, '', '', '', 0, b'1', b'1', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', b'0'); | ||
| 231 | +INSERT INTO `system_menu` VALUES (1227, '租户套餐创建', 'system:tenant-package:create', 3, 2, 1225, '', '', '', 0, b'1', b'1', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', b'0'); | ||
| 232 | +INSERT INTO `system_menu` VALUES (1228, '租户套餐更新', 'system:tenant-package:update', 3, 3, 1225, '', '', '', 0, b'1', b'1', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', b'0'); | ||
| 233 | +INSERT INTO `system_menu` VALUES (1229, '租户套餐删除', 'system:tenant-package:delete', 3, 4, 1225, '', '', '', 0, b'1', b'1', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', b'0'); | ||
| 234 | +INSERT INTO `system_menu` VALUES (1237, '文件配置', '', 2, 0, 1243, 'file-config', 'config', 'infra/fileConfig/index', 0, b'1', b'1', '', '2022-03-15 14:35:28', '1', '2022-04-20 17:03:10', b'0'); | ||
| 235 | +INSERT INTO `system_menu` VALUES (1238, '文件配置查询', 'infra:file-config:query', 3, 1, 1237, '', '', '', 0, b'1', b'1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', b'0'); | ||
| 236 | +INSERT INTO `system_menu` VALUES (1239, '文件配置创建', 'infra:file-config:create', 3, 2, 1237, '', '', '', 0, b'1', b'1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', b'0'); | ||
| 237 | +INSERT INTO `system_menu` VALUES (1240, '文件配置更新', 'infra:file-config:update', 3, 3, 1237, '', '', '', 0, b'1', b'1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', b'0'); | ||
| 238 | +INSERT INTO `system_menu` VALUES (1241, '文件配置删除', 'infra:file-config:delete', 3, 4, 1237, '', '', '', 0, b'1', b'1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', b'0'); | ||
| 239 | +INSERT INTO `system_menu` VALUES (1242, '文件配置导出', 'infra:file-config:export', 3, 5, 1237, '', '', '', 0, b'1', b'1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', b'0'); | ||
| 240 | +INSERT INTO `system_menu` VALUES (1243, '文件管理', '', 2, 5, 2, 'file', 'ep:folder-opened', NULL, 0, b'1', b'1', '1', '2022-03-16 23:47:40', '1', '2022-07-20 14:48:19', b'0'); | ||
| 241 | +INSERT INTO `system_menu` VALUES (1247, '敏感词管理', '', 2, 13, 1, 'sensitive-word', 'ep:document-copy', 'system/sensitiveWord/index', 0, b'1', b'1', '', '2022-04-07 16:55:03', '1', '2022-07-20 14:43:53', b'0'); | ||
| 242 | +INSERT INTO `system_menu` VALUES (1248, '敏感词查询', 'system:sensitive-word:query', 3, 1, 1247, '', '', '', 0, b'1', b'1', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', b'0'); | ||
| 243 | +INSERT INTO `system_menu` VALUES (1249, '敏感词创建', 'system:sensitive-word:create', 3, 2, 1247, '', '', '', 0, b'1', b'1', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', b'0'); | ||
| 244 | +INSERT INTO `system_menu` VALUES (1250, '敏感词更新', 'system:sensitive-word:update', 3, 3, 1247, '', '', '', 0, b'1', b'1', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', b'0'); | ||
| 245 | +INSERT INTO `system_menu` VALUES (1251, '敏感词删除', 'system:sensitive-word:delete', 3, 4, 1247, '', '', '', 0, b'1', b'1', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', b'0'); | ||
| 246 | +INSERT INTO `system_menu` VALUES (1252, '敏感词导出', 'system:sensitive-word:export', 3, 5, 1247, '', '', '', 0, b'1', b'1', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', b'0'); | ||
| 247 | +INSERT INTO `system_menu` VALUES (1254, '作者动态', '', 1, 0, 0, 'https://www.iocoder.cn', 'ep:bell-filled', NULL, 0, b'1', b'1', '1', '2022-04-23 01:03:15', '1', '2022-07-20 13:12:43', b'0'); | ||
| 248 | +INSERT INTO `system_menu` VALUES (1255, '数据源配置', '', 2, 1, 2, 'data-source-config', 'ep:coin', 'infra/dataSourceConfig/index', 0, b'1', b'1', '', '2022-04-27 14:37:32', '1', '2022-07-20 14:49:01', b'0'); | ||
| 249 | +INSERT INTO `system_menu` VALUES (1256, '数据源配置查询', 'infra:data-source-config:query', 3, 1, 1255, '', '', '', 0, b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0'); | ||
| 250 | +INSERT INTO `system_menu` VALUES (1257, '数据源配置创建', 'infra:data-source-config:create', 3, 2, 1255, '', '', '', 0, b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0'); | ||
| 251 | +INSERT INTO `system_menu` VALUES (1258, '数据源配置更新', 'infra:data-source-config:update', 3, 3, 1255, '', '', '', 0, b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0'); | ||
| 252 | +INSERT INTO `system_menu` VALUES (1259, '数据源配置删除', 'infra:data-source-config:delete', 3, 4, 1255, '', '', '', 0, b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0'); | ||
| 253 | +INSERT INTO `system_menu` VALUES (1260, '数据源配置导出', 'infra:data-source-config:export', 3, 5, 1255, '', '', '', 0, b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0'); | ||
| 254 | +INSERT INTO `system_menu` VALUES (1261, '授权管理', '', 1, 10, 1, 'oauth2', 'ep:connection', NULL, 0, b'1', b'1', '1', '2022-05-09 23:38:17', '1', '2022-07-20 14:43:23', b'0'); | ||
| 255 | +INSERT INTO `system_menu` VALUES (1263, '应用管理', '', 2, 0, 1261, 'oauth2/application', 'tool', 'system/oauth2/client/index', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 23:31:36', b'0'); | ||
| 256 | +INSERT INTO `system_menu` VALUES (1264, '客户端查询', 'system:oauth2-client:query', 3, 1, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:06', b'0'); | ||
| 257 | +INSERT INTO `system_menu` VALUES (1265, '客户端创建', 'system:oauth2-client:create', 3, 2, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:23', b'0'); | ||
| 258 | +INSERT INTO `system_menu` VALUES (1266, '客户端更新', 'system:oauth2-client:update', 3, 3, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:28', b'0'); | ||
| 259 | +INSERT INTO `system_menu` VALUES (1267, '客户端删除', 'system:oauth2-client:delete', 3, 4, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:33', b'0'); | ||
| 260 | + | ||
| 261 | +SET FOREIGN_KEY_CHECKS = 1; |
yudao-dependencies/pom.xml
| @@ -16,20 +16,19 @@ | @@ -16,20 +16,19 @@ | ||
| 16 | <properties> | 16 | <properties> |
| 17 | <revision>1.6.2-snapshot</revision> | 17 | <revision>1.6.2-snapshot</revision> |
| 18 | <!-- 统一依赖管理 --> | 18 | <!-- 统一依赖管理 --> |
| 19 | - <spring.boot.version>2.6.8</spring.boot.version> | 19 | + <spring.boot.version>2.6.10</spring.boot.version> |
| 20 | <!-- Web 相关 --> | 20 | <!-- Web 相关 --> |
| 21 | <knife4j.version>3.0.3</knife4j.version> | 21 | <knife4j.version>3.0.3</knife4j.version> |
| 22 | <swagger-annotations.version>1.6.6</swagger-annotations.version> | 22 | <swagger-annotations.version>1.6.6</swagger-annotations.version> |
| 23 | <servlet.versoin>2.5</servlet.versoin> | 23 | <servlet.versoin>2.5</servlet.versoin> |
| 24 | <!-- DB 相关 --> | 24 | <!-- DB 相关 --> |
| 25 | - <druid.version>1.2.8</druid.version> | 25 | + <druid.version>1.2.11</druid.version> |
| 26 | <mybatis-plus.version>3.5.2</mybatis-plus.version> | 26 | <mybatis-plus.version>3.5.2</mybatis-plus.version> |
| 27 | <mybatis-plus-generator.version>3.5.2</mybatis-plus-generator.version> | 27 | <mybatis-plus-generator.version>3.5.2</mybatis-plus-generator.version> |
| 28 | <dynamic-datasource.version>3.5.0</dynamic-datasource.version> | 28 | <dynamic-datasource.version>3.5.0</dynamic-datasource.version> |
| 29 | - <redisson.version>3.17.3</redisson.version> | 29 | + <redisson.version>3.17.4</redisson.version> |
| 30 | <!-- Config 配置中心相关 --> | 30 | <!-- Config 配置中心相关 --> |
| 31 | <apollo.version>1.9.2</apollo.version> | 31 | <apollo.version>1.9.2</apollo.version> |
| 32 | - <!-- Job 定时任务相关 --> | ||
| 33 | <!-- 服务保障相关 --> | 32 | <!-- 服务保障相关 --> |
| 34 | <lock4j.version>2.2.0</lock4j.version> | 33 | <lock4j.version>2.2.0</lock4j.version> |
| 35 | <resilience4j.version>1.7.1</resilience4j.version> | 34 | <resilience4j.version>1.7.1</resilience4j.version> |
| @@ -48,8 +47,8 @@ | @@ -48,8 +47,8 @@ | ||
| 48 | <jasypt-spring-boot-starter.version>3.0.4</jasypt-spring-boot-starter.version> | 47 | <jasypt-spring-boot-starter.version>3.0.4</jasypt-spring-boot-starter.version> |
| 49 | <lombok.version>1.18.20</lombok.version> | 48 | <lombok.version>1.18.20</lombok.version> |
| 50 | <mapstruct.version>1.4.1.Final</mapstruct.version> | 49 | <mapstruct.version>1.4.1.Final</mapstruct.version> |
| 51 | - <hutool.version>5.6.1</hutool.version> | ||
| 52 | - <easyexcel.verion>2.2.7</easyexcel.verion> | 50 | + <hutool.version>5.7.22</hutool.version> |
| 51 | + <easyexcel.verion>3.1.1</easyexcel.verion> | ||
| 53 | <velocity.version>2.2</velocity.version> | 52 | <velocity.version>2.2</velocity.version> |
| 54 | <screw.version>1.0.5</screw.version> | 53 | <screw.version>1.0.5</screw.version> |
| 55 | <fastjson.version>2.0.5</fastjson.version> | 54 | <fastjson.version>2.0.5</fastjson.version> |
| @@ -419,7 +418,7 @@ | @@ -419,7 +418,7 @@ | ||
| 419 | </dependency> | 418 | </dependency> |
| 420 | <dependency> | 419 | <dependency> |
| 421 | <groupId>org.flowable</groupId> | 420 | <groupId>org.flowable</groupId> |
| 422 | - <artifactId>flowable-spring-boot-starter-basic</artifactId> | 421 | + <artifactId>flowable-spring-boot-starter-process</artifactId> |
| 423 | <version>${flowable.version}</version> | 422 | <version>${flowable.version}</version> |
| 424 | </dependency> | 423 | </dependency> |
| 425 | <dependency> | 424 | <dependency> |
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/collection/ArrayUtils.java
| @@ -2,14 +2,8 @@ package cn.iocoder.yudao.framework.common.util.collection; | @@ -2,14 +2,8 @@ package cn.iocoder.yudao.framework.common.util.collection; | ||
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollectionUtil; | 3 | import cn.hutool.core.collection.CollectionUtil; |
| 4 | import cn.hutool.core.util.ArrayUtil; | 4 | import cn.hutool.core.util.ArrayUtil; |
| 5 | -import cn.hutool.core.util.TypeUtil; | ||
| 6 | -import org.springframework.cglib.core.TypeUtils; | ||
| 7 | 5 | ||
| 8 | -import java.lang.reflect.Array; | ||
| 9 | -import java.lang.reflect.ParameterizedType; | ||
| 10 | -import java.lang.reflect.Type; | ||
| 11 | import java.util.Collection; | 6 | import java.util.Collection; |
| 12 | -import java.util.List; | ||
| 13 | import java.util.function.Consumer; | 7 | import java.util.function.Consumer; |
| 14 | import java.util.function.Function; | 8 | import java.util.function.Function; |
| 15 | 9 | ||
| @@ -53,4 +47,11 @@ public class ArrayUtils { | @@ -53,4 +47,11 @@ public class ArrayUtils { | ||
| 53 | return ArrayUtil.toArray(from, (Class<T>) CollectionUtil.getElementType(from.iterator())); | 47 | return ArrayUtil.toArray(from, (Class<T>) CollectionUtil.getElementType(from.iterator())); |
| 54 | } | 48 | } |
| 55 | 49 | ||
| 50 | + public static <T> T get(T[] array, int index) { | ||
| 51 | + if (null == array || index >= array.length) { | ||
| 52 | + return null; | ||
| 53 | + } | ||
| 54 | + return array[index]; | ||
| 55 | + } | ||
| 56 | + | ||
| 56 | } | 57 | } |
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/JsonUtils.java
| @@ -51,6 +51,10 @@ public class JsonUtils { | @@ -51,6 +51,10 @@ public class JsonUtils { | ||
| 51 | return objectMapper.writeValueAsBytes(object); | 51 | return objectMapper.writeValueAsBytes(object); |
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | + @SneakyThrows | ||
| 55 | + public static String toJsonPrettyString(Object object) { | ||
| 56 | + return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(object); | ||
| 57 | + } | ||
| 54 | 58 | ||
| 55 | public static <T> T parseObject(String text, Class<T> clazz) { | 59 | public static <T> T parseObject(String text, Class<T> clazz) { |
| 56 | if (StrUtil.isEmpty(text)) { | 60 | if (StrUtil.isEmpty(text)) { |
| @@ -132,7 +136,7 @@ public class JsonUtils { | @@ -132,7 +136,7 @@ public class JsonUtils { | ||
| 132 | } | 136 | } |
| 133 | 137 | ||
| 134 | public static boolean isJson(String text) { | 138 | public static boolean isJson(String text) { |
| 135 | - return JSONUtil.isJson(text); | 139 | + return JSONUtil.isTypeJSON(text); |
| 136 | } | 140 | } |
| 137 | 141 | ||
| 138 | } | 142 | } |
yudao-framework/yudao-spring-boot-starter-biz-social/pom.xml
| @@ -38,6 +38,12 @@ | @@ -38,6 +38,12 @@ | ||
| 38 | <dependency> | 38 | <dependency> |
| 39 | <groupId>com.xkcoding.justauth</groupId> | 39 | <groupId>com.xkcoding.justauth</groupId> |
| 40 | <artifactId>justauth-spring-boot-starter</artifactId> | 40 | <artifactId>justauth-spring-boot-starter</artifactId> |
| 41 | + <exclusions> | ||
| 42 | + <exclusion> | ||
| 43 | + <groupId>cn.hutool</groupId> | ||
| 44 | + <artifactId>hutool-core</artifactId> | ||
| 45 | + </exclusion> | ||
| 46 | + </exclusions> | ||
| 41 | </dependency> | 47 | </dependency> |
| 42 | <dependency> | 48 | <dependency> |
| 43 | <groupId>cn.iocoder.boot</groupId> | 49 | <groupId>cn.iocoder.boot</groupId> |
yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/config/TenantProperties.java
| @@ -3,6 +3,7 @@ package cn.iocoder.yudao.framework.tenant.config; | @@ -3,6 +3,7 @@ package cn.iocoder.yudao.framework.tenant.config; | ||
| 3 | import lombok.Data; | 3 | import lombok.Data; |
| 4 | import org.springframework.boot.context.properties.ConfigurationProperties; | 4 | import org.springframework.boot.context.properties.ConfigurationProperties; |
| 5 | 5 | ||
| 6 | +import java.util.Collections; | ||
| 6 | import java.util.Set; | 7 | import java.util.Set; |
| 7 | 8 | ||
| 8 | /** | 9 | /** |
| @@ -29,13 +30,13 @@ public class TenantProperties { | @@ -29,13 +30,13 @@ public class TenantProperties { | ||
| 29 | * | 30 | * |
| 30 | * 默认情况下,每个请求需要带上 tenant-id 的请求头。但是,部分请求是无需带上的,例如说短信回调、支付回调等 Open API! | 31 | * 默认情况下,每个请求需要带上 tenant-id 的请求头。但是,部分请求是无需带上的,例如说短信回调、支付回调等 Open API! |
| 31 | */ | 32 | */ |
| 32 | - private Set<String> ignoreUrls; | 33 | + private Set<String> ignoreUrls = Collections.emptySet(); |
| 33 | 34 | ||
| 34 | /** | 35 | /** |
| 35 | * 需要忽略多租户的表 | 36 | * 需要忽略多租户的表 |
| 36 | * | 37 | * |
| 37 | * 即默认所有表都开启多租户的功能,所以记得添加对应的 tenant_id 字段哟 | 38 | * 即默认所有表都开启多租户的功能,所以记得添加对应的 tenant_id 字段哟 |
| 38 | */ | 39 | */ |
| 39 | - private Set<String> ignoreTables; | 40 | + private Set<String> ignoreTables = Collections.emptySet(); |
| 40 | 41 | ||
| 41 | } | 42 | } |
yudao-framework/yudao-spring-boot-starter-biz-weixin/pom.xml
| @@ -14,6 +14,7 @@ | @@ -14,6 +14,7 @@ | ||
| 14 | <name>${project.artifactId}</name> | 14 | <name>${project.artifactId}</name> |
| 15 | <description>微信拓展 | 15 | <description>微信拓展 |
| 16 | 1. 基于 weixin-java-mp 库,对接微信公众号平台。目前主要解决微信公众号的支付场景。 | 16 | 1. 基于 weixin-java-mp 库,对接微信公众号平台。目前主要解决微信公众号的支付场景。 |
| 17 | + 2. 基于 weixin-java-miniapp 库,对接微信小程序。目前主要解决微信小程序的一键登录场景。 | ||
| 17 | </description> | 18 | </description> |
| 18 | <url>https://github.com/YunaiV/ruoyi-vue-pro</url> | 19 | <url>https://github.com/YunaiV/ruoyi-vue-pro</url> |
| 19 | 20 |
yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/internals/DefaultXInjector.java
| @@ -8,7 +8,7 @@ import com.ctrip.framework.apollo.tracer.Tracer; | @@ -8,7 +8,7 @@ import com.ctrip.framework.apollo.tracer.Tracer; | ||
| 8 | import com.ctrip.framework.apollo.util.ConfigUtil; | 8 | import com.ctrip.framework.apollo.util.ConfigUtil; |
| 9 | import com.ctrip.framework.apollo.util.factory.DefaultPropertiesFactory; | 9 | import com.ctrip.framework.apollo.util.factory.DefaultPropertiesFactory; |
| 10 | import com.ctrip.framework.apollo.util.factory.PropertiesFactory; | 10 | import com.ctrip.framework.apollo.util.factory.PropertiesFactory; |
| 11 | -import com.ctrip.framework.apollo.util.http.HttpUtil; | 11 | +import com.ctrip.framework.apollo.util.http.DefaultHttpClient; |
| 12 | import com.ctrip.framework.apollo.util.yaml.YamlParser; | 12 | import com.ctrip.framework.apollo.util.yaml.YamlParser; |
| 13 | import com.google.inject.AbstractModule; | 13 | import com.google.inject.AbstractModule; |
| 14 | import com.google.inject.Guice; | 14 | import com.google.inject.Guice; |
| @@ -63,7 +63,7 @@ public class DefaultXInjector implements Injector { | @@ -63,7 +63,7 @@ public class DefaultXInjector implements Injector { | ||
| 63 | bind(ConfigFactory.class).to(DBConfigFactory.class).in(Singleton.class); | 63 | bind(ConfigFactory.class).to(DBConfigFactory.class).in(Singleton.class); |
| 64 | 64 | ||
| 65 | bind(ConfigUtil.class).in(Singleton.class); | 65 | bind(ConfigUtil.class).in(Singleton.class); |
| 66 | - bind(HttpUtil.class).in(Singleton.class); | 66 | + bind(DefaultHttpClient.class).in(Singleton.class); |
| 67 | bind(ConfigServiceLocator.class).in(Singleton.class); | 67 | bind(ConfigServiceLocator.class).in(Singleton.class); |
| 68 | bind(RemoteConfigLongPollService.class).in(Singleton.class); | 68 | bind(RemoteConfigLongPollService.class).in(Singleton.class); |
| 69 | bind(YamlParser.class).in(Singleton.class); | 69 | bind(YamlParser.class).in(Singleton.class); |
yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/convert/DictConvert.java
| @@ -5,8 +5,9 @@ import cn.iocoder.yudao.framework.dict.core.util.DictFrameworkUtils; | @@ -5,8 +5,9 @@ import cn.iocoder.yudao.framework.dict.core.util.DictFrameworkUtils; | ||
| 5 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 5 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 6 | import com.alibaba.excel.converters.Converter; | 6 | import com.alibaba.excel.converters.Converter; |
| 7 | import com.alibaba.excel.enums.CellDataTypeEnum; | 7 | import com.alibaba.excel.enums.CellDataTypeEnum; |
| 8 | -import com.alibaba.excel.metadata.CellData; | ||
| 9 | import com.alibaba.excel.metadata.GlobalConfiguration; | 8 | import com.alibaba.excel.metadata.GlobalConfiguration; |
| 9 | +import com.alibaba.excel.metadata.data.ReadCellData; | ||
| 10 | +import com.alibaba.excel.metadata.data.WriteCellData; | ||
| 10 | import com.alibaba.excel.metadata.property.ExcelContentProperty; | 11 | import com.alibaba.excel.metadata.property.ExcelContentProperty; |
| 11 | import lombok.extern.slf4j.Slf4j; | 12 | import lombok.extern.slf4j.Slf4j; |
| 12 | 13 | ||
| @@ -29,11 +30,11 @@ public class DictConvert implements Converter<Object> { | @@ -29,11 +30,11 @@ public class DictConvert implements Converter<Object> { | ||
| 29 | } | 30 | } |
| 30 | 31 | ||
| 31 | @Override | 32 | @Override |
| 32 | - public Object convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, | 33 | + public Object convertToJavaData(ReadCellData readCellData, ExcelContentProperty contentProperty, |
| 33 | GlobalConfiguration globalConfiguration) { | 34 | GlobalConfiguration globalConfiguration) { |
| 34 | // 使用字典解析 | 35 | // 使用字典解析 |
| 35 | String type = getType(contentProperty); | 36 | String type = getType(contentProperty); |
| 36 | - String label = cellData.getStringValue(); | 37 | + String label = readCellData.getStringValue(); |
| 37 | String value = DictFrameworkUtils.parseDictDataValue(type, label); | 38 | String value = DictFrameworkUtils.parseDictDataValue(type, label); |
| 38 | if (value == null) { | 39 | if (value == null) { |
| 39 | log.error("[convertToJavaData][type({}) 解析不掉 label({})]", type, label); | 40 | log.error("[convertToJavaData][type({}) 解析不掉 label({})]", type, label); |
| @@ -45,11 +46,11 @@ public class DictConvert implements Converter<Object> { | @@ -45,11 +46,11 @@ public class DictConvert implements Converter<Object> { | ||
| 45 | } | 46 | } |
| 46 | 47 | ||
| 47 | @Override | 48 | @Override |
| 48 | - public CellData<String> convertToExcelData(Object object, ExcelContentProperty contentProperty, | ||
| 49 | - GlobalConfiguration globalConfiguration) { | 49 | + public WriteCellData<String> convertToExcelData(Object object, ExcelContentProperty contentProperty, |
| 50 | + GlobalConfiguration globalConfiguration) { | ||
| 50 | // 空时,返回空 | 51 | // 空时,返回空 |
| 51 | if (object == null) { | 52 | if (object == null) { |
| 52 | - return new CellData<>(""); | 53 | + return new WriteCellData<>(""); |
| 53 | } | 54 | } |
| 54 | 55 | ||
| 55 | // 使用字典格式化 | 56 | // 使用字典格式化 |
| @@ -58,10 +59,10 @@ public class DictConvert implements Converter<Object> { | @@ -58,10 +59,10 @@ public class DictConvert implements Converter<Object> { | ||
| 58 | String label = DictFrameworkUtils.getDictDataLabel(type, value); | 59 | String label = DictFrameworkUtils.getDictDataLabel(type, value); |
| 59 | if (label == null) { | 60 | if (label == null) { |
| 60 | log.error("[convertToExcelData][type({}) 转换不了 label({})]", type, value); | 61 | log.error("[convertToExcelData][type({}) 转换不了 label({})]", type, value); |
| 61 | - return new CellData<>(""); | 62 | + return new WriteCellData<>(""); |
| 62 | } | 63 | } |
| 63 | // 生成 Excel 小表格 | 64 | // 生成 Excel 小表格 |
| 64 | - return new CellData<>(label); | 65 | + return new WriteCellData<>(label); |
| 65 | } | 66 | } |
| 66 | 67 | ||
| 67 | private static String getType(ExcelContentProperty contentProperty) { | 68 | private static String getType(ExcelContentProperty contentProperty) { |
yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/convert/JsonConvert.java
| @@ -3,8 +3,8 @@ package cn.iocoder.yudao.framework.excel.core.convert; | @@ -3,8 +3,8 @@ package cn.iocoder.yudao.framework.excel.core.convert; | ||
| 3 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; | 3 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; |
| 4 | import com.alibaba.excel.converters.Converter; | 4 | import com.alibaba.excel.converters.Converter; |
| 5 | import com.alibaba.excel.enums.CellDataTypeEnum; | 5 | import com.alibaba.excel.enums.CellDataTypeEnum; |
| 6 | -import com.alibaba.excel.metadata.CellData; | ||
| 7 | import com.alibaba.excel.metadata.GlobalConfiguration; | 6 | import com.alibaba.excel.metadata.GlobalConfiguration; |
| 7 | +import com.alibaba.excel.metadata.data.WriteCellData; | ||
| 8 | import com.alibaba.excel.metadata.property.ExcelContentProperty; | 8 | import com.alibaba.excel.metadata.property.ExcelContentProperty; |
| 9 | 9 | ||
| 10 | /** | 10 | /** |
| @@ -25,15 +25,10 @@ public class JsonConvert implements Converter<Object> { | @@ -25,15 +25,10 @@ public class JsonConvert implements Converter<Object> { | ||
| 25 | } | 25 | } |
| 26 | 26 | ||
| 27 | @Override | 27 | @Override |
| 28 | - public Object convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { | ||
| 29 | - throw new UnsupportedOperationException("暂不支持,也不需要"); | ||
| 30 | - } | ||
| 31 | - | ||
| 32 | - @Override | ||
| 33 | - public CellData<String> convertToExcelData(Object value, ExcelContentProperty contentProperty, | ||
| 34 | - GlobalConfiguration globalConfiguration) { | 28 | + public WriteCellData<String> convertToExcelData(Object value, ExcelContentProperty contentProperty, |
| 29 | + GlobalConfiguration globalConfiguration) { | ||
| 35 | // 生成 Excel 小表格 | 30 | // 生成 Excel 小表格 |
| 36 | - return new CellData<>(JsonUtils.toJsonString(value)); | 31 | + return new WriteCellData<>(JsonUtils.toJsonString(value)); |
| 37 | } | 32 | } |
| 38 | 33 | ||
| 39 | } | 34 | } |
yudao-framework/yudao-spring-boot-starter-flowable/pom.xml
| @@ -26,7 +26,7 @@ | @@ -26,7 +26,7 @@ | ||
| 26 | <!-- flowable 工作流相关 --> | 26 | <!-- flowable 工作流相关 --> |
| 27 | <dependency> | 27 | <dependency> |
| 28 | <groupId>org.flowable</groupId> | 28 | <groupId>org.flowable</groupId> |
| 29 | - <artifactId>flowable-spring-boot-starter-basic</artifactId> | 29 | + <artifactId>flowable-spring-boot-starter-process</artifactId> |
| 30 | </dependency> | 30 | </dependency> |
| 31 | <dependency> | 31 | <dependency> |
| 32 | <groupId>org.flowable</groupId> | 32 | <groupId>org.flowable</groupId> |
yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/core/aop/BizTraceAspect.java
| @@ -38,7 +38,7 @@ public class BizTraceAspect { | @@ -38,7 +38,7 @@ public class BizTraceAspect { | ||
| 38 | String operationName = getOperationName(joinPoint, trace); | 38 | String operationName = getOperationName(joinPoint, trace); |
| 39 | Span span = tracer.buildSpan(operationName) | 39 | Span span = tracer.buildSpan(operationName) |
| 40 | .withTag(Tags.COMPONENT.getKey(), "biz") | 40 | .withTag(Tags.COMPONENT.getKey(), "biz") |
| 41 | - .startManual(); | 41 | + .start(); |
| 42 | try { | 42 | try { |
| 43 | // 执行原有方法 | 43 | // 执行原有方法 |
| 44 | return joinPoint.proceed(); | 44 | return joinPoint.proceed(); |
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/query/LambdaQueryWrapperX.java
| 1 | package cn.iocoder.yudao.framework.mybatis.core.query; | 1 | package cn.iocoder.yudao.framework.mybatis.core.query; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.util.ArrayUtil; | ||
| 4 | +import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; | ||
| 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 5 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 4 | -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||
| 5 | -import com.baomidou.mybatisplus.core.toolkit.ArrayUtils; | ||
| 6 | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; | 6 | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| 7 | import com.baomidou.mybatisplus.core.toolkit.support.SFunction; | 7 | import com.baomidou.mybatisplus.core.toolkit.support.SFunction; |
| 8 | import org.springframework.util.StringUtils; | 8 | import org.springframework.util.StringUtils; |
| @@ -33,7 +33,7 @@ public class LambdaQueryWrapperX<T> extends LambdaQueryWrapper<T> { | @@ -33,7 +33,7 @@ public class LambdaQueryWrapperX<T> extends LambdaQueryWrapper<T> { | ||
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | public LambdaQueryWrapperX<T> inIfPresent(SFunction<T, ?> column, Object... values) { | 35 | public LambdaQueryWrapperX<T> inIfPresent(SFunction<T, ?> column, Object... values) { |
| 36 | - if (!ArrayUtils.isEmpty(values)) { | 36 | + if (!ArrayUtil.isEmpty(values)) { |
| 37 | return (LambdaQueryWrapperX<T>) super.in(column, values); | 37 | return (LambdaQueryWrapperX<T>) super.in(column, values); |
| 38 | } | 38 | } |
| 39 | return this; | 39 | return this; |
| @@ -94,6 +94,12 @@ public class LambdaQueryWrapperX<T> extends LambdaQueryWrapper<T> { | @@ -94,6 +94,12 @@ public class LambdaQueryWrapperX<T> extends LambdaQueryWrapper<T> { | ||
| 94 | return this; | 94 | return this; |
| 95 | } | 95 | } |
| 96 | 96 | ||
| 97 | + public LambdaQueryWrapperX<T> betweenIfPresent(SFunction<T, ?> column, Object[] values) { | ||
| 98 | + Object val1 = ArrayUtils.get(values, 0); | ||
| 99 | + Object val2 = ArrayUtils.get(values, 1); | ||
| 100 | + return betweenIfPresent(column, val1, val2); | ||
| 101 | + } | ||
| 102 | + | ||
| 97 | // ========== 重写父类方法,方便链式调用 ========== | 103 | // ========== 重写父类方法,方便链式调用 ========== |
| 98 | 104 | ||
| 99 | @Override | 105 | @Override |
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/query/QueryWrapperX.java
| @@ -94,6 +94,19 @@ public class QueryWrapperX<T> extends QueryWrapper<T> { | @@ -94,6 +94,19 @@ public class QueryWrapperX<T> extends QueryWrapper<T> { | ||
| 94 | return this; | 94 | return this; |
| 95 | } | 95 | } |
| 96 | 96 | ||
| 97 | + public QueryWrapperX<T> betweenIfPresent(String column, Object[] values) { | ||
| 98 | + if (values!= null && values.length != 0 && values[0] != null && values[1] != null) { | ||
| 99 | + return (QueryWrapperX<T>) super.between(column, values[0], values[1]); | ||
| 100 | + } | ||
| 101 | + if (values!= null && values.length != 0 && values[0] != null) { | ||
| 102 | + return (QueryWrapperX<T>) ge(column, values[0]); | ||
| 103 | + } | ||
| 104 | + if (values!= null && values.length != 0 && values[1] != null) { | ||
| 105 | + return (QueryWrapperX<T>) le(column, values[1]); | ||
| 106 | + } | ||
| 107 | + return this; | ||
| 108 | + } | ||
| 109 | + | ||
| 97 | // ========== 重写父类方法,方便链式调用 ========== | 110 | // ========== 重写父类方法,方便链式调用 ========== |
| 98 | 111 | ||
| 99 | @Override | 112 | @Override |
yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoWebSecurityConfigurerAdapter.java
| @@ -118,16 +118,16 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap | @@ -118,16 +118,16 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap | ||
| 118 | httpSecurity | 118 | httpSecurity |
| 119 | // ①:全局共享规则 | 119 | // ①:全局共享规则 |
| 120 | .authorizeRequests() | 120 | .authorizeRequests() |
| 121 | - // 静态资源,可匿名访问 | 121 | + // 1.1 静态资源,可匿名访问 |
| 122 | .antMatchers(HttpMethod.GET, "/*.html", "/**/*.html", "/**/*.css", "/**/*.js").permitAll() | 122 | .antMatchers(HttpMethod.GET, "/*.html", "/**/*.html", "/**/*.css", "/**/*.js").permitAll() |
| 123 | - // 设置 @PermitAll 无需认证 | 123 | + // 1.2 设置 @PermitAll 无需认证 |
| 124 | .antMatchers(HttpMethod.GET, permitAllUrls.get(HttpMethod.GET).toArray(new String[0])).permitAll() | 124 | .antMatchers(HttpMethod.GET, permitAllUrls.get(HttpMethod.GET).toArray(new String[0])).permitAll() |
| 125 | .antMatchers(HttpMethod.POST, permitAllUrls.get(HttpMethod.POST).toArray(new String[0])).permitAll() | 125 | .antMatchers(HttpMethod.POST, permitAllUrls.get(HttpMethod.POST).toArray(new String[0])).permitAll() |
| 126 | .antMatchers(HttpMethod.PUT, permitAllUrls.get(HttpMethod.PUT).toArray(new String[0])).permitAll() | 126 | .antMatchers(HttpMethod.PUT, permitAllUrls.get(HttpMethod.PUT).toArray(new String[0])).permitAll() |
| 127 | .antMatchers(HttpMethod.DELETE, permitAllUrls.get(HttpMethod.DELETE).toArray(new String[0])).permitAll() | 127 | .antMatchers(HttpMethod.DELETE, permitAllUrls.get(HttpMethod.DELETE).toArray(new String[0])).permitAll() |
| 128 | - // 基于 yudao.security.permit-all-urls 无需认证 | 128 | + // 1.3 基于 yudao.security.permit-all-urls 无需认证 |
| 129 | .antMatchers(securityProperties.getPermitAllUrls().toArray(new String[0])).permitAll() | 129 | .antMatchers(securityProperties.getPermitAllUrls().toArray(new String[0])).permitAll() |
| 130 | - // 设置 App API 无需认证 | 130 | + // 1.4 设置 App API 无需认证 |
| 131 | .antMatchers(buildAppApi("/**")).permitAll() | 131 | .antMatchers(buildAppApi("/**")).permitAll() |
| 132 | // ②:每个项目的自定义规则 | 132 | // ②:每个项目的自定义规则 |
| 133 | .and().authorizeRequests(registry -> // 下面,循环设置自定义规则 | 133 | .and().authorizeRequests(registry -> // 下面,循环设置自定义规则 |
| @@ -137,7 +137,7 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap | @@ -137,7 +137,7 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap | ||
| 137 | .anyRequest().authenticated() | 137 | .anyRequest().authenticated() |
| 138 | ; | 138 | ; |
| 139 | 139 | ||
| 140 | - // 添加 JWT Filter | 140 | + // 添加 Token Filter |
| 141 | httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); | 141 | httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); |
| 142 | } | 142 | } |
| 143 | 143 |
yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/util/RandomUtils.java
| @@ -40,7 +40,7 @@ public class RandomUtils { | @@ -40,7 +40,7 @@ public class RandomUtils { | ||
| 40 | // Integer | 40 | // Integer |
| 41 | PODAM_FACTORY.getStrategy().addOrReplaceTypeManufacturer(Integer.class, (dataProviderStrategy, attributeMetadata, map) -> { | 41 | PODAM_FACTORY.getStrategy().addOrReplaceTypeManufacturer(Integer.class, (dataProviderStrategy, attributeMetadata, map) -> { |
| 42 | // 如果是 status 的字段,返回 0 或 1 | 42 | // 如果是 status 的字段,返回 0 或 1 |
| 43 | - if (attributeMetadata.getAttributeName().equals("status")) { | 43 | + if ("status".equals(attributeMetadata.getAttributeName())) { |
| 44 | return RandomUtil.randomEle(CommonStatusEnum.values()).getStatus(); | 44 | return RandomUtil.randomEle(CommonStatusEnum.values()).getStatus(); |
| 45 | } | 45 | } |
| 46 | // 如果是 type、status 结尾的字段,返回 tinyint 范围 | 46 | // 如果是 type、status 结尾的字段,返回 tinyint 范围 |
| @@ -53,7 +53,7 @@ public class RandomUtils { | @@ -53,7 +53,7 @@ public class RandomUtils { | ||
| 53 | // Boolean | 53 | // Boolean |
| 54 | PODAM_FACTORY.getStrategy().addOrReplaceTypeManufacturer(Boolean.class, (dataProviderStrategy, attributeMetadata, map) -> { | 54 | PODAM_FACTORY.getStrategy().addOrReplaceTypeManufacturer(Boolean.class, (dataProviderStrategy, attributeMetadata, map) -> { |
| 55 | // 如果是 deleted 的字段,返回非删除 | 55 | // 如果是 deleted 的字段,返回非删除 |
| 56 | - if (attributeMetadata.getAttributeName().equals("deleted")) { | 56 | + if ("deleted".equals(attributeMetadata.getAttributeName())) { |
| 57 | return false; | 57 | return false; |
| 58 | } | 58 | } |
| 59 | return RandomUtil.randomBoolean(); | 59 | return RandomUtil.randomBoolean(); |
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/config/YudaoSwaggerAutoConfiguration.java
| @@ -95,7 +95,7 @@ public class YudaoSwaggerAutoConfiguration { | @@ -95,7 +95,7 @@ public class YudaoSwaggerAutoConfiguration { | ||
| 95 | return Collections.singletonList(SecurityContext.builder() | 95 | return Collections.singletonList(SecurityContext.builder() |
| 96 | .securityReferences(securityReferences()) | 96 | .securityReferences(securityReferences()) |
| 97 | // 通过 PathSelectors.regex("^(?!auth).*$"),排除包含 "auth" 的接口不需要使用securitySchemes | 97 | // 通过 PathSelectors.regex("^(?!auth).*$"),排除包含 "auth" 的接口不需要使用securitySchemes |
| 98 | - .forPaths(PathSelectors.regex("^(?!auth).*$")) | 98 | + .operationSelector(o -> o.requestMappingPattern().matches("^(?!auth).*$")) |
| 99 | .build()); | 99 | .build()); |
| 100 | } | 100 | } |
| 101 | 101 |
yudao-module-bpm/yudao-module-bpm-biz/pom.xml
| @@ -26,11 +26,6 @@ | @@ -26,11 +26,6 @@ | ||
| 26 | <artifactId>yudao-module-system-api</artifactId> | 26 | <artifactId>yudao-module-system-api</artifactId> |
| 27 | <version>${revision}</version> | 27 | <version>${revision}</version> |
| 28 | </dependency> | 28 | </dependency> |
| 29 | - <dependency> | ||
| 30 | - <groupId>cn.iocoder.boot</groupId> | ||
| 31 | - <artifactId>yudao-module-system-biz</artifactId> | ||
| 32 | - <version>${revision}</version> | ||
| 33 | - </dependency> | ||
| 34 | 29 | ||
| 35 | <!-- 业务组件 --> | 30 | <!-- 业务组件 --> |
| 36 | <dependency> | 31 | <dependency> |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/group/BpmUserGroupPageReqVO.java
| @@ -24,11 +24,7 @@ public class BpmUserGroupPageReqVO extends PageParam { | @@ -24,11 +24,7 @@ public class BpmUserGroupPageReqVO extends PageParam { | ||
| 24 | private Integer status; | 24 | private Integer status; |
| 25 | 25 | ||
| 26 | @DateTimeFormat(pattern = DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 26 | @DateTimeFormat(pattern = DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 27 | - @ApiModelProperty(value = "开始创建时间") | ||
| 28 | - private Date beginCreateTime; | ||
| 29 | - | ||
| 30 | - @DateTimeFormat(pattern = DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 31 | - @ApiModelProperty(value = "结束创建时间") | ||
| 32 | - private Date endCreateTime; | 27 | + @ApiModelProperty(value = "创建时间") |
| 28 | + private Date[] createTime; | ||
| 33 | 29 | ||
| 34 | } | 30 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeavePageReqVO.java
| @@ -24,11 +24,7 @@ public class BpmOALeavePageReqVO extends PageParam { | @@ -24,11 +24,7 @@ public class BpmOALeavePageReqVO extends PageParam { | ||
| 24 | private String reason; | 24 | private String reason; |
| 25 | 25 | ||
| 26 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 26 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 27 | - @ApiModelProperty(value = "开始申请时间") | ||
| 28 | - private Date beginCreateTime; | ||
| 29 | - | ||
| 30 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 31 | - @ApiModelProperty(value = "结束申请时间") | ||
| 32 | - private Date endCreateTime; | 27 | + @ApiModelProperty(value = "申请时间") |
| 28 | + private Date[] createTime; | ||
| 33 | 29 | ||
| 34 | } | 30 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceController.java
| @@ -22,6 +22,7 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti | @@ -22,6 +22,7 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti | ||
| 22 | @RequestMapping("/bpm/process-instance") | 22 | @RequestMapping("/bpm/process-instance") |
| 23 | @Validated | 23 | @Validated |
| 24 | public class BpmProcessInstanceController { | 24 | public class BpmProcessInstanceController { |
| 25 | + | ||
| 25 | @Resource | 26 | @Resource |
| 26 | private BpmProcessInstanceService processInstanceService; | 27 | private BpmProcessInstanceService processInstanceService; |
| 27 | 28 |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceMyPageReqVO.java
| @@ -33,12 +33,8 @@ public class BpmProcessInstanceMyPageReqVO extends PageParam { | @@ -33,12 +33,8 @@ public class BpmProcessInstanceMyPageReqVO extends PageParam { | ||
| 33 | @ApiModelProperty(value = "流程分类", notes = "参见 bpm_model_category 数据字典", example = "1") | 33 | @ApiModelProperty(value = "流程分类", notes = "参见 bpm_model_category 数据字典", example = "1") |
| 34 | private String category; | 34 | private String category; |
| 35 | 35 | ||
| 36 | - @ApiModelProperty(value = "开始的创建时间") | 36 | + @ApiModelProperty(value = "创建时间") |
| 37 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 37 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 38 | - private Date beginCreateTime; | ||
| 39 | - | ||
| 40 | - @ApiModelProperty(value = "结束的创建时间") | ||
| 41 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 42 | - private Date endCreateTime; | 38 | + private Date[] createTime; |
| 43 | 39 | ||
| 44 | } | 40 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/task/BpmTaskExtDO.java
| @@ -12,7 +12,7 @@ import java.util.Date; | @@ -12,7 +12,7 @@ import java.util.Date; | ||
| 12 | 12 | ||
| 13 | /** | 13 | /** |
| 14 | * Bpm 流程任务的拓展表 | 14 | * Bpm 流程任务的拓展表 |
| 15 | - * 主要解决 Activiti Task 和 HistoricTaskInstance 不支持拓展字段,所以新建拓展表 | 15 | + * 主要解决 Flowable Task 和 HistoricTaskInstance 不支持拓展字段,所以新建拓展表 |
| 16 | * | 16 | * |
| 17 | * @author 芋道源码 | 17 | * @author 芋道源码 |
| 18 | */ | 18 | */ |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/definition/BpmUserGroupMapper.java
| @@ -21,7 +21,7 @@ public interface BpmUserGroupMapper extends BaseMapperX<BpmUserGroupDO> { | @@ -21,7 +21,7 @@ public interface BpmUserGroupMapper extends BaseMapperX<BpmUserGroupDO> { | ||
| 21 | return selectPage(reqVO, new LambdaQueryWrapperX<BpmUserGroupDO>() | 21 | return selectPage(reqVO, new LambdaQueryWrapperX<BpmUserGroupDO>() |
| 22 | .likeIfPresent(BpmUserGroupDO::getName, reqVO.getName()) | 22 | .likeIfPresent(BpmUserGroupDO::getName, reqVO.getName()) |
| 23 | .eqIfPresent(BpmUserGroupDO::getStatus, reqVO.getStatus()) | 23 | .eqIfPresent(BpmUserGroupDO::getStatus, reqVO.getStatus()) |
| 24 | - .betweenIfPresent(BpmUserGroupDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 24 | + .betweenIfPresent(BpmUserGroupDO::getCreateTime, reqVO.getCreateTime()) |
| 25 | .orderByDesc(BpmUserGroupDO::getId)); | 25 | .orderByDesc(BpmUserGroupDO::getId)); |
| 26 | } | 26 | } |
| 27 | 27 |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOALeaveMapper.java
| @@ -22,7 +22,7 @@ public interface BpmOALeaveMapper extends BaseMapperX<BpmOALeaveDO> { | @@ -22,7 +22,7 @@ public interface BpmOALeaveMapper extends BaseMapperX<BpmOALeaveDO> { | ||
| 22 | .eqIfPresent(BpmOALeaveDO::getResult, reqVO.getResult()) | 22 | .eqIfPresent(BpmOALeaveDO::getResult, reqVO.getResult()) |
| 23 | .eqIfPresent(BpmOALeaveDO::getType, reqVO.getType()) | 23 | .eqIfPresent(BpmOALeaveDO::getType, reqVO.getType()) |
| 24 | .likeIfPresent(BpmOALeaveDO::getReason, reqVO.getReason()) | 24 | .likeIfPresent(BpmOALeaveDO::getReason, reqVO.getReason()) |
| 25 | - .betweenIfPresent(BpmOALeaveDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 25 | + .betweenIfPresent(BpmOALeaveDO::getCreateTime, reqVO.getCreateTime()) |
| 26 | .orderByDesc(BpmOALeaveDO::getId)); | 26 | .orderByDesc(BpmOALeaveDO::getId)); |
| 27 | } | 27 | } |
| 28 | 28 |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmProcessInstanceExtMapper.java
| 1 | package cn.iocoder.yudao.module.bpm.dal.mysql.task; | 1 | package cn.iocoder.yudao.module.bpm.dal.mysql.task; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceMyPageReqVO; | ||
| 4 | -import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; | ||
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 7 | -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; | ||
| 8 | -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 5 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 6 | +import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceMyPageReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; | ||
| 9 | import org.apache.ibatis.annotations.Mapper; | 8 | import org.apache.ibatis.annotations.Mapper; |
| 10 | 9 | ||
| 11 | @Mapper | 10 | @Mapper |
| 12 | public interface BpmProcessInstanceExtMapper extends BaseMapperX<BpmProcessInstanceExtDO> { | 11 | public interface BpmProcessInstanceExtMapper extends BaseMapperX<BpmProcessInstanceExtDO> { |
| 13 | 12 | ||
| 14 | default PageResult<BpmProcessInstanceExtDO> selectPage(Long userId, BpmProcessInstanceMyPageReqVO reqVO) { | 13 | default PageResult<BpmProcessInstanceExtDO> selectPage(Long userId, BpmProcessInstanceMyPageReqVO reqVO) { |
| 15 | - return selectPage(reqVO, new QueryWrapperX<BpmProcessInstanceExtDO>() | ||
| 16 | - .eqIfPresent("start_user_id", userId) | ||
| 17 | - .likeIfPresent("name", reqVO.getName()) | ||
| 18 | - .eqIfPresent("process_definition_id", reqVO.getProcessDefinitionId()) | ||
| 19 | - .eqIfPresent("category", reqVO.getCategory()) | ||
| 20 | - .eqIfPresent("status", reqVO.getStatus()) | ||
| 21 | - .eqIfPresent("result", reqVO.getResult()) | ||
| 22 | - .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | ||
| 23 | - .orderByDesc("id")); | 14 | + return selectPage(reqVO, new LambdaQueryWrapperX<BpmProcessInstanceExtDO>() |
| 15 | + .eqIfPresent(BpmProcessInstanceExtDO::getStartUserId, userId) | ||
| 16 | + .likeIfPresent(BpmProcessInstanceExtDO::getName, reqVO.getName()) | ||
| 17 | + .eqIfPresent(BpmProcessInstanceExtDO::getProcessDefinitionId, reqVO.getProcessDefinitionId()) | ||
| 18 | + .eqIfPresent(BpmProcessInstanceExtDO::getCategory, reqVO.getCategory()) | ||
| 19 | + .eqIfPresent(BpmProcessInstanceExtDO::getStatus, reqVO.getStatus()) | ||
| 20 | + .eqIfPresent(BpmProcessInstanceExtDO::getResult, reqVO.getResult()) | ||
| 21 | + .betweenIfPresent(BpmProcessInstanceExtDO::getCreateTime, reqVO.getCreateTime()) | ||
| 22 | + .orderByDesc(BpmProcessInstanceExtDO::getId)); | ||
| 24 | } | 23 | } |
| 25 | 24 | ||
| 26 | - default BpmProcessInstanceExtDO selectByProcessInstanceId(String processDefinitionId) { | ||
| 27 | - return selectOne("process_instance_id", processDefinitionId); | 25 | + default BpmProcessInstanceExtDO selectByProcessInstanceId(String processInstanceId) { |
| 26 | + return selectOne(BpmProcessInstanceExtDO::getProcessInstanceId, processInstanceId); | ||
| 28 | } | 27 | } |
| 29 | 28 | ||
| 30 | default void updateByProcessInstanceId(BpmProcessInstanceExtDO updateObj) { | 29 | default void updateByProcessInstanceId(BpmProcessInstanceExtDO updateObj) { |
| 31 | - update(updateObj, new QueryWrapper<BpmProcessInstanceExtDO>() | ||
| 32 | - .eq("process_instance_id", updateObj.getProcessInstanceId())); | 30 | + update(updateObj, new LambdaQueryWrapperX<BpmProcessInstanceExtDO>() |
| 31 | + .eq(BpmProcessInstanceExtDO::getProcessInstanceId, updateObj.getProcessInstanceId())); | ||
| 33 | } | 32 | } |
| 34 | 33 | ||
| 35 | } | 34 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/BpmProcessInstanceEventListener.java
| @@ -7,13 +7,13 @@ import org.flowable.common.engine.api.delegate.event.FlowableEngineEntityEvent; | @@ -7,13 +7,13 @@ import org.flowable.common.engine.api.delegate.event.FlowableEngineEntityEvent; | ||
| 7 | import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType; | 7 | import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType; |
| 8 | import org.flowable.engine.delegate.event.AbstractFlowableEngineEventListener; | 8 | import org.flowable.engine.delegate.event.AbstractFlowableEngineEventListener; |
| 9 | import org.flowable.engine.delegate.event.FlowableCancelledEvent; | 9 | import org.flowable.engine.delegate.event.FlowableCancelledEvent; |
| 10 | -import org.flowable.engine.delegate.event.FlowableProcessStartedEvent; | ||
| 11 | import org.flowable.engine.runtime.ProcessInstance; | 10 | import org.flowable.engine.runtime.ProcessInstance; |
| 12 | import org.springframework.context.annotation.Lazy; | 11 | import org.springframework.context.annotation.Lazy; |
| 13 | import org.springframework.stereotype.Component; | 12 | import org.springframework.stereotype.Component; |
| 14 | 13 | ||
| 15 | import javax.annotation.Resource; | 14 | import javax.annotation.Resource; |
| 16 | import java.util.Set; | 15 | import java.util.Set; |
| 16 | + | ||
| 17 | /** | 17 | /** |
| 18 | * 监听 {@link ProcessInstance} 的开始与完成,创建与更新对应的 {@link BpmProcessInstanceExtDO} 记录 | 18 | * 监听 {@link ProcessInstance} 的开始与完成,创建与更新对应的 {@link BpmProcessInstanceExtDO} 记录 |
| 19 | * | 19 | * |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/BpmTaskEventListener.java
| 1 | package cn.iocoder.yudao.module.bpm.framework.flowable.core.listener; | 1 | package cn.iocoder.yudao.module.bpm.framework.flowable.core.listener; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.collection.CollUtil; | ||
| 3 | import cn.hutool.core.util.StrUtil; | 4 | import cn.hutool.core.util.StrUtil; |
| 4 | import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmTaskExtDO; | 5 | import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmTaskExtDO; |
| 5 | import cn.iocoder.yudao.module.bpm.service.task.BpmActivityService; | 6 | import cn.iocoder.yudao.module.bpm.service.task.BpmActivityService; |
| @@ -16,6 +17,7 @@ import org.springframework.context.annotation.Lazy; | @@ -16,6 +17,7 @@ import org.springframework.context.annotation.Lazy; | ||
| 16 | import org.springframework.stereotype.Component; | 17 | import org.springframework.stereotype.Component; |
| 17 | 18 | ||
| 18 | import javax.annotation.Resource; | 19 | import javax.annotation.Resource; |
| 20 | +import java.util.List; | ||
| 19 | import java.util.Set; | 21 | import java.util.Set; |
| 20 | 22 | ||
| 21 | /** | 23 | /** |
| @@ -63,15 +65,18 @@ public class BpmTaskEventListener extends AbstractFlowableEngineEventListener { | @@ -63,15 +65,18 @@ public class BpmTaskEventListener extends AbstractFlowableEngineEventListener { | ||
| 63 | 65 | ||
| 64 | @Override | 66 | @Override |
| 65 | protected void activityCancelled(FlowableActivityCancelledEvent event) { | 67 | protected void activityCancelled(FlowableActivityCancelledEvent event) { |
| 66 | - HistoricActivityInstance activity = activityService.getHistoricActivityByExecutionId(event.getExecutionId()); | ||
| 67 | - if (activity == null) { | 68 | + List<HistoricActivityInstance> activityList = activityService.getHistoricActivityListByExecutionId(event.getExecutionId()); |
| 69 | + if (CollUtil.isEmpty(activityList)) { | ||
| 68 | log.error("[activityCancelled][使用 executionId({}) 查找不到对应的活动实例]", event.getExecutionId()); | 70 | log.error("[activityCancelled][使用 executionId({}) 查找不到对应的活动实例]", event.getExecutionId()); |
| 69 | return; | 71 | return; |
| 70 | } | 72 | } |
| 71 | - if (StrUtil.isEmpty(activity.getTaskId())) { | ||
| 72 | - return; | ||
| 73 | - } | ||
| 74 | - taskService.updateTaskExtCancel(activity.getTaskId()); | 73 | + // 遍历处理 |
| 74 | + activityList.forEach(activity -> { | ||
| 75 | + if (StrUtil.isEmpty(activity.getTaskId())) { | ||
| 76 | + return; | ||
| 77 | + } | ||
| 78 | + taskService.updateTaskExtCancel(activity.getTaskId()); | ||
| 79 | + }); | ||
| 75 | } | 80 | } |
| 76 | 81 | ||
| 77 | } | 82 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmFormServiceImpl.java
| 1 | package cn.iocoder.yudao.module.bpm.service.definition; | 1 | package cn.iocoder.yudao.module.bpm.service.definition; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.lang.Assert; | 3 | import cn.hutool.core.lang.Assert; |
| 4 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 5 | +import cn.iocoder.yudao.framework.common.util.json.JsonUtils; | ||
| 4 | import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils; | 6 | import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils; |
| 5 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormCreateReqVO; | 7 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormCreateReqVO; |
| 6 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormPageReqVO; | 8 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormPageReqVO; |
| @@ -11,9 +13,6 @@ import cn.iocoder.yudao.module.bpm.dal.mysql.definition.BpmFormMapper; | @@ -11,9 +13,6 @@ import cn.iocoder.yudao.module.bpm.dal.mysql.definition.BpmFormMapper; | ||
| 11 | import cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants; | 13 | import cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants; |
| 12 | import cn.iocoder.yudao.module.bpm.enums.definition.BpmModelFormTypeEnum; | 14 | import cn.iocoder.yudao.module.bpm.enums.definition.BpmModelFormTypeEnum; |
| 13 | import cn.iocoder.yudao.module.bpm.service.definition.dto.BpmFormFieldRespDTO; | 15 | import cn.iocoder.yudao.module.bpm.service.definition.dto.BpmFormFieldRespDTO; |
| 14 | -import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; | ||
| 15 | -import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 16 | -import cn.iocoder.yudao.framework.common.util.json.JsonUtils; | ||
| 17 | import cn.iocoder.yudao.module.bpm.service.definition.dto.BpmModelMetaInfoRespDTO; | 16 | import cn.iocoder.yudao.module.bpm.service.definition.dto.BpmModelMetaInfoRespDTO; |
| 18 | import org.springframework.stereotype.Service; | 17 | import org.springframework.stereotype.Service; |
| 19 | import org.springframework.validation.annotation.Validated; | 18 | import org.springframework.validation.annotation.Validated; |
| @@ -66,7 +65,7 @@ public class BpmFormServiceImpl implements BpmFormService { | @@ -66,7 +65,7 @@ public class BpmFormServiceImpl implements BpmFormService { | ||
| 66 | 65 | ||
| 67 | private void validateFormExists(Long id) { | 66 | private void validateFormExists(Long id) { |
| 68 | if (formMapper.selectById(id) == null) { | 67 | if (formMapper.selectById(id) == null) { |
| 69 | - throw ServiceExceptionUtil.exception(ErrorCodeConstants.FORM_NOT_EXISTS); | 68 | + throw exception(ErrorCodeConstants.FORM_NOT_EXISTS); |
| 70 | } | 69 | } |
| 71 | } | 70 | } |
| 72 | 71 | ||
| @@ -129,7 +128,7 @@ public class BpmFormServiceImpl implements BpmFormService { | @@ -129,7 +128,7 @@ public class BpmFormServiceImpl implements BpmFormService { | ||
| 129 | continue; | 128 | continue; |
| 130 | } | 129 | } |
| 131 | // 如果存在,则报错 | 130 | // 如果存在,则报错 |
| 132 | - throw ServiceExceptionUtil.exception(ErrorCodeConstants.FORM_FIELD_REPEAT, oldLabel, fieldDTO.getLabel(), fieldDTO.getVModel()); | 131 | + throw exception(ErrorCodeConstants.FORM_FIELD_REPEAT, oldLabel, fieldDTO.getLabel(), fieldDTO.getVModel()); |
| 133 | } | 132 | } |
| 134 | } | 133 | } |
| 135 | 134 |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmModelServiceImpl.java
| @@ -99,7 +99,7 @@ public class BpmModelServiceImpl implements BpmModelService { | @@ -99,7 +99,7 @@ public class BpmModelServiceImpl implements BpmModelService { | ||
| 99 | public String createModel(@Valid BpmModelCreateReqVO createReqVO, String bpmnXml) { | 99 | public String createModel(@Valid BpmModelCreateReqVO createReqVO, String bpmnXml) { |
| 100 | checkKeyNCName(createReqVO.getKey()); | 100 | checkKeyNCName(createReqVO.getKey()); |
| 101 | // 校验流程标识已经存在 | 101 | // 校验流程标识已经存在 |
| 102 | - Model keyModel = this.getModelByKey(createReqVO.getKey()); | 102 | + Model keyModel = getModelByKey(createReqVO.getKey()); |
| 103 | if (keyModel != null) { | 103 | if (keyModel != null) { |
| 104 | throw exception(MODEL_KEY_EXISTS, createReqVO.getKey()); | 104 | throw exception(MODEL_KEY_EXISTS, createReqVO.getKey()); |
| 105 | } | 105 | } |
| @@ -151,42 +151,43 @@ public class BpmModelServiceImpl implements BpmModelService { | @@ -151,42 +151,43 @@ public class BpmModelServiceImpl implements BpmModelService { | ||
| 151 | @Override | 151 | @Override |
| 152 | @Transactional(rollbackFor = Exception.class) // 因为进行多个操作,所以开启事务 | 152 | @Transactional(rollbackFor = Exception.class) // 因为进行多个操作,所以开启事务 |
| 153 | public void deployModel(String id) { | 153 | public void deployModel(String id) { |
| 154 | - // 校验流程模型存在 | 154 | + // 1.1 校验流程模型存在 |
| 155 | Model model = repositoryService.getModel(id); | 155 | Model model = repositoryService.getModel(id); |
| 156 | if (ObjectUtils.isEmpty(model)) { | 156 | if (ObjectUtils.isEmpty(model)) { |
| 157 | throw exception(MODEL_NOT_EXISTS); | 157 | throw exception(MODEL_NOT_EXISTS); |
| 158 | } | 158 | } |
| 159 | - // 校验流程图 | 159 | + // 1.2 校验流程图 |
| 160 | + // TODO 芋艿:校验流程图的有效性;例如说,是否有开始的元素,是否有结束的元素; | ||
| 160 | byte[] bpmnBytes = repositoryService.getModelEditorSource(model.getId()); | 161 | byte[] bpmnBytes = repositoryService.getModelEditorSource(model.getId()); |
| 161 | if (bpmnBytes == null) { | 162 | if (bpmnBytes == null) { |
| 162 | throw exception(MODEL_NOT_EXISTS); | 163 | throw exception(MODEL_NOT_EXISTS); |
| 163 | } | 164 | } |
| 164 | - // TODO 芋艿:校验流程图的有效性;例如说,是否有开始的元素,是否有结束的元素; | ||
| 165 | - // 校验表单已配 | 165 | + // 1.3 校验表单已配 |
| 166 | BpmFormDO form = checkFormConfig(model.getMetaInfo()); | 166 | BpmFormDO form = checkFormConfig(model.getMetaInfo()); |
| 167 | - //校验任务分配规则已配置 | 167 | + // 1.4 校验任务分配规则已配置 |
| 168 | taskAssignRuleService.checkTaskAssignRuleAllConfig(id); | 168 | taskAssignRuleService.checkTaskAssignRuleAllConfig(id); |
| 169 | 169 | ||
| 170 | + // 1.5 校验模型是否发生修改。如果未修改,则不允许创建 | ||
| 170 | BpmProcessDefinitionCreateReqDTO definitionCreateReqDTO = BpmModelConvert.INSTANCE.convert2(model, form).setBpmnBytes(bpmnBytes); | 171 | BpmProcessDefinitionCreateReqDTO definitionCreateReqDTO = BpmModelConvert.INSTANCE.convert2(model, form).setBpmnBytes(bpmnBytes); |
| 171 | - //校验模型是否发生修改。如果未修改,则不允许创建 | ||
| 172 | if (processDefinitionService.isProcessDefinitionEquals(definitionCreateReqDTO)) { // 流程定义的信息相等 | 172 | if (processDefinitionService.isProcessDefinitionEquals(definitionCreateReqDTO)) { // 流程定义的信息相等 |
| 173 | - ProcessDefinition oldProcessInstance = processDefinitionService.getProcessDefinitionByDeploymentId(model.getDeploymentId()); | ||
| 174 | - if (oldProcessInstance != null && taskAssignRuleService.isTaskAssignRulesEquals(model.getId(), oldProcessInstance.getId())) { | 173 | + ProcessDefinition oldProcessDefinition = processDefinitionService.getProcessDefinitionByDeploymentId(model.getDeploymentId()); |
| 174 | + if (oldProcessDefinition != null && taskAssignRuleService.isTaskAssignRulesEquals(model.getId(), oldProcessDefinition.getId())) { | ||
| 175 | throw exception(MODEL_DEPLOY_FAIL_TASK_INFO_EQUALS); | 175 | throw exception(MODEL_DEPLOY_FAIL_TASK_INFO_EQUALS); |
| 176 | } | 176 | } |
| 177 | } | 177 | } |
| 178 | - // 创建流程定义 | 178 | + |
| 179 | + // 2.1 创建流程定义 | ||
| 179 | String definitionId = processDefinitionService.createProcessDefinition(definitionCreateReqDTO); | 180 | String definitionId = processDefinitionService.createProcessDefinition(definitionCreateReqDTO); |
| 180 | 181 | ||
| 181 | - // 将老的流程定义进行挂起。也就是说,只有最新部署的流程定义,才可以发起任务。 | 182 | + // 2.2 将老的流程定义进行挂起。也就是说,只有最新部署的流程定义,才可以发起任务。 |
| 182 | updateProcessDefinitionSuspended(model.getDeploymentId()); | 183 | updateProcessDefinitionSuspended(model.getDeploymentId()); |
| 183 | 184 | ||
| 184 | - // 更新 model 的 deploymentId,进行关联 | 185 | + // 2.3 更新 model 的 deploymentId,进行关联 |
| 185 | ProcessDefinition definition = processDefinitionService.getProcessDefinition(definitionId); | 186 | ProcessDefinition definition = processDefinitionService.getProcessDefinition(definitionId); |
| 186 | model.setDeploymentId(definition.getDeploymentId()); | 187 | model.setDeploymentId(definition.getDeploymentId()); |
| 187 | repositoryService.saveModel(model); | 188 | repositoryService.saveModel(model); |
| 188 | 189 | ||
| 189 | - //复制任务分配规则 | 190 | + // 2.4 复制任务分配规则 |
| 190 | taskAssignRuleService.copyTaskAssignRules(id, definition.getId()); | 191 | taskAssignRuleService.copyTaskAssignRules(id, definition.getId()); |
| 191 | } | 192 | } |
| 192 | 193 |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmProcessDefinitionServiceImpl.java
| @@ -127,7 +127,8 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ | @@ -127,7 +127,8 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ | ||
| 127 | .deploy(); | 127 | .deploy(); |
| 128 | 128 | ||
| 129 | // 设置 ProcessDefinition 的 category 分类 | 129 | // 设置 ProcessDefinition 的 category 分类 |
| 130 | - ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().deploymentId(deploy.getId()).singleResult(); | 130 | + ProcessDefinition definition = repositoryService.createProcessDefinitionQuery() |
| 131 | + .deploymentId(deploy.getId()).singleResult(); | ||
| 131 | repositoryService.setProcessDefinitionCategory(definition.getId(), createReqDTO.getCategory()); | 132 | repositoryService.setProcessDefinitionCategory(definition.getId(), createReqDTO.getCategory()); |
| 132 | // 注意 1,ProcessDefinition 的 key 和 name 是通过 BPMN 中的 <bpmn2:process /> 的 id 和 name 决定 | 133 | // 注意 1,ProcessDefinition 的 key 和 name 是通过 BPMN 中的 <bpmn2:process /> 的 id 和 name 决定 |
| 133 | // 注意 2,目前该项目的设计上,需要保证 Model、Deployment、ProcessDefinition 使用相同的 key,保证关联性。 | 134 | // 注意 2,目前该项目的设计上,需要保证 Model、Deployment、ProcessDefinition 使用相同的 key,保证关联性。 |
| @@ -198,7 +199,7 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ | @@ -198,7 +199,7 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ | ||
| 198 | // 校验 BPMN XML 信息 | 199 | // 校验 BPMN XML 信息 |
| 199 | BpmnModel newModel = buildBpmnModel(createReqDTO.getBpmnBytes()); | 200 | BpmnModel newModel = buildBpmnModel(createReqDTO.getBpmnBytes()); |
| 200 | BpmnModel oldModel = getBpmnModel(oldProcessDefinition.getId()); | 201 | BpmnModel oldModel = getBpmnModel(oldProcessDefinition.getId()); |
| 201 | - //TODO 貌似 flowable 不修改这个也不同。需要看看。 sourceSystemId 不同 | 202 | + // TODO 貌似 flowable 不修改这个也不同。需要看看。 sourceSystemId 不同 |
| 202 | if (FlowableUtils.equals(oldModel, newModel)) { | 203 | if (FlowableUtils.equals(oldModel, newModel)) { |
| 203 | return false; | 204 | return false; |
| 204 | } | 205 | } |
| @@ -218,8 +219,6 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ | @@ -218,8 +219,6 @@ public class BpmProcessDefinitionServiceImpl implements BpmProcessDefinitionServ | ||
| 218 | return converter.convertToBpmnModel(new BytesStreamSource(bpmnBytes), true, true); | 219 | return converter.convertToBpmnModel(new BytesStreamSource(bpmnBytes), true, true); |
| 219 | } | 220 | } |
| 220 | 221 | ||
| 221 | - | ||
| 222 | - | ||
| 223 | @Override | 222 | @Override |
| 224 | public BpmProcessDefinitionExtDO getProcessDefinitionExt(String id) { | 223 | public BpmProcessDefinitionExtDO getProcessDefinitionExt(String id) { |
| 225 | return processDefinitionMapper.selectByProcessDefinitionId(id); | 224 | return processDefinitionMapper.selectByProcessDefinitionId(id); |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmActivityService.java
| @@ -26,6 +26,6 @@ public interface BpmActivityService { | @@ -26,6 +26,6 @@ public interface BpmActivityService { | ||
| 26 | * @param executionId 执行编号 | 26 | * @param executionId 执行编号 |
| 27 | * @return 活动实例 | 27 | * @return 活动实例 |
| 28 | */ | 28 | */ |
| 29 | - HistoricActivityInstance getHistoricActivityByExecutionId(String executionId); | 29 | + List<HistoricActivityInstance> getHistoricActivityListByExecutionId(String executionId); |
| 30 | 30 | ||
| 31 | } | 31 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmActivityServiceImpl.java
| @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.bpm.service.task; | @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.bpm.service.task; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.activity.BpmActivityRespVO; | 3 | import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.activity.BpmActivityRespVO; |
| 4 | import cn.iocoder.yudao.module.bpm.convert.task.BpmActivityConvert; | 4 | import cn.iocoder.yudao.module.bpm.convert.task.BpmActivityConvert; |
| 5 | -import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmActivityMapper; | ||
| 6 | import lombok.extern.slf4j.Slf4j; | 5 | import lombok.extern.slf4j.Slf4j; |
| 7 | import org.flowable.engine.HistoryService; | 6 | import org.flowable.engine.HistoryService; |
| 8 | import org.flowable.engine.history.HistoricActivityInstance; | 7 | import org.flowable.engine.history.HistoricActivityInstance; |
| @@ -25,8 +24,6 @@ public class BpmActivityServiceImpl implements BpmActivityService { | @@ -25,8 +24,6 @@ public class BpmActivityServiceImpl implements BpmActivityService { | ||
| 25 | 24 | ||
| 26 | @Resource | 25 | @Resource |
| 27 | private HistoryService historyService; | 26 | private HistoryService historyService; |
| 28 | - @Resource | ||
| 29 | - private BpmActivityMapper bpmActivityMapper; | ||
| 30 | 27 | ||
| 31 | @Override | 28 | @Override |
| 32 | public List<BpmActivityRespVO> getActivityListByProcessInstanceId(String processInstanceId) { | 29 | public List<BpmActivityRespVO> getActivityListByProcessInstanceId(String processInstanceId) { |
| @@ -36,8 +33,8 @@ public class BpmActivityServiceImpl implements BpmActivityService { | @@ -36,8 +33,8 @@ public class BpmActivityServiceImpl implements BpmActivityService { | ||
| 36 | } | 33 | } |
| 37 | 34 | ||
| 38 | @Override | 35 | @Override |
| 39 | - public HistoricActivityInstance getHistoricActivityByExecutionId(String executionId) { | ||
| 40 | - return historyService.createHistoricActivityInstanceQuery().executionId(executionId).singleResult(); | 36 | + public List<HistoricActivityInstance> getHistoricActivityListByExecutionId(String executionId) { |
| 37 | + return historyService.createHistoricActivityInstanceQuery().executionId(executionId).list(); | ||
| 41 | } | 38 | } |
| 42 | 39 | ||
| 43 | } | 40 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceService.java
| @@ -144,5 +144,4 @@ public interface BpmProcessInstanceService { | @@ -144,5 +144,4 @@ public interface BpmProcessInstanceService { | ||
| 144 | */ | 144 | */ |
| 145 | void updateProcessInstanceExtReject(String id, String reason); | 145 | void updateProcessInstanceExtReject(String id, String reason); |
| 146 | 146 | ||
| 147 | - | ||
| 148 | } | 147 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java
| 1 | -package cn.iocoder.yudao.module.bpm.service.task; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.number.NumberUtils; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.*; import cn.iocoder.yudao.module.bpm.convert.task.BpmProcessInstanceConvert; import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO; import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmProcessInstanceExtMapper; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceDeleteReasonEnum; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceStatusEnum; import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEventPublisher; import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService; import cn.iocoder.yudao.module.bpm.service.message.BpmMessageService; import cn.iocoder.yudao.module.system.api.dept.DeptApi; import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import lombok.extern.slf4j.Slf4j; import org.flowable.engine.HistoryService; import org.flowable.engine.RuntimeService; import org.flowable.engine.delegate.event.FlowableCancelledEvent; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import javax.validation.Valid; import java.util.*; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*; /** * 流程实例 Service 实现类 * * ProcessDefinition & ProcessInstance & Execution & Task 的关系: * 1. <a href="https://blog.csdn.net/bobozai86/article/details/105210414" /> * * HistoricProcessInstance & ProcessInstance 的关系: * 1. <a href=" https://my.oschina.net/843294669/blog/71902" /> * * 简单来说,前者 = 历史 + 运行中的流程实例,后者仅是运行中的流程实例 * * @author 芋道源码 */ @Service @Validated @Slf4j public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService { @Resource private RuntimeService runtimeService; @Resource private BpmProcessInstanceExtMapper processInstanceExtMapper; @Resource @Lazy // 解决循环依赖 private BpmTaskService taskService; @Resource private BpmProcessDefinitionService processDefinitionService; @Resource private HistoryService historyService; @Resource private AdminUserApi adminUserApi; @Resource private DeptApi deptApi; @Resource private BpmProcessInstanceResultEventPublisher processInstanceResultEventPublisher; @Resource private BpmMessageService messageService; @Override public ProcessInstance getProcessInstance(String id) { return runtimeService.createProcessInstanceQuery().processInstanceId(id).singleResult(); } @Override public List<ProcessInstance> getProcessInstances(Set<String> ids) { return runtimeService.createProcessInstanceQuery().processInstanceIds(ids).list(); } @Override public PageResult<BpmProcessInstancePageItemRespVO> getMyProcessInstancePage(Long userId, BpmProcessInstanceMyPageReqVO pageReqVO) { // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页 PageResult<BpmProcessInstanceExtDO> pageResult = processInstanceExtMapper.selectPage(userId, pageReqVO); if (CollUtil.isEmpty(pageResult.getList())) { return new PageResult<>(pageResult.getTotal()); } // 获得流程 Task Map List<String> processInstanceIds = convertList(pageResult.getList(), BpmProcessInstanceExtDO::getProcessInstanceId); Map<String, List<Task>> taskMap = taskService.getTaskMapByProcessInstanceIds(processInstanceIds); // 转换返回 return BpmProcessInstanceConvert.INSTANCE.convertPage(pageResult, taskMap); } @Override @Transactional(rollbackFor = Exception.class) public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqVO createReqVO) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getProcessDefinition(createReqVO.getProcessDefinitionId()); // 发起流程 return createProcessInstance0(userId, definition, createReqVO.getVariables(), null); } @Override public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqDTO createReqDTO) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getActiveProcessDefinition(createReqDTO.getProcessDefinitionKey()); // 发起流程 return createProcessInstance0(userId, definition, createReqDTO.getVariables(), createReqDTO.getBusinessKey()); } @Override public BpmProcessInstanceRespVO getProcessInstanceVO(String id) { // 获得流程实例 HistoricProcessInstance processInstance = getHistoricProcessInstance(id); if (processInstance == null) { return null; } BpmProcessInstanceExtDO processInstanceExt = processInstanceExtMapper.selectByProcessInstanceId(id); Assert.notNull(processInstanceExt, "流程实例拓展({}) 不存在", id); // 获得流程定义 ProcessDefinition processDefinition = processDefinitionService .getProcessDefinition(processInstance.getProcessDefinitionId()); Assert.notNull(processDefinition, "流程定义({}) 不存在", processInstance.getProcessDefinitionId()); BpmProcessDefinitionExtDO processDefinitionExt = processDefinitionService.getProcessDefinitionExt( processInstance.getProcessDefinitionId()); Assert.notNull(processDefinitionExt, "流程定义拓展({}) 不存在", id); String bpmnXml = processDefinitionService.getProcessDefinitionBpmnXML(processInstance.getProcessDefinitionId()); // 获得 User AdminUserRespDTO startUser = adminUserApi.getUser(NumberUtils.parseLong(processInstance.getStartUserId())); DeptRespDTO dept = null; if (startUser != null) { dept = deptApi.getDept(startUser.getDeptId()); } // 拼接结果 return BpmProcessInstanceConvert.INSTANCE.convert2(processInstance, processInstanceExt, processDefinition, processDefinitionExt, bpmnXml, startUser, dept); } @Override public void cancelProcessInstance(Long userId, @Valid BpmProcessInstanceCancelReqVO cancelReqVO) { // 校验流程实例存在 ProcessInstance instance = getProcessInstance(cancelReqVO.getId()); if (instance == null) { throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS); } // 只能取消自己的 if (!Objects.equals(instance.getStartUserId(), String.valueOf(userId))) { throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF); } // 通过删除流程实例,实现流程实例的取消, // 删除流程实例,正则执行任务 ACT_RU_TASK. 任务会被删除。通过历史表查询 deleteProcessInstance(cancelReqVO.getId(), BpmProcessInstanceDeleteReasonEnum.CANCEL_TASK.format(cancelReqVO.getReason())); } /** * 获得历史的流程实例 * * @param id 流程实例的编号 * @return 历史的流程实例 */ @Override public HistoricProcessInstance getHistoricProcessInstance(String id) { return historyService.createHistoricProcessInstanceQuery().processInstanceId(id).singleResult(); } @Override public List<HistoricProcessInstance> getHistoricProcessInstances(Set<String> ids) { return historyService.createHistoricProcessInstanceQuery().processInstanceIds(ids).list(); } @Override public void createProcessInstanceExt(ProcessInstance instance) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getProcessDefinition2(instance.getProcessDefinitionId()); // 插入 BpmProcessInstanceExtDO 对象 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(instance.getId()) .setProcessDefinitionId(definition.getId()) .setName(instance.getProcessDefinitionName()) .setStartUserId(Long.valueOf(instance.getStartUserId())) .setCategory(definition.getCategory()) .setStatus(BpmProcessInstanceStatusEnum.RUNNING.getStatus()) .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); processInstanceExtMapper.insert(instanceExtDO); } @Override public void updateProcessInstanceExtCancel(FlowableCancelledEvent event) { // 判断是否为 Reject 不通过。如果是,则不进行更新. // 因为,updateProcessInstanceExtReject 方法,已经进行更新了 if (BpmProcessInstanceDeleteReasonEnum.isRejectReason((String)event.getCause())) { return; } // 需要主动查询,因为 instance 只有 id 属性 // 另外,此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance HistoricProcessInstance processInstance = getHistoricProcessInstance(event.getProcessInstanceId()); // 更新拓展表 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(event.getProcessInstanceId()) .setEndTime(new Date()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置 .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.CANCEL.getResult()); processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } @Override public void updateProcessInstanceExtComplete(ProcessInstance instance) { // 需要主动查询,因为 instance 只有 id 属性 // 另外,此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance HistoricProcessInstance processInstance = getHistoricProcessInstance(instance.getId()); // 更新拓展表 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(instance.getProcessInstanceId()) .setEndTime(new Date()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置 .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.APPROVE.getResult()); // 如果正常完全,说明审批通过 processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程被通过的消息 messageService.sendMessageWhenProcessInstanceApprove(BpmProcessInstanceConvert.INSTANCE.convert2ApprovedReq(instance)); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } @Transactional(rollbackFor = Exception.class) public void updateProcessInstanceExtReject(String id, String reason) { // 需要主动查询,因为 instance 只有 id 属性 ProcessInstance processInstance = getProcessInstance(id); // 删除流程实例,以实现驳回任务时,取消整个审批流程 deleteProcessInstance(id, StrUtil.format(BpmProcessInstanceDeleteReasonEnum.REJECT_TASK.format(reason))); // 更新 status + result // 注意,不能和上面的逻辑更换位置。因为 deleteProcessInstance 会触发流程的取消,进而调用 updateProcessInstanceExtCancel 方法, // 设置 result 为 BpmProcessInstanceStatusEnum.CANCEL,显然和 result 不一定是一致的 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO().setProcessInstanceId(id) .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.REJECT.getResult()); processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程被不通过的消息 messageService.sendMessageWhenProcessInstanceReject(BpmProcessInstanceConvert.INSTANCE.convert2RejectReq(processInstance, reason)); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } private void deleteProcessInstance(String id, String reason) { runtimeService.deleteProcessInstance(id, reason); } private String createProcessInstance0(Long userId, ProcessDefinition definition, Map<String, Object> variables, String businessKey) { // 校验流程定义 if (definition == null) { throw exception(PROCESS_DEFINITION_NOT_EXISTS); } if (definition.isSuspended()) { throw exception(PROCESS_DEFINITION_IS_SUSPENDED); } // 创建流程实例 ProcessInstance instance = runtimeService.startProcessInstanceById(definition.getId(), businessKey, variables); // 设置流程名字 runtimeService.setProcessInstanceName(instance.getId(), definition.getName()); // 补全流程实例的拓展表 processInstanceExtMapper.updateByProcessInstanceId(new BpmProcessInstanceExtDO().setProcessInstanceId(instance.getId()) .setFormVariables(variables)); return instance.getId(); } } | ||
| 2 | \ No newline at end of file | 1 | \ No newline at end of file |
| 2 | +package cn.iocoder.yudao.module.bpm.service.task; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.number.NumberUtils; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.*; import cn.iocoder.yudao.module.bpm.convert.task.BpmProcessInstanceConvert; import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO; import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmProcessInstanceExtMapper; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceDeleteReasonEnum; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceStatusEnum; import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEventPublisher; import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService; import cn.iocoder.yudao.module.bpm.service.message.BpmMessageService; import cn.iocoder.yudao.module.system.api.dept.DeptApi; import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import lombok.extern.slf4j.Slf4j; import org.flowable.engine.HistoryService; import org.flowable.engine.RuntimeService; import org.flowable.engine.delegate.event.FlowableCancelledEvent; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import javax.validation.Valid; import java.util.*; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*; /** * 流程实例 Service 实现类 * * ProcessDefinition & ProcessInstance & Execution & Task 的关系: * 1. <a href="https://blog.csdn.net/bobozai86/article/details/105210414" /> * * HistoricProcessInstance & ProcessInstance 的关系: * 1. <a href=" https://my.oschina.net/843294669/blog/71902" /> * * 简单来说,前者 = 历史 + 运行中的流程实例,后者仅是运行中的流程实例 * * @author 芋道源码 */ @Service @Validated @Slf4j public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService { @Resource private RuntimeService runtimeService; @Resource private BpmProcessInstanceExtMapper processInstanceExtMapper; @Resource @Lazy // 解决循环依赖 private BpmTaskService taskService; @Resource private BpmProcessDefinitionService processDefinitionService; @Resource private HistoryService historyService; @Resource private AdminUserApi adminUserApi; @Resource private DeptApi deptApi; @Resource private BpmProcessInstanceResultEventPublisher processInstanceResultEventPublisher; @Resource private BpmMessageService messageService; @Override public ProcessInstance getProcessInstance(String id) { return runtimeService.createProcessInstanceQuery().processInstanceId(id).singleResult(); } @Override public List<ProcessInstance> getProcessInstances(Set<String> ids) { return runtimeService.createProcessInstanceQuery().processInstanceIds(ids).list(); } @Override public PageResult<BpmProcessInstancePageItemRespVO> getMyProcessInstancePage(Long userId, BpmProcessInstanceMyPageReqVO pageReqVO) { // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页 PageResult<BpmProcessInstanceExtDO> pageResult = processInstanceExtMapper.selectPage(userId, pageReqVO); if (CollUtil.isEmpty(pageResult.getList())) { return new PageResult<>(pageResult.getTotal()); } // 获得流程 Task Map List<String> processInstanceIds = convertList(pageResult.getList(), BpmProcessInstanceExtDO::getProcessInstanceId); Map<String, List<Task>> taskMap = taskService.getTaskMapByProcessInstanceIds(processInstanceIds); // 转换返回 return BpmProcessInstanceConvert.INSTANCE.convertPage(pageResult, taskMap); } @Override @Transactional(rollbackFor = Exception.class) public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqVO createReqVO) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getProcessDefinition(createReqVO.getProcessDefinitionId()); // 发起流程 return createProcessInstance0(userId, definition, createReqVO.getVariables(), null); } @Override public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqDTO createReqDTO) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getActiveProcessDefinition(createReqDTO.getProcessDefinitionKey()); // 发起流程 return createProcessInstance0(userId, definition, createReqDTO.getVariables(), createReqDTO.getBusinessKey()); } @Override public BpmProcessInstanceRespVO getProcessInstanceVO(String id) { // 获得流程实例 HistoricProcessInstance processInstance = getHistoricProcessInstance(id); if (processInstance == null) { return null; } BpmProcessInstanceExtDO processInstanceExt = processInstanceExtMapper.selectByProcessInstanceId(id); Assert.notNull(processInstanceExt, "流程实例拓展({}) 不存在", id); // 获得流程定义 ProcessDefinition processDefinition = processDefinitionService .getProcessDefinition(processInstance.getProcessDefinitionId()); Assert.notNull(processDefinition, "流程定义({}) 不存在", processInstance.getProcessDefinitionId()); BpmProcessDefinitionExtDO processDefinitionExt = processDefinitionService.getProcessDefinitionExt( processInstance.getProcessDefinitionId()); Assert.notNull(processDefinitionExt, "流程定义拓展({}) 不存在", id); String bpmnXml = processDefinitionService.getProcessDefinitionBpmnXML(processInstance.getProcessDefinitionId()); // 获得 User AdminUserRespDTO startUser = adminUserApi.getUser(NumberUtils.parseLong(processInstance.getStartUserId())); DeptRespDTO dept = null; if (startUser != null) { dept = deptApi.getDept(startUser.getDeptId()); } // 拼接结果 return BpmProcessInstanceConvert.INSTANCE.convert2(processInstance, processInstanceExt, processDefinition, processDefinitionExt, bpmnXml, startUser, dept); } @Override public void cancelProcessInstance(Long userId, @Valid BpmProcessInstanceCancelReqVO cancelReqVO) { // 校验流程实例存在 ProcessInstance instance = getProcessInstance(cancelReqVO.getId()); if (instance == null) { throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS); } // 只能取消自己的 if (!Objects.equals(instance.getStartUserId(), String.valueOf(userId))) { throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF); } // 通过删除流程实例,实现流程实例的取消, // 删除流程实例,正则执行任务 ACT_RU_TASK. 任务会被删除。通过历史表查询 deleteProcessInstance(cancelReqVO.getId(), BpmProcessInstanceDeleteReasonEnum.CANCEL_TASK.format(cancelReqVO.getReason())); } /** * 获得历史的流程实例 * * @param id 流程实例的编号 * @return 历史的流程实例 */ @Override public HistoricProcessInstance getHistoricProcessInstance(String id) { return historyService.createHistoricProcessInstanceQuery().processInstanceId(id).singleResult(); } @Override public List<HistoricProcessInstance> getHistoricProcessInstances(Set<String> ids) { return historyService.createHistoricProcessInstanceQuery().processInstanceIds(ids).list(); } @Override public void createProcessInstanceExt(ProcessInstance instance) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getProcessDefinition2(instance.getProcessDefinitionId()); // 插入 BpmProcessInstanceExtDO 对象 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(instance.getId()) .setProcessDefinitionId(definition.getId()) .setName(instance.getProcessDefinitionName()) .setStartUserId(Long.valueOf(instance.getStartUserId())) .setCategory(definition.getCategory()) .setStatus(BpmProcessInstanceStatusEnum.RUNNING.getStatus()) .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); processInstanceExtMapper.insert(instanceExtDO); } @Override public void updateProcessInstanceExtCancel(FlowableCancelledEvent event) { // 判断是否为 Reject 不通过。如果是,则不进行更新. // 因为,updateProcessInstanceExtReject 方法,已经进行更新了 if (BpmProcessInstanceDeleteReasonEnum.isRejectReason((String)event.getCause())) { return; } // 需要主动查询,因为 instance 只有 id 属性 // 另外,此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance HistoricProcessInstance processInstance = getHistoricProcessInstance(event.getProcessInstanceId()); // 更新拓展表 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(event.getProcessInstanceId()) .setEndTime(new Date()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置 .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.CANCEL.getResult()); processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } @Override public void updateProcessInstanceExtComplete(ProcessInstance instance) { // 需要主动查询,因为 instance 只有 id 属性 // 另外,此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance HistoricProcessInstance processInstance = getHistoricProcessInstance(instance.getId()); // 更新拓展表 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(instance.getProcessInstanceId()) .setEndTime(new Date()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置 .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.APPROVE.getResult()); // 如果正常完全,说明审批通过 processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程被通过的消息 messageService.sendMessageWhenProcessInstanceApprove(BpmProcessInstanceConvert.INSTANCE.convert2ApprovedReq(instance)); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } @Transactional(rollbackFor = Exception.class) public void updateProcessInstanceExtReject(String id, String reason) { // 需要主动查询,因为 instance 只有 id 属性 ProcessInstance processInstance = getProcessInstance(id); // 删除流程实例,以实现驳回任务时,取消整个审批流程 deleteProcessInstance(id, StrUtil.format(BpmProcessInstanceDeleteReasonEnum.REJECT_TASK.format(reason))); // 更新 status + result // 注意,不能和上面的逻辑更换位置。因为 deleteProcessInstance 会触发流程的取消,进而调用 updateProcessInstanceExtCancel 方法, // 设置 result 为 BpmProcessInstanceStatusEnum.CANCEL,显然和 result 不一定是一致的 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO().setProcessInstanceId(id) .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.REJECT.getResult()); processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程被不通过的消息 messageService.sendMessageWhenProcessInstanceReject(BpmProcessInstanceConvert.INSTANCE.convert2RejectReq(processInstance, reason)); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } private void deleteProcessInstance(String id, String reason) { runtimeService.deleteProcessInstance(id, reason); } private String createProcessInstance0(Long userId, ProcessDefinition definition, Map<String, Object> variables, String businessKey) { // 校验流程定义 if (definition == null) { throw exception(PROCESS_DEFINITION_NOT_EXISTS); } if (definition.isSuspended()) { throw exception(PROCESS_DEFINITION_IS_SUSPENDED); } // 创建流程实例 ProcessInstance instance = runtimeService.startProcessInstanceById(definition.getId(), businessKey, variables); // 设置流程名字 runtimeService.setProcessInstanceName(instance.getId(), definition.getName()); // 补全流程实例的拓展表 processInstanceExtMapper.updateByProcessInstanceId(new BpmProcessInstanceExtDO().setProcessInstanceId(instance.getId()) .setFormVariables(variables)); return instance.getId(); } } | ||
| 3 | \ No newline at end of file | 3 | \ No newline at end of file |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
| @@ -7,10 +7,7 @@ import cn.iocoder.yudao.framework.common.util.number.NumberUtils; | @@ -7,10 +7,7 @@ import cn.iocoder.yudao.framework.common.util.number.NumberUtils; | ||
| 7 | import cn.iocoder.yudao.framework.common.util.object.PageUtils; | 7 | import cn.iocoder.yudao.framework.common.util.object.PageUtils; |
| 8 | import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*; | 8 | import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*; |
| 9 | import cn.iocoder.yudao.module.bpm.convert.task.BpmTaskConvert; | 9 | import cn.iocoder.yudao.module.bpm.convert.task.BpmTaskConvert; |
| 10 | -import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmTaskAssignRuleDO; | ||
| 11 | import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmTaskExtDO; | 10 | import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmTaskExtDO; |
| 12 | -import cn.iocoder.yudao.module.bpm.dal.mysql.definition.BpmTaskAssignRuleMapper; | ||
| 13 | -import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmActivityMapper; | ||
| 14 | import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmTaskExtMapper; | 11 | import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmTaskExtMapper; |
| 15 | import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceDeleteReasonEnum; | 12 | import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceDeleteReasonEnum; |
| 16 | import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; | 13 | import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; |
| @@ -67,10 +64,6 @@ public class BpmTaskServiceImpl implements BpmTaskService { | @@ -67,10 +64,6 @@ public class BpmTaskServiceImpl implements BpmTaskService { | ||
| 67 | private BpmTaskExtMapper taskExtMapper; | 64 | private BpmTaskExtMapper taskExtMapper; |
| 68 | @Resource | 65 | @Resource |
| 69 | private BpmMessageService messageService; | 66 | private BpmMessageService messageService; |
| 70 | - @Resource | ||
| 71 | - private BpmTaskAssignRuleMapper taskAssignRuleMapper; | ||
| 72 | - @Resource | ||
| 73 | - private BpmActivityMapper bpmActivityMapper; | ||
| 74 | 67 | ||
| 75 | @Override | 68 | @Override |
| 76 | public PageResult<BpmTaskTodoPageItemRespVO> getTodoTaskPage(Long userId, BpmTaskTodoPageReqVO pageVO) { | 69 | public PageResult<BpmTaskTodoPageItemRespVO> getTodoTaskPage(Long userId, BpmTaskTodoPageReqVO pageVO) { |
| @@ -194,10 +187,6 @@ public class BpmTaskServiceImpl implements BpmTaskService { | @@ -194,10 +187,6 @@ public class BpmTaskServiceImpl implements BpmTaskService { | ||
| 194 | taskExtMapper.updateByTaskId( | 187 | taskExtMapper.updateByTaskId( |
| 195 | new BpmTaskExtDO().setTaskId(task.getId()).setResult(BpmProcessInstanceResultEnum.APPROVE.getResult()) | 188 | new BpmTaskExtDO().setTaskId(task.getId()).setResult(BpmProcessInstanceResultEnum.APPROVE.getResult()) |
| 196 | .setReason(reqVO.getReason())); | 189 | .setReason(reqVO.getReason())); |
| 197 | - // 判断任务是否为或签,或签时删除其余不用审批的任务 | ||
| 198 | - List<BpmTaskAssignRuleDO> bpmTaskAssignRuleList = | ||
| 199 | - taskAssignRuleMapper.selectListByProcessDefinitionId(task.getProcessDefinitionId(), | ||
| 200 | - task.getTaskDefinitionKey()); | ||
| 201 | } | 190 | } |
| 202 | 191 | ||
| 203 | @Override | 192 | @Override |
| @@ -216,7 +205,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { | @@ -216,7 +205,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { | ||
| 216 | // 更新任务拓展表为不通过 | 205 | // 更新任务拓展表为不通过 |
| 217 | taskExtMapper.updateByTaskId( | 206 | taskExtMapper.updateByTaskId( |
| 218 | new BpmTaskExtDO().setTaskId(task.getId()).setResult(BpmProcessInstanceResultEnum.REJECT.getResult()) | 207 | new BpmTaskExtDO().setTaskId(task.getId()).setResult(BpmProcessInstanceResultEnum.REJECT.getResult()) |
| 219 | - .setReason(reqVO.getReason())); | 208 | + .setEndTime(new Date()).setReason(reqVO.getReason())); |
| 220 | } | 209 | } |
| 221 | 210 | ||
| 222 | @Override | 211 | @Override |
yudao-module-bpm/yudao-module-bpm-biz/src/test/java/cn/iocoder/yudao/module/bpm/service/definition/BpmUserGroupServiceTest.java
| @@ -17,6 +17,9 @@ import org.springframework.context.annotation.Import; | @@ -17,6 +17,9 @@ import org.springframework.context.annotation.Import; | ||
| 17 | 17 | ||
| 18 | import javax.annotation.Resource; | 18 | import javax.annotation.Resource; |
| 19 | 19 | ||
| 20 | +import java.util.Date; | ||
| 21 | + | ||
| 22 | +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; | ||
| 20 | import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; | 23 | import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; |
| 21 | import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.USER_GROUP_NOT_EXISTS; | 24 | import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.USER_GROUP_NOT_EXISTS; |
| 22 | 25 | ||
| @@ -116,8 +119,7 @@ public class BpmUserGroupServiceTest extends BaseDbUnitTest { | @@ -116,8 +119,7 @@ public class BpmUserGroupServiceTest extends BaseDbUnitTest { | ||
| 116 | BpmUserGroupPageReqVO reqVO = new BpmUserGroupPageReqVO(); | 119 | BpmUserGroupPageReqVO reqVO = new BpmUserGroupPageReqVO(); |
| 117 | reqVO.setName("源码"); | 120 | reqVO.setName("源码"); |
| 118 | reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); | 121 | reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); |
| 119 | - reqVO.setBeginCreateTime(DateUtils.buildTime(2021, 11, 10)); | ||
| 120 | - reqVO.setEndCreateTime(DateUtils.buildTime(2021, 11, 12)); | 122 | + reqVO.setCreateTime((new Date[]{buildTime(2021, 11, 10),buildTime(2021, 11, 12)})); |
| 121 | 123 | ||
| 122 | // 调用 | 124 | // 调用 |
| 123 | PageResult<BpmUserGroupDO> pageResult = userGroupService.getUserGroupPage(reqVO); | 125 | PageResult<BpmUserGroupDO> pageResult = userGroupService.getUserGroupPage(reqVO); |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/codegen/vo/table/CodegenTablePageReqVO.java
| @@ -24,12 +24,8 @@ public class CodegenTablePageReqVO extends PageParam { | @@ -24,12 +24,8 @@ public class CodegenTablePageReqVO extends PageParam { | ||
| 24 | @ApiModelProperty(value = "表描述", example = "芋道", notes = "模糊匹配") | 24 | @ApiModelProperty(value = "表描述", example = "芋道", notes = "模糊匹配") |
| 25 | private String tableComment; | 25 | private String tableComment; |
| 26 | 26 | ||
| 27 | - @ApiModelProperty(value = "开始创建时间", example = "2020-10-24 00:00:00") | 27 | + @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]") |
| 28 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 28 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 29 | - private Date beginCreateTime; | ||
| 30 | - | ||
| 31 | - @ApiModelProperty(value = "结束创建时间", example = "2020-10-24 23:59:59") | ||
| 32 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 33 | - private Date endCreateTime; | 29 | + private Date[] createTime; |
| 34 | 30 | ||
| 35 | } | 31 | } |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigExportReqVO.java
| @@ -22,12 +22,8 @@ public class ConfigExportReqVO { | @@ -22,12 +22,8 @@ public class ConfigExportReqVO { | ||
| 22 | @ApiModelProperty(value = "参数类型", example = "1", notes = "参见 SysConfigTypeEnum 枚举") | 22 | @ApiModelProperty(value = "参数类型", example = "1", notes = "参见 SysConfigTypeEnum 枚举") |
| 23 | private Integer type; | 23 | private Integer type; |
| 24 | 24 | ||
| 25 | - @ApiModelProperty(value = "开始时间", example = "2020-10-24 00:00:00") | 25 | + @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]") |
| 26 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 26 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 27 | - private Date beginTime; | ||
| 28 | - | ||
| 29 | - @ApiModelProperty(value = "结束时间", example = "2020-10-24 23:59:59") | ||
| 30 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 31 | - private Date endTime; | 27 | + private Date[] createTime; |
| 32 | 28 | ||
| 33 | } | 29 | } |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigPageReqVO.java
| @@ -27,12 +27,8 @@ public class ConfigPageReqVO extends PageParam { | @@ -27,12 +27,8 @@ public class ConfigPageReqVO extends PageParam { | ||
| 27 | @ApiModelProperty(value = "参数类型", example = "1", notes = "参见 SysConfigTypeEnum 枚举") | 27 | @ApiModelProperty(value = "参数类型", example = "1", notes = "参见 SysConfigTypeEnum 枚举") |
| 28 | private Integer type; | 28 | private Integer type; |
| 29 | 29 | ||
| 30 | - @ApiModelProperty(value = "开始时间", example = "2020-10-24 00:00:00") | 30 | + @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]") |
| 31 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 31 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 32 | - private Date beginTime; | ||
| 33 | - | ||
| 34 | - @ApiModelProperty(value = "结束时间", example = "2020-10-24 23:59:59") | ||
| 35 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 36 | - private Date endTime; | 32 | + private Date[] createTime; |
| 37 | 33 | ||
| 38 | } | 34 | } |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/config/FileConfigPageReqVO.java
| @@ -25,11 +25,7 @@ public class FileConfigPageReqVO extends PageParam { | @@ -25,11 +25,7 @@ public class FileConfigPageReqVO extends PageParam { | ||
| 25 | private Integer storage; | 25 | private Integer storage; |
| 26 | 26 | ||
| 27 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 27 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 28 | - @ApiModelProperty(value = "开始创建时间") | ||
| 29 | - private Date beginCreateTime; | ||
| 30 | - | ||
| 31 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 32 | - @ApiModelProperty(value = "结束创建时间") | ||
| 33 | - private Date endCreateTime; | 28 | + @ApiModelProperty(value = "创建时间") |
| 29 | + private Date[] createTime; | ||
| 34 | 30 | ||
| 35 | } | 31 | } |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/file/FilePageReqVO.java
| @@ -25,11 +25,7 @@ public class FilePageReqVO extends PageParam { | @@ -25,11 +25,7 @@ public class FilePageReqVO extends PageParam { | ||
| 25 | private String type; | 25 | private String type; |
| 26 | 26 | ||
| 27 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 27 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 28 | - @ApiModelProperty(value = "开始创建时间") | ||
| 29 | - private Date beginCreateTime; | ||
| 30 | - | ||
| 31 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 32 | - @ApiModelProperty(value = "结束创建时间") | ||
| 33 | - private Date endCreateTime; | 28 | + @ApiModelProperty(value = "创建时间") |
| 29 | + private Date[] createTime; | ||
| 34 | 30 | ||
| 35 | } | 31 | } |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogExportReqVO.java
| @@ -26,12 +26,8 @@ public class ApiAccessLogExportReqVO { | @@ -26,12 +26,8 @@ public class ApiAccessLogExportReqVO { | ||
| 26 | private String requestUrl; | 26 | private String requestUrl; |
| 27 | 27 | ||
| 28 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 28 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 29 | - @ApiModelProperty(value = "开始开始请求时间") | ||
| 30 | - private Date beginBeginTime; | ||
| 31 | - | ||
| 32 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 33 | - @ApiModelProperty(value = "结束开始请求时间") | ||
| 34 | - private Date endBeginTime; | 29 | + @ApiModelProperty(value = "开始请求时间") |
| 30 | + private Date[] beginTime; | ||
| 35 | 31 | ||
| 36 | @ApiModelProperty(value = "执行时长", example = "100", notes = "大于等于,单位:毫秒") | 32 | @ApiModelProperty(value = "执行时长", example = "100", notes = "大于等于,单位:毫秒") |
| 37 | private Integer duration; | 33 | private Integer duration; |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogPageReqVO.java
| @@ -31,12 +31,8 @@ public class ApiAccessLogPageReqVO extends PageParam { | @@ -31,12 +31,8 @@ public class ApiAccessLogPageReqVO extends PageParam { | ||
| 31 | private String requestUrl; | 31 | private String requestUrl; |
| 32 | 32 | ||
| 33 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 33 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 34 | - @ApiModelProperty(value = "开始开始请求时间") | ||
| 35 | - private Date beginBeginTime; | ||
| 36 | - | ||
| 37 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 38 | - @ApiModelProperty(value = "结束开始请求时间") | ||
| 39 | - private Date endBeginTime; | 34 | + @ApiModelProperty(value = "开始请求时间") |
| 35 | + private Date[] beginTime; | ||
| 40 | 36 | ||
| 41 | @ApiModelProperty(value = "执行时长", example = "100", notes = "大于等于,单位:毫秒") | 37 | @ApiModelProperty(value = "执行时长", example = "100", notes = "大于等于,单位:毫秒") |
| 42 | private Integer duration; | 38 | private Integer duration; |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExportReqVO.java
| @@ -26,12 +26,8 @@ public class ApiErrorLogExportReqVO { | @@ -26,12 +26,8 @@ public class ApiErrorLogExportReqVO { | ||
| 26 | private String requestUrl; | 26 | private String requestUrl; |
| 27 | 27 | ||
| 28 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 28 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 29 | - @ApiModelProperty(value = "开始异常发生时间") | ||
| 30 | - private Date beginExceptionTime; | ||
| 31 | - | ||
| 32 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 33 | - @ApiModelProperty(value = "结束异常发生时间") | ||
| 34 | - private Date endExceptionTime; | 29 | + @ApiModelProperty(value = "异常发生时间") |
| 30 | + private Date[] exceptionTime; | ||
| 35 | 31 | ||
| 36 | @ApiModelProperty(value = "处理状态", example = "0") | 32 | @ApiModelProperty(value = "处理状态", example = "0") |
| 37 | private Integer processStatus; | 33 | private Integer processStatus; |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogPageReqVO.java
| @@ -31,12 +31,8 @@ public class ApiErrorLogPageReqVO extends PageParam { | @@ -31,12 +31,8 @@ public class ApiErrorLogPageReqVO extends PageParam { | ||
| 31 | private String requestUrl; | 31 | private String requestUrl; |
| 32 | 32 | ||
| 33 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 33 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 34 | - @ApiModelProperty(value = "开始异常发生时间") | ||
| 35 | - private Date beginExceptionTime; | ||
| 36 | - | ||
| 37 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 38 | - @ApiModelProperty(value = "结束异常发生时间") | ||
| 39 | - private Date endExceptionTime; | 34 | + @ApiModelProperty(value = "异常发生时间") |
| 35 | + private Date[] exceptionTime; | ||
| 40 | 36 | ||
| 41 | @ApiModelProperty(value = "处理状态", example = "0") | 37 | @ApiModelProperty(value = "处理状态", example = "0") |
| 42 | private Integer processStatus; | 38 | private Integer processStatus; |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/test/vo/TestDemoExportReqVO.java
| @@ -28,11 +28,7 @@ public class TestDemoExportReqVO { | @@ -28,11 +28,7 @@ public class TestDemoExportReqVO { | ||
| 28 | private String remark; | 28 | private String remark; |
| 29 | 29 | ||
| 30 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 30 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 31 | - @ApiModelProperty(value = "开始创建时间") | ||
| 32 | - private Date beginCreateTime; | ||
| 33 | - | ||
| 34 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 35 | - @ApiModelProperty(value = "结束创建时间") | ||
| 36 | - private Date endCreateTime; | 31 | + @ApiModelProperty(value = "创建时间") |
| 32 | + private Date[] createTime; | ||
| 37 | 33 | ||
| 38 | } | 34 | } |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/test/vo/TestDemoPageReqVO.java
| @@ -30,11 +30,7 @@ public class TestDemoPageReqVO extends PageParam { | @@ -30,11 +30,7 @@ public class TestDemoPageReqVO extends PageParam { | ||
| 30 | private String remark; | 30 | private String remark; |
| 31 | 31 | ||
| 32 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 32 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 33 | - @ApiModelProperty(value = "开始创建时间") | ||
| 34 | - private Date beginCreateTime; | ||
| 35 | - | ||
| 36 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 37 | - @ApiModelProperty(value = "结束创建时间") | ||
| 38 | - private Date endCreateTime; | 33 | + @ApiModelProperty(value = "创建时间") |
| 34 | + private Date[] createTime; | ||
| 39 | 35 | ||
| 40 | } | 36 | } |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/codegen/CodegenTableMapper.java
| @@ -21,7 +21,7 @@ public interface CodegenTableMapper extends BaseMapperX<CodegenTableDO> { | @@ -21,7 +21,7 @@ public interface CodegenTableMapper extends BaseMapperX<CodegenTableDO> { | ||
| 21 | return selectPage(pageReqVO, new LambdaQueryWrapperX<CodegenTableDO>() | 21 | return selectPage(pageReqVO, new LambdaQueryWrapperX<CodegenTableDO>() |
| 22 | .likeIfPresent(CodegenTableDO::getTableName, pageReqVO.getTableName()) | 22 | .likeIfPresent(CodegenTableDO::getTableName, pageReqVO.getTableName()) |
| 23 | .likeIfPresent(CodegenTableDO::getTableComment, pageReqVO.getTableComment()) | 23 | .likeIfPresent(CodegenTableDO::getTableComment, pageReqVO.getTableComment()) |
| 24 | - .betweenIfPresent(CodegenTableDO::getCreateTime, pageReqVO.getBeginCreateTime(), pageReqVO.getEndCreateTime())); | 24 | + .betweenIfPresent(CodegenTableDO::getCreateTime, pageReqVO.getCreateTime())); |
| 25 | } | 25 | } |
| 26 | 26 | ||
| 27 | default List<CodegenTableDO> selectListByDataSourceConfigId(Long dataSourceConfigId) { | 27 | default List<CodegenTableDO> selectListByDataSourceConfigId(Long dataSourceConfigId) { |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigMapper.java
| @@ -22,7 +22,7 @@ public interface ConfigMapper extends BaseMapperX<ConfigDO> { | @@ -22,7 +22,7 @@ public interface ConfigMapper extends BaseMapperX<ConfigDO> { | ||
| 22 | .likeIfPresent(ConfigDO::getName, reqVO.getName()) | 22 | .likeIfPresent(ConfigDO::getName, reqVO.getName()) |
| 23 | .likeIfPresent(ConfigDO::getConfigKey, reqVO.getKey()) | 23 | .likeIfPresent(ConfigDO::getConfigKey, reqVO.getKey()) |
| 24 | .eqIfPresent(ConfigDO::getType, reqVO.getType()) | 24 | .eqIfPresent(ConfigDO::getType, reqVO.getType()) |
| 25 | - .betweenIfPresent(ConfigDO::getCreateTime, reqVO.getBeginTime(), reqVO.getEndTime())); | 25 | + .betweenIfPresent(ConfigDO::getCreateTime, reqVO.getCreateTime())); |
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | default List<ConfigDO> selectList(ConfigExportReqVO reqVO) { | 28 | default List<ConfigDO> selectList(ConfigExportReqVO reqVO) { |
| @@ -30,7 +30,7 @@ public interface ConfigMapper extends BaseMapperX<ConfigDO> { | @@ -30,7 +30,7 @@ public interface ConfigMapper extends BaseMapperX<ConfigDO> { | ||
| 30 | .likeIfPresent(ConfigDO::getName, reqVO.getName()) | 30 | .likeIfPresent(ConfigDO::getName, reqVO.getName()) |
| 31 | .likeIfPresent(ConfigDO::getConfigKey, reqVO.getKey()) | 31 | .likeIfPresent(ConfigDO::getConfigKey, reqVO.getKey()) |
| 32 | .eqIfPresent(ConfigDO::getType, reqVO.getType()) | 32 | .eqIfPresent(ConfigDO::getType, reqVO.getType()) |
| 33 | - .betweenIfPresent(ConfigDO::getCreateTime, reqVO.getBeginTime(), reqVO.getEndTime())); | 33 | + .betweenIfPresent(ConfigDO::getCreateTime, reqVO.getCreateTime())); |
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | } | 36 | } |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/file/FileConfigMapper.java
| @@ -22,7 +22,7 @@ public interface FileConfigMapper extends BaseMapperX<FileConfigDO> { | @@ -22,7 +22,7 @@ public interface FileConfigMapper extends BaseMapperX<FileConfigDO> { | ||
| 22 | return selectPage(reqVO, new LambdaQueryWrapperX<FileConfigDO>() | 22 | return selectPage(reqVO, new LambdaQueryWrapperX<FileConfigDO>() |
| 23 | .likeIfPresent(FileConfigDO::getName, reqVO.getName()) | 23 | .likeIfPresent(FileConfigDO::getName, reqVO.getName()) |
| 24 | .eqIfPresent(FileConfigDO::getStorage, reqVO.getStorage()) | 24 | .eqIfPresent(FileConfigDO::getStorage, reqVO.getStorage()) |
| 25 | - .betweenIfPresent(FileConfigDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 25 | + .betweenIfPresent(FileConfigDO::getCreateTime, reqVO.getCreateTime()) |
| 26 | .orderByDesc(FileConfigDO::getId)); | 26 | .orderByDesc(FileConfigDO::getId)); |
| 27 | } | 27 | } |
| 28 | 28 |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/file/FileMapper.java
| @@ -19,7 +19,7 @@ public interface FileMapper extends BaseMapperX<FileDO> { | @@ -19,7 +19,7 @@ public interface FileMapper extends BaseMapperX<FileDO> { | ||
| 19 | return selectPage(reqVO, new LambdaQueryWrapperX<FileDO>() | 19 | return selectPage(reqVO, new LambdaQueryWrapperX<FileDO>() |
| 20 | .likeIfPresent(FileDO::getPath, reqVO.getPath()) | 20 | .likeIfPresent(FileDO::getPath, reqVO.getPath()) |
| 21 | .likeIfPresent(FileDO::getType, reqVO.getType()) | 21 | .likeIfPresent(FileDO::getType, reqVO.getType()) |
| 22 | - .betweenIfPresent(FileDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 22 | + .betweenIfPresent(FileDO::getCreateTime, reqVO.getCreateTime()) |
| 23 | .orderByDesc(FileDO::getId)); | 23 | .orderByDesc(FileDO::getId)); |
| 24 | } | 24 | } |
| 25 | 25 |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/logger/ApiAccessLogMapper.java
| 1 | package cn.iocoder.yudao.module.infra.dal.mysql.logger; | 1 | package cn.iocoder.yudao.module.infra.dal.mysql.logger; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogExportReqVO; | ||
| 4 | -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogPageReqVO; | ||
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 7 | -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; | 5 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 6 | +import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogExportReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogPageReqVO; | ||
| 8 | import cn.iocoder.yudao.module.infra.dal.dataobject.logger.ApiAccessLogDO; | 8 | import cn.iocoder.yudao.module.infra.dal.dataobject.logger.ApiAccessLogDO; |
| 9 | import org.apache.ibatis.annotations.Mapper; | 9 | import org.apache.ibatis.annotations.Mapper; |
| 10 | 10 | ||
| @@ -19,28 +19,28 @@ import java.util.List; | @@ -19,28 +19,28 @@ import java.util.List; | ||
| 19 | public interface ApiAccessLogMapper extends BaseMapperX<ApiAccessLogDO> { | 19 | public interface ApiAccessLogMapper extends BaseMapperX<ApiAccessLogDO> { |
| 20 | 20 | ||
| 21 | default PageResult<ApiAccessLogDO> selectPage(ApiAccessLogPageReqVO reqVO) { | 21 | default PageResult<ApiAccessLogDO> selectPage(ApiAccessLogPageReqVO reqVO) { |
| 22 | - return selectPage(reqVO, new QueryWrapperX<ApiAccessLogDO>() | ||
| 23 | - .eqIfPresent("user_id", reqVO.getUserId()) | ||
| 24 | - .eqIfPresent("user_type", reqVO.getUserType()) | ||
| 25 | - .eqIfPresent("application_name", reqVO.getApplicationName()) | ||
| 26 | - .likeIfPresent("request_url", reqVO.getRequestUrl()) | ||
| 27 | - .betweenIfPresent("begin_time", reqVO.getBeginBeginTime(), reqVO.getEndBeginTime()) | ||
| 28 | - .geIfPresent("duration", reqVO.getDuration()) | ||
| 29 | - .eqIfPresent("result_code", reqVO.getResultCode()) | ||
| 30 | - .orderByDesc("id") | 22 | + return selectPage(reqVO, new LambdaQueryWrapperX<ApiAccessLogDO>() |
| 23 | + .eqIfPresent(ApiAccessLogDO::getUserId, reqVO.getUserId()) | ||
| 24 | + .eqIfPresent(ApiAccessLogDO::getUserType, reqVO.getUserType()) | ||
| 25 | + .eqIfPresent(ApiAccessLogDO::getApplicationName, reqVO.getApplicationName()) | ||
| 26 | + .likeIfPresent(ApiAccessLogDO::getRequestUrl, reqVO.getRequestUrl()) | ||
| 27 | + .betweenIfPresent(ApiAccessLogDO::getBeginTime, reqVO.getBeginTime()) | ||
| 28 | + .geIfPresent(ApiAccessLogDO::getDuration, reqVO.getDuration()) | ||
| 29 | + .eqIfPresent(ApiAccessLogDO::getResultCode, reqVO.getResultCode()) | ||
| 30 | + .orderByDesc(ApiAccessLogDO::getId) | ||
| 31 | ); | 31 | ); |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | default List<ApiAccessLogDO> selectList(ApiAccessLogExportReqVO reqVO) { | 34 | default List<ApiAccessLogDO> selectList(ApiAccessLogExportReqVO reqVO) { |
| 35 | - return selectList(new QueryWrapperX<ApiAccessLogDO>() | ||
| 36 | - .eqIfPresent("user_id", reqVO.getUserId()) | ||
| 37 | - .eqIfPresent("user_type", reqVO.getUserType()) | ||
| 38 | - .eqIfPresent("application_name", reqVO.getApplicationName()) | ||
| 39 | - .likeIfPresent("request_url", reqVO.getRequestUrl()) | ||
| 40 | - .betweenIfPresent("begin_time", reqVO.getBeginBeginTime(), reqVO.getEndBeginTime()) | ||
| 41 | - .geIfPresent("duration", reqVO.getDuration()) | ||
| 42 | - .eqIfPresent("result_code", reqVO.getResultCode()) | ||
| 43 | - .orderByDesc("id") | 35 | + return selectList(new LambdaQueryWrapperX<ApiAccessLogDO>() |
| 36 | + .eqIfPresent(ApiAccessLogDO::getUserId, reqVO.getUserId()) | ||
| 37 | + .eqIfPresent(ApiAccessLogDO::getUserType, reqVO.getUserType()) | ||
| 38 | + .eqIfPresent(ApiAccessLogDO::getApplicationName, reqVO.getApplicationName()) | ||
| 39 | + .likeIfPresent(ApiAccessLogDO::getRequestUrl, reqVO.getRequestUrl()) | ||
| 40 | + .betweenIfPresent(ApiAccessLogDO::getBeginTime, reqVO.getBeginTime()) | ||
| 41 | + .geIfPresent(ApiAccessLogDO::getDuration, reqVO.getDuration()) | ||
| 42 | + .eqIfPresent(ApiAccessLogDO::getResultCode, reqVO.getResultCode()) | ||
| 43 | + .orderByDesc(ApiAccessLogDO::getId) | ||
| 44 | ); | 44 | ); |
| 45 | } | 45 | } |
| 46 | 46 |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/logger/ApiErrorLogMapper.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.infra.dal.mysql.logger; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.infra.dal.mysql.logger; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; | 5 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 6 | import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogExportReqVO; | 6 | import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogExportReqVO; |
| 7 | import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogPageReqVO; | 7 | import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogPageReqVO; |
| 8 | import cn.iocoder.yudao.module.infra.dal.dataobject.logger.ApiErrorLogDO; | 8 | import cn.iocoder.yudao.module.infra.dal.dataobject.logger.ApiErrorLogDO; |
| @@ -19,26 +19,26 @@ import java.util.List; | @@ -19,26 +19,26 @@ import java.util.List; | ||
| 19 | public interface ApiErrorLogMapper extends BaseMapperX<ApiErrorLogDO> { | 19 | public interface ApiErrorLogMapper extends BaseMapperX<ApiErrorLogDO> { |
| 20 | 20 | ||
| 21 | default PageResult<ApiErrorLogDO> selectPage(ApiErrorLogPageReqVO reqVO) { | 21 | default PageResult<ApiErrorLogDO> selectPage(ApiErrorLogPageReqVO reqVO) { |
| 22 | - return selectPage(reqVO, new QueryWrapperX<ApiErrorLogDO>() | ||
| 23 | - .eqIfPresent("user_id", reqVO.getUserId()) | ||
| 24 | - .eqIfPresent("user_type", reqVO.getUserType()) | ||
| 25 | - .eqIfPresent("application_name", reqVO.getApplicationName()) | ||
| 26 | - .likeIfPresent("request_url", reqVO.getRequestUrl()) | ||
| 27 | - .betweenIfPresent("exception_time", reqVO.getBeginExceptionTime(), reqVO.getEndExceptionTime()) | ||
| 28 | - .eqIfPresent("process_status", reqVO.getProcessStatus()) | ||
| 29 | - .orderByDesc("id") | 22 | + return selectPage(reqVO, new LambdaQueryWrapperX<ApiErrorLogDO>() |
| 23 | + .eqIfPresent(ApiErrorLogDO::getUserId, reqVO.getUserId()) | ||
| 24 | + .eqIfPresent(ApiErrorLogDO::getUserType, reqVO.getUserType()) | ||
| 25 | + .eqIfPresent(ApiErrorLogDO::getApplicationName, reqVO.getApplicationName()) | ||
| 26 | + .likeIfPresent(ApiErrorLogDO::getRequestUrl, reqVO.getRequestUrl()) | ||
| 27 | + .betweenIfPresent(ApiErrorLogDO::getExceptionTime, reqVO.getExceptionTime()) | ||
| 28 | + .eqIfPresent(ApiErrorLogDO::getProcessStatus, reqVO.getProcessStatus()) | ||
| 29 | + .orderByDesc(ApiErrorLogDO::getId) | ||
| 30 | ); | 30 | ); |
| 31 | } | 31 | } |
| 32 | 32 | ||
| 33 | default List<ApiErrorLogDO> selectList(ApiErrorLogExportReqVO reqVO) { | 33 | default List<ApiErrorLogDO> selectList(ApiErrorLogExportReqVO reqVO) { |
| 34 | - return selectList(new QueryWrapperX<ApiErrorLogDO>() | ||
| 35 | - .eqIfPresent("user_id", reqVO.getUserId()) | ||
| 36 | - .eqIfPresent("user_type", reqVO.getUserType()) | ||
| 37 | - .eqIfPresent("application_name", reqVO.getApplicationName()) | ||
| 38 | - .likeIfPresent("request_url", reqVO.getRequestUrl()) | ||
| 39 | - .betweenIfPresent("exception_time", reqVO.getBeginExceptionTime(), reqVO.getEndExceptionTime()) | ||
| 40 | - .eqIfPresent("process_status", reqVO.getProcessStatus()) | ||
| 41 | - .orderByDesc("id") | 34 | + return selectList(new LambdaQueryWrapperX<ApiErrorLogDO>() |
| 35 | + .eqIfPresent(ApiErrorLogDO::getUserId, reqVO.getUserId()) | ||
| 36 | + .eqIfPresent(ApiErrorLogDO::getUserType, reqVO.getUserType()) | ||
| 37 | + .eqIfPresent(ApiErrorLogDO::getApplicationName, reqVO.getApplicationName()) | ||
| 38 | + .likeIfPresent(ApiErrorLogDO::getRequestUrl, reqVO.getRequestUrl()) | ||
| 39 | + .betweenIfPresent(ApiErrorLogDO::getExceptionTime, reqVO.getExceptionTime()) | ||
| 40 | + .eqIfPresent(ApiErrorLogDO::getProcessStatus, reqVO.getProcessStatus()) | ||
| 41 | + .orderByDesc(ApiErrorLogDO::getId) | ||
| 42 | ); | 42 | ); |
| 43 | } | 43 | } |
| 44 | 44 |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/test/TestDemoMapper.java
| @@ -25,7 +25,7 @@ public interface TestDemoMapper extends BaseMapperX<TestDemoDO> { | @@ -25,7 +25,7 @@ public interface TestDemoMapper extends BaseMapperX<TestDemoDO> { | ||
| 25 | .eqIfPresent(TestDemoDO::getType, reqVO.getType()) | 25 | .eqIfPresent(TestDemoDO::getType, reqVO.getType()) |
| 26 | .eqIfPresent(TestDemoDO::getCategory, reqVO.getCategory()) | 26 | .eqIfPresent(TestDemoDO::getCategory, reqVO.getCategory()) |
| 27 | .eqIfPresent(TestDemoDO::getRemark, reqVO.getRemark()) | 27 | .eqIfPresent(TestDemoDO::getRemark, reqVO.getRemark()) |
| 28 | - .betweenIfPresent(TestDemoDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 28 | + .betweenIfPresent(TestDemoDO::getCreateTime, reqVO.getCreateTime()) |
| 29 | .orderByDesc(TestDemoDO::getId)); | 29 | .orderByDesc(TestDemoDO::getId)); |
| 30 | } | 30 | } |
| 31 | 31 | ||
| @@ -36,7 +36,7 @@ public interface TestDemoMapper extends BaseMapperX<TestDemoDO> { | @@ -36,7 +36,7 @@ public interface TestDemoMapper extends BaseMapperX<TestDemoDO> { | ||
| 36 | .eqIfPresent(TestDemoDO::getType, reqVO.getType()) | 36 | .eqIfPresent(TestDemoDO::getType, reqVO.getType()) |
| 37 | .eqIfPresent(TestDemoDO::getCategory, reqVO.getCategory()) | 37 | .eqIfPresent(TestDemoDO::getCategory, reqVO.getCategory()) |
| 38 | .eqIfPresent(TestDemoDO::getRemark, reqVO.getRemark()) | 38 | .eqIfPresent(TestDemoDO::getRemark, reqVO.getRemark()) |
| 39 | - .betweenIfPresent(TestDemoDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 39 | + .betweenIfPresent(TestDemoDO::getCreateTime, reqVO.getCreateTime()) |
| 40 | .orderByDesc(TestDemoDO::getId)); | 40 | .orderByDesc(TestDemoDO::getId)); |
| 41 | } | 41 | } |
| 42 | 42 |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngine.java
| @@ -79,11 +79,20 @@ public class CodegenEngine { | @@ -79,11 +79,20 @@ public class CodegenEngine { | ||
| 79 | javaModuleImplTestFilePath("service/${table.businessName}/${table.className}ServiceImplTest")) | 79 | javaModuleImplTestFilePath("service/${table.businessName}/${table.className}ServiceImplTest")) |
| 80 | // Java module-api Main | 80 | // Java module-api Main |
| 81 | .put(javaTemplatePath("enums/errorcode"), javaModuleApiMainFilePath("enums/ErrorCodeConstants_手动操作")) | 81 | .put(javaTemplatePath("enums/errorcode"), javaModuleApiMainFilePath("enums/ErrorCodeConstants_手动操作")) |
| 82 | - // Vue | 82 | + // Vue2 |
| 83 | .put(vueTemplatePath("views/index.vue"), | 83 | .put(vueTemplatePath("views/index.vue"), |
| 84 | vueFilePath("views/${table.moduleName}/${classNameVar}/index.vue")) | 84 | vueFilePath("views/${table.moduleName}/${classNameVar}/index.vue")) |
| 85 | .put(vueTemplatePath("api/api.js"), | 85 | .put(vueTemplatePath("api/api.js"), |
| 86 | vueFilePath("api/${table.moduleName}/${classNameVar}.js")) | 86 | vueFilePath("api/${table.moduleName}/${classNameVar}.js")) |
| 87 | + // Vue3 | ||
| 88 | + .put(vue3TemplatePath("views/index.vue"), | ||
| 89 | + vue3FilePath("views/${table.moduleName}/${classNameVar}/index.vue")) | ||
| 90 | + .put(vue3TemplatePath("views/data.ts"), | ||
| 91 | + vue3FilePath("views/${table.moduleName}/${classNameVar}/${classNameVar}.data.ts")) | ||
| 92 | + .put(vue3TemplatePath("api/api.ts"), | ||
| 93 | + vue3FilePath("api/${table.moduleName}/${classNameVar}/index.ts")) | ||
| 94 | + .put(vue3TemplatePath("api/types.ts"), | ||
| 95 | + vue3FilePath("api/${table.moduleName}/${classNameVar}/types.ts")) | ||
| 87 | // SQL | 96 | // SQL |
| 88 | .put("codegen/sql/sql.vm", "sql/sql.sql") | 97 | .put("codegen/sql/sql.vm", "sql/sql.sql") |
| 89 | .put("codegen/sql/h2.vm", "sql/h2.sql") | 98 | .put("codegen/sql/h2.vm", "sql/h2.sql") |
| @@ -228,5 +237,12 @@ public class CodegenEngine { | @@ -228,5 +237,12 @@ public class CodegenEngine { | ||
| 228 | return "yudao-ui-${sceneEnum.basePackage}/" + // 顶级目录 | 237 | return "yudao-ui-${sceneEnum.basePackage}/" + // 顶级目录 |
| 229 | "src/" + path; | 238 | "src/" + path; |
| 230 | } | 239 | } |
| 240 | + private static String vue3TemplatePath(String path) { | ||
| 241 | + return "codegen/vue3/" + path + ".vm"; | ||
| 242 | + } | ||
| 231 | 243 | ||
| 244 | + private static String vue3FilePath(String path) { | ||
| 245 | + return "yudao-ui-${sceneEnum.basePackage}-vue3/" + // 顶级目录 | ||
| 246 | + "src/" + path; | ||
| 247 | + } | ||
| 232 | } | 248 | } |
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/java/controller/vo/exportReqVO.vm
| @@ -15,9 +15,6 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | @@ -15,9 +15,6 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 15 | #end | 15 | #end |
| 16 | ## 字段模板 | 16 | ## 字段模板 |
| 17 | #macro(columnTpl $prefix $prefixStr) | 17 | #macro(columnTpl $prefix $prefixStr) |
| 18 | -#if (${column.javaType} == "Date")## 时间类型 | ||
| 19 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 20 | -#end | ||
| 21 | @ApiModelProperty(value = "${prefixStr}${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) | 18 | @ApiModelProperty(value = "${prefixStr}${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) |
| 22 | private ${column.javaType}#if ("$!prefix" != "") ${prefix}${JavaField}#else ${column.javaField}#end; | 19 | private ${column.javaType}#if ("$!prefix" != "") ${prefix}${JavaField}#else ${column.javaField}#end; |
| 23 | #end | 20 | #end |
| @@ -27,12 +24,11 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | @@ -27,12 +24,11 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 27 | public class ${sceneEnum.prefixClass}${table.className}ExportReqVO { | 24 | public class ${sceneEnum.prefixClass}${table.className}ExportReqVO { |
| 28 | 25 | ||
| 29 | #foreach ($column in $columns) | 26 | #foreach ($column in $columns) |
| 30 | -#set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 | ||
| 31 | #if (${column.listOperation})##查询操作 | 27 | #if (${column.listOperation})##查询操作 |
| 32 | #if (${column.listOperationCondition} == "BETWEEN")## 情况一,Between 的时候 | 28 | #if (${column.listOperationCondition} == "BETWEEN")## 情况一,Between 的时候 |
| 33 | - #columnTpl('begin', '开始') | ||
| 34 | - | ||
| 35 | - #columnTpl('end', '结束') | 29 | + @ApiModelProperty(value = "${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) |
| 30 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 31 | + private ${column.javaType}[] ${column.javaField}; | ||
| 36 | #else##情况二,非 Between 的时间 | 32 | #else##情况二,非 Between 的时间 |
| 37 | #columnTpl('', '') | 33 | #columnTpl('', '') |
| 38 | #end | 34 | #end |
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/java/controller/vo/pageReqVO.vm
| @@ -15,9 +15,6 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | @@ -15,9 +15,6 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 15 | #end | 15 | #end |
| 16 | ## 字段模板 | 16 | ## 字段模板 |
| 17 | #macro(columnTpl $prefix $prefixStr) | 17 | #macro(columnTpl $prefix $prefixStr) |
| 18 | -#if (${column.javaType} == "Date")## 时间类型 | ||
| 19 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 20 | -#end | ||
| 21 | @ApiModelProperty(value = "${prefixStr}${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) | 18 | @ApiModelProperty(value = "${prefixStr}${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) |
| 22 | private ${column.javaType}#if ("$!prefix" != "") ${prefix}${JavaField}#else ${column.javaField}#end; | 19 | private ${column.javaType}#if ("$!prefix" != "") ${prefix}${JavaField}#else ${column.javaField}#end; |
| 23 | #end | 20 | #end |
| @@ -29,12 +26,11 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | @@ -29,12 +26,11 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 29 | public class ${sceneEnum.prefixClass}${table.className}PageReqVO extends PageParam { | 26 | public class ${sceneEnum.prefixClass}${table.className}PageReqVO extends PageParam { |
| 30 | 27 | ||
| 31 | #foreach ($column in $columns) | 28 | #foreach ($column in $columns) |
| 32 | -#set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 | ||
| 33 | #if (${column.listOperation})##查询操作 | 29 | #if (${column.listOperation})##查询操作 |
| 34 | #if (${column.listOperationCondition} == "BETWEEN")## 情况一,Between 的时候 | 30 | #if (${column.listOperationCondition} == "BETWEEN")## 情况一,Between 的时候 |
| 35 | - #columnTpl('begin', '开始') | ||
| 36 | - | ||
| 37 | - #columnTpl('end', '结束') | 31 | + @ApiModelProperty(value = "${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) |
| 32 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 33 | + private ${column.javaType}[] ${column.javaField}; | ||
| 38 | #else##情况二,非 Between 的时间 | 34 | #else##情况二,非 Between 的时间 |
| 39 | #columnTpl('', '') | 35 | #columnTpl('', '') |
| 40 | #end | 36 | #end |
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/java/dal/mapper.vm
| @@ -36,7 +36,7 @@ import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePack | @@ -36,7 +36,7 @@ import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePack | ||
| 36 | .likeIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) | 36 | .likeIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) |
| 37 | #end | 37 | #end |
| 38 | #if (${column.listOperationCondition} == "BETWEEN")##情况八,Between 的时候 | 38 | #if (${column.listOperationCondition} == "BETWEEN")##情况八,Between 的时候 |
| 39 | - .betweenIfPresent(${table.className}DO::get${JavaField}, reqVO.getBegin${JavaField}(), reqVO.getEnd${JavaField}()) | 39 | + .betweenIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) |
| 40 | #end | 40 | #end |
| 41 | #end | 41 | #end |
| 42 | #end | 42 | #end |
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/java/test/serviceTest.vm
| @@ -51,8 +51,7 @@ import static org.mockito.Mockito.*; | @@ -51,8 +51,7 @@ import static org.mockito.Mockito.*; | ||
| 51 | #if (${column.listOperation}) | 51 | #if (${column.listOperation}) |
| 52 | #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 | 52 | #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 |
| 53 | #if (${column.listOperationCondition} == "BETWEEN")## BETWEEN 的情况 | 53 | #if (${column.listOperationCondition} == "BETWEEN")## BETWEEN 的情况 |
| 54 | - reqVO.setBegin${JavaField}(null); | ||
| 55 | - reqVO.setEnd${JavaField}(null); | 54 | + reqVO.set${JavaField}((new Date[]{})); |
| 56 | #else | 55 | #else |
| 57 | reqVO.set$JavaField(null); | 56 | reqVO.set$JavaField(null); |
| 58 | #end | 57 | #end |
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue/views/index.vue.vm
| @@ -30,9 +30,9 @@ | @@ -30,9 +30,9 @@ | ||
| 30 | <el-date-picker clearable v-model="queryParams.${javaField}" type="date" value-format="yyyy-MM-dd" placeholder="选择${comment}" /> | 30 | <el-date-picker clearable v-model="queryParams.${javaField}" type="date" value-format="yyyy-MM-dd" placeholder="选择${comment}" /> |
| 31 | </el-form-item> | 31 | </el-form-item> |
| 32 | #else## 范围 | 32 | #else## 范围 |
| 33 | - <el-form-item label="${comment}"> | ||
| 34 | - <el-date-picker v-model="dateRange${AttrName}" style="width: 240px" value-format="yyyy-MM-dd" | ||
| 35 | - type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" /> | 33 | + <el-form-item label="${comment}" prop="${javaField}"> |
| 34 | + <el-date-picker v-model="queryParams.${javaField}" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange" | ||
| 35 | + range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" /> | ||
| 36 | </el-form-item> | 36 | </el-form-item> |
| 37 | #end | 37 | #end |
| 38 | #end | 38 | #end |
| @@ -219,22 +219,19 @@ export default { | @@ -219,22 +219,19 @@ export default { | ||
| 219 | title: "", | 219 | title: "", |
| 220 | // 是否显示弹出层 | 220 | // 是否显示弹出层 |
| 221 | open: false, | 221 | open: false, |
| 222 | - #foreach ($column in $columns)## 时间范围 | ||
| 223 | - #if ($column.listOperation) | ||
| 224 | - #if ($column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") | ||
| 225 | - #set ($AttrName = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) | ||
| 226 | - dateRange${AttrName}: [], | ||
| 227 | - #end | ||
| 228 | - #end | ||
| 229 | - #end | ||
| 230 | // 查询参数 | 222 | // 查询参数 |
| 231 | queryParams: { | 223 | queryParams: { |
| 232 | pageNo: 1, | 224 | pageNo: 1, |
| 233 | pageSize: 10, | 225 | pageSize: 10, |
| 234 | #foreach ($column in $columns) | 226 | #foreach ($column in $columns) |
| 235 | - #if ($column.listOperation && $column.listOperationCondition != 'BETWEEN') | 227 | + #if ($column.listOperation) |
| 228 | + #if ($column.listOperationCondition != 'BETWEEN') | ||
| 236 | $column.javaField: null, | 229 | $column.javaField: null, |
| 237 | #end | 230 | #end |
| 231 | + #if ($column.htmlType == "datetime" || $column.listOperationCondition == "BETWEEN") | ||
| 232 | + $column.javaField: [], | ||
| 233 | + #end | ||
| 234 | + #end | ||
| 238 | #end | 235 | #end |
| 239 | }, | 236 | }, |
| 240 | // 表单参数 | 237 | // 表单参数 |
| @@ -257,18 +254,8 @@ export default { | @@ -257,18 +254,8 @@ export default { | ||
| 257 | /** 查询列表 */ | 254 | /** 查询列表 */ |
| 258 | getList() { | 255 | getList() { |
| 259 | this.loading = true; | 256 | this.loading = true; |
| 260 | - // 处理查询参数 | ||
| 261 | - let params = {...this.queryParams}; | ||
| 262 | - #foreach ($column in $columns) | ||
| 263 | - #if ($column.listOperation) | ||
| 264 | - #if ($column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") | ||
| 265 | - #set ($AttrName = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) | ||
| 266 | - this.addBeginAndEndTime(params, this.dateRange${AttrName}, '${column.javaField}'); | ||
| 267 | - #end | ||
| 268 | - #end | ||
| 269 | - #end | ||
| 270 | // 执行查询 | 257 | // 执行查询 |
| 271 | - get${simpleClassName}Page(params).then(response => { | 258 | + get${simpleClassName}Page(this.queryParams).then(response => { |
| 272 | this.list = response.data.list; | 259 | this.list = response.data.list; |
| 273 | this.total = response.data.total; | 260 | this.total = response.data.total; |
| 274 | this.loading = false; | 261 | this.loading = false; |
| @@ -301,14 +288,6 @@ export default { | @@ -301,14 +288,6 @@ export default { | ||
| 301 | }, | 288 | }, |
| 302 | /** 重置按钮操作 */ | 289 | /** 重置按钮操作 */ |
| 303 | resetQuery() { | 290 | resetQuery() { |
| 304 | - #foreach ($column in $columns) | ||
| 305 | - #if ($column.listOperation) | ||
| 306 | - #if ($column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") | ||
| 307 | - #set ($AttrName = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) | ||
| 308 | - this.dateRange${AttrName} = []; | ||
| 309 | - #end | ||
| 310 | - #end | ||
| 311 | - #end | ||
| 312 | this.resetForm("queryForm"); | 291 | this.resetForm("queryForm"); |
| 313 | this.handleQuery(); | 292 | this.handleQuery(); |
| 314 | }, | 293 | }, |
| @@ -377,15 +356,6 @@ export default { | @@ -377,15 +356,6 @@ export default { | ||
| 377 | let params = {...this.queryParams}; | 356 | let params = {...this.queryParams}; |
| 378 | params.pageNo = undefined; | 357 | params.pageNo = undefined; |
| 379 | params.pageSize = undefined; | 358 | params.pageSize = undefined; |
| 380 | - #foreach ($column in $columns) | ||
| 381 | - #if ($column.listOperation) | ||
| 382 | - #if ($column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") | ||
| 383 | - #set ($AttrName = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) | ||
| 384 | - this.addBeginAndEndTime(params, this.dateRange${AttrName}, '${column.javaField}'); | ||
| 385 | - #end | ||
| 386 | - #end | ||
| 387 | - #end | ||
| 388 | - // 执行导出 | ||
| 389 | this.#[[$modal]]#.confirm('是否确认导出所有${table.classComment}数据项?').then(() => { | 359 | this.#[[$modal]]#.confirm('是否确认导出所有${table.classComment}数据项?').then(() => { |
| 390 | this.exportLoading = true; | 360 | this.exportLoading = true; |
| 391 | return export${simpleClassName}Excel(params); | 361 | return export${simpleClassName}Excel(params); |
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/api.ts.vm
0 → 100644
| 1 | +import { useAxios } from '@/hooks/web/useAxios' | ||
| 2 | +import { ${simpleClassName}VO,${simpleClassName}PageReqVO,${simpleClassName}ExcelReqVO } from './types' | ||
| 3 | + | ||
| 4 | +const request = useAxios() | ||
| 5 | + | ||
| 6 | +#set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}") | ||
| 7 | +// 查询${table.classComment}列表 | ||
| 8 | +export const getPostPageApi = async (params: ${simpleClassName}PageReqVO) => { | ||
| 9 | + return await request.get({ url: '${baseURL}/page', params }) | ||
| 10 | +} | ||
| 11 | + | ||
| 12 | +// 查询${table.classComment}详情 | ||
| 13 | +export const getPostApi = async (id: number) => { | ||
| 14 | + return await request.get({ url: '${baseURL}/get?id=' + id }) | ||
| 15 | +} | ||
| 16 | + | ||
| 17 | +// 新增${table.classComment} | ||
| 18 | +export const createPostApi = async (data: ${simpleClassName}VO) => { | ||
| 19 | + return await request.post({ url: '${baseURL}/create', data }) | ||
| 20 | +} | ||
| 21 | + | ||
| 22 | +// 修改${table.classComment} | ||
| 23 | +export const updatePostApi = async (data: ${simpleClassName}VO) => { | ||
| 24 | + return await request.put({ url: '${baseURL}/update', data }) | ||
| 25 | +} | ||
| 26 | + | ||
| 27 | +// 删除${table.classComment} | ||
| 28 | +export const deletePostApi = async (id: number) => { | ||
| 29 | + return await request.delete({ url: '${baseURL}/delete?id=' + id }) | ||
| 30 | +} | ||
| 31 | + | ||
| 32 | +// 导出${table.classComment} Excel | ||
| 33 | +export const exportPostApi = async (params: ${simpleClassName}ExcelReqVO) => { | ||
| 34 | + return await request.download({ url: '${baseURL}/export-excel', params }) | ||
| 35 | +} |
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/types.ts.vm
0 → 100644
| 1 | +export type ${simpleClassName}VO = { | ||
| 2 | +#foreach ($column in $columns) | ||
| 3 | +#if ($column.createOperation || $column.updateOperation) | ||
| 4 | +#if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer") | ||
| 5 | + ${column.javaField}: number | ||
| 6 | +#else | ||
| 7 | + ${column.javaField}: ${column.javaType.toLowerCase()} | ||
| 8 | +#end | ||
| 9 | +#end | ||
| 10 | +#end | ||
| 11 | +} | ||
| 12 | + | ||
| 13 | +export type ${simpleClassName}PageReqVO = { | ||
| 14 | +#foreach ($column in $columns) | ||
| 15 | +#if (${column.listOperation})##查询操作 | ||
| 16 | +#if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer") | ||
| 17 | + ${column.javaField}: number | ||
| 18 | +#else | ||
| 19 | + ${column.javaField}: ${column.javaType.toLowerCase()} | ||
| 20 | +#end | ||
| 21 | +#end | ||
| 22 | +#end | ||
| 23 | +} | ||
| 24 | + | ||
| 25 | +export type ${simpleClassName}ExcelReqVO = { | ||
| 26 | +#foreach ($column in $columns) | ||
| 27 | +#if (${column.listOperation})##查询操作 | ||
| 28 | +#if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer") | ||
| 29 | + ${column.javaField}: number | ||
| 30 | +#else | ||
| 31 | + ${column.javaField}: ${column.javaType.toLowerCase()} | ||
| 32 | +#end | ||
| 33 | +#end | ||
| 34 | +#end | ||
| 35 | +} | ||
| 0 | \ No newline at end of file | 36 | \ No newline at end of file |
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/data.ts.vm
0 → 100644
| 1 | +import { reactive } from 'vue' | ||
| 2 | +import { useI18n } from '@/hooks/web/useI18n' | ||
| 3 | +import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas' | ||
| 4 | +import { DICT_TYPE } from '@/utils/dict' | ||
| 5 | +const { t } = useI18n() // 国际化 | ||
| 6 | +// 表单校验 | ||
| 7 | +export const rules = reactive({ | ||
| 8 | +#foreach ($column in $columns) | ||
| 9 | +#if (($column.createOperation || $column.updateOperation) && !$column.nullable && !${column.primaryKey})## 创建或者更新操作 && 要求非空 && 非主键 | ||
| 10 | +#set($comment=$column.columnComment) | ||
| 11 | + $column.javaField: [{ required: true, message: "${comment}不能为空", trigger: #if($column.htmlType == "select")"change"#else"blur"#end }], | ||
| 12 | +#end | ||
| 13 | +#end | ||
| 14 | +}) | ||
| 15 | +// CrudSchema | ||
| 16 | +const crudSchemas = reactive<CrudSchema[]>([ | ||
| 17 | +#foreach($column in $columns) | ||
| 18 | + #if ($column.listOperation || $column.listOperationResult || $column.createOperation || $column.updateOperation) | ||
| 19 | + #set ($dictType = $column.dictType) | ||
| 20 | + { | ||
| 21 | + label: '${column.columnComment}', | ||
| 22 | + field: '${column.javaField}', | ||
| 23 | + #if ("" != $dictType)## 有数据字典 | ||
| 24 | + dictType: DICT_TYPE.$dictType.toUpperCase(), | ||
| 25 | + #end | ||
| 26 | + #if($column.primaryKey) | ||
| 27 | + type: 'index', | ||
| 28 | + form: { | ||
| 29 | + show: false | ||
| 30 | + }, | ||
| 31 | + detail: { | ||
| 32 | + show: false | ||
| 33 | + } | ||
| 34 | + #else | ||
| 35 | + #if (!$column.createOperation && !$column.updateOperation) | ||
| 36 | + form: { | ||
| 37 | + false | ||
| 38 | + }, | ||
| 39 | + #elseif(!("" != $column.dictType)) | ||
| 40 | + form: { | ||
| 41 | + show: true, | ||
| 42 | + #if ($column.htmlType == "datetime")## 时间框 | ||
| 43 | + component: 'DatePicker', | ||
| 44 | + componentProps: { | ||
| 45 | + type: 'datetime', | ||
| 46 | + valueFormat: 'YYYY-MM-DD HH:mm:ss' | ||
| 47 | + } | ||
| 48 | + #elseif($column.htmlType == "editor")## 文本编辑器 | ||
| 49 | + component: 'Editor', | ||
| 50 | + colProps: { | ||
| 51 | + span: 24 | ||
| 52 | + }, | ||
| 53 | + componentProps: { | ||
| 54 | + valueHtml: '' | ||
| 55 | + } | ||
| 56 | + #elseif($column.htmlType == "textarea")## 文本框 | ||
| 57 | + component: 'Input', | ||
| 58 | + componentProps: { | ||
| 59 | + type: 'textarea', | ||
| 60 | + rows: 4 | ||
| 61 | + }, | ||
| 62 | + colProps: { | ||
| 63 | + span: 24 | ||
| 64 | + } | ||
| 65 | + #end | ||
| 66 | + }, | ||
| 67 | + #end | ||
| 68 | + #if ($column.listOperationResult) | ||
| 69 | + search: { | ||
| 70 | + #if($column.htmlType == "input") | ||
| 71 | + show: true | ||
| 72 | + #else | ||
| 73 | + #if($column.htmlType == "datetime") | ||
| 74 | + show: true, | ||
| 75 | + component: 'DatePicker', | ||
| 76 | + componentProps: { | ||
| 77 | + type: 'datetimerange', | ||
| 78 | + valueFormat: 'YYYY-MM-DD HH:mm:ss' | ||
| 79 | + } | ||
| 80 | + #elseif($column.htmlType == "select" || $column.htmlType == "radio") | ||
| 81 | + #if ("" == $dictType)## 没有数据字典 | ||
| 82 | + show: true, | ||
| 83 | + component: 'Select', | ||
| 84 | + componentProps: { | ||
| 85 | + option: [{'','请选择字典生成'}] | ||
| 86 | + } | ||
| 87 | + #else | ||
| 88 | + show: true | ||
| 89 | + #end | ||
| 90 | + #end | ||
| 91 | + #end | ||
| 92 | + } | ||
| 93 | + #end | ||
| 94 | + #end | ||
| 95 | + }, | ||
| 96 | + #end | ||
| 97 | +#end | ||
| 98 | + { | ||
| 99 | + label: t('table.action'), | ||
| 100 | + field: 'action', | ||
| 101 | + width: '240px', | ||
| 102 | + form: { | ||
| 103 | + show: false | ||
| 104 | + }, | ||
| 105 | + detail: { | ||
| 106 | + show: false | ||
| 107 | + } | ||
| 108 | + } | ||
| 109 | +]) | ||
| 110 | + | ||
| 111 | +export const { allSchemas } = useCrudSchemas(crudSchemas) | ||
| 0 | \ No newline at end of file | 112 | \ No newline at end of file |
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm
0 → 100644
| 1 | +<script setup lang="ts"> | ||
| 2 | + import { ref, unref } from 'vue' | ||
| 3 | + import dayjs from 'dayjs' | ||
| 4 | + import { ElMessage } from 'element-plus' | ||
| 5 | + import { DICT_TYPE } from '@/utils/dict' | ||
| 6 | + import { useTable } from '@/hooks/web/useTable' | ||
| 7 | + import { useI18n } from '@/hooks/web/useI18n' | ||
| 8 | + import { FormExpose } from '@/components/Form' | ||
| 9 | + import type { ${simpleClassName}VO } from '@/api/system/post/types' | ||
| 10 | + import { rules, allSchemas } from './post.data' | ||
| 11 | + import * as ${simpleClassName}Api from '@/api/system/post' | ||
| 12 | + const { t } = useI18n() // 国际化 | ||
| 13 | + | ||
| 14 | + // ========== 列表相关 ========== | ||
| 15 | + const { register, tableObject, methods } = useTable<${simpleClassName}VO>({ | ||
| 16 | + getListApi: ${simpleClassName}Api.get${simpleClassName}PageApi, | ||
| 17 | + delListApi: ${simpleClassName}Api.delete${simpleClassName}Api, | ||
| 18 | + exportListApi: ${simpleClassName}Api.export${simpleClassName}Api | ||
| 19 | + }) | ||
| 20 | + const { getList, setSearchParams, delList, exportList } = methods | ||
| 21 | + | ||
| 22 | + // 导出操作 | ||
| 23 | + const handleExport = async () => { | ||
| 24 | + await exportList('数据.xls') | ||
| 25 | + } | ||
| 26 | + | ||
| 27 | + // ========== CRUD 相关 ========== | ||
| 28 | + const actionLoading = ref(false) // 遮罩层 | ||
| 29 | + const actionType = ref('') // 操作按钮的类型 | ||
| 30 | + const dialogVisible = ref(false) // 是否显示弹出层 | ||
| 31 | + const dialogTitle = ref('edit') // 弹出层标题 | ||
| 32 | + const formRef = ref<FormExpose>() // 表单 Ref | ||
| 33 | + | ||
| 34 | + // 设置标题 | ||
| 35 | + const setDialogTile = (type: string) => { | ||
| 36 | + dialogTitle.value = t('action.' + type) | ||
| 37 | + actionType.value = type | ||
| 38 | + dialogVisible.value = true | ||
| 39 | + } | ||
| 40 | + | ||
| 41 | + // 新增操作 | ||
| 42 | + const handleCreate = () => { | ||
| 43 | + setDialogTile('create') | ||
| 44 | + // 重置表单 | ||
| 45 | + unref(formRef)?.getElFormRef()?.resetFields() | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + // 修改操作 | ||
| 49 | + const handleUpdate = async (row: ${simpleClassName}VO) => { | ||
| 50 | + setDialogTile('update') | ||
| 51 | + // 设置数据 | ||
| 52 | + const res = await ${simpleClassName}Api.get${simpleClassName}Api(row.id) | ||
| 53 | + unref(formRef)?.setValues(res) | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + // 提交按钮 | ||
| 57 | + const submitForm = async () => { | ||
| 58 | + actionLoading.value = true | ||
| 59 | + // 提交请求 | ||
| 60 | + try { | ||
| 61 | + const data = unref(formRef)?.formModel as ${simpleClassName}VO | ||
| 62 | + if (actionType.value === 'create') { | ||
| 63 | + await ${simpleClassName}Api.create${simpleClassName}Api(data) | ||
| 64 | + ElMessage.success(t('common.createSuccess')) | ||
| 65 | + } else { | ||
| 66 | + await ${simpleClassName}Api.update${simpleClassName}Api(data) | ||
| 67 | + ElMessage.success(t('common.updateSuccess')) | ||
| 68 | + } | ||
| 69 | + // 操作成功,重新加载列表 | ||
| 70 | + dialogVisible.value = false | ||
| 71 | + await getList() | ||
| 72 | + } finally { | ||
| 73 | + actionLoading.value = false | ||
| 74 | + } | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + // 删除操作 | ||
| 78 | + const handleDelete = (row: ${simpleClassName}VO) => { | ||
| 79 | + delList(row.id, false) | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + // ========== 详情相关 ========== | ||
| 83 | + const detailRef = ref() // 详情 Ref | ||
| 84 | + | ||
| 85 | + // 详情操作 | ||
| 86 | + const handleDetail = async (row: ${simpleClassName}VO) => { | ||
| 87 | + // 设置数据 | ||
| 88 | + detailRef.value = row | ||
| 89 | + setDialogTile('detail') | ||
| 90 | + } | ||
| 91 | + | ||
| 92 | + // ========== 初始化 ========== | ||
| 93 | + getList() | ||
| 94 | +</script> | ||
| 95 | + | ||
| 96 | +<template> | ||
| 97 | + <!-- 搜索工作区 --> | ||
| 98 | + <ContentWrap> | ||
| 99 | + <Search :schema="allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" /> | ||
| 100 | + </ContentWrap> | ||
| 101 | + <ContentWrap> | ||
| 102 | + <!-- 操作工具栏 --> | ||
| 103 | + <div class="mb-10px"> | ||
| 104 | + <el-button type="primary" v-hasPermi="['${permissionPrefix}:create']" @click="handleCreate"> | ||
| 105 | + <Icon icon="ep:zoom-in" class="mr-5px" /> {{ t('action.add') }} | ||
| 106 | + </el-button> | ||
| 107 | + <el-button | ||
| 108 | + type="warning" | ||
| 109 | + v-hasPermi="['${permissionPrefix}:export']" | ||
| 110 | + :loading="tableObject.exportLoading" | ||
| 111 | + @click="handleExport" | ||
| 112 | + > | ||
| 113 | + <Icon icon="ep:download" class="mr-5px" /> {{ t('action.export') }} | ||
| 114 | + </el-button> | ||
| 115 | + </div> | ||
| 116 | + <!-- 列表 --> | ||
| 117 | + <Table | ||
| 118 | + :columns="allSchemas.tableColumns" | ||
| 119 | + :selection="false" | ||
| 120 | + :data="tableObject.tableList" | ||
| 121 | + :loading="tableObject.loading" | ||
| 122 | + :pagination="{ | ||
| 123 | + total: tableObject.total | ||
| 124 | + }" | ||
| 125 | + v-model:pageSize="tableObject.pageSize" | ||
| 126 | + v-model:currentPage="tableObject.currentPage" | ||
| 127 | + @register="register" | ||
| 128 | + > | ||
| 129 | +#foreach($column in $columns) | ||
| 130 | +#if ($column.listOperationResult) | ||
| 131 | + #set ($dictType=$column.dictType) | ||
| 132 | + #if ($column.javaType == "Date")## 时间类型 | ||
| 133 | + <template #${column.javaField}="{ row }"> | ||
| 134 | + <span>{{ dayjs(row.${column.javaField}).format('YYYY-MM-DD HH:mm:ss') }}</span> | ||
| 135 | + </template> | ||
| 136 | + #elseif("" != $column.dictType)## 数据字典 | ||
| 137 | + <template #${column.javaField}="{ row }"> | ||
| 138 | + <DictTag :type="DICT_TYPE.$dictType.toUpperCase()" :value="row.${column.javaField}" /> | ||
| 139 | + </template> | ||
| 140 | + #end | ||
| 141 | +#end | ||
| 142 | +#end | ||
| 143 | + <template #action="{ row }"> | ||
| 144 | + <el-button | ||
| 145 | + link | ||
| 146 | + type="primary" | ||
| 147 | + v-hasPermi="['${permissionPrefix}:update']" | ||
| 148 | + @click="handleUpdate(row)" | ||
| 149 | + > | ||
| 150 | + <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} | ||
| 151 | + </el-button> | ||
| 152 | + <el-button | ||
| 153 | + link | ||
| 154 | + type="primary" | ||
| 155 | + v-hasPermi="['${permissionPrefix}:update']" | ||
| 156 | + @click="handleDetail(row)" | ||
| 157 | + > | ||
| 158 | + <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} | ||
| 159 | + </el-button> | ||
| 160 | + <el-button | ||
| 161 | + link | ||
| 162 | + type="primary" | ||
| 163 | + v-hasPermi="['${permissionPrefix}:delete']" | ||
| 164 | + @click="handleDelete(row)" | ||
| 165 | + > | ||
| 166 | + <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} | ||
| 167 | + </el-button> | ||
| 168 | + </template> | ||
| 169 | + </Table> | ||
| 170 | + </ContentWrap> | ||
| 171 | + | ||
| 172 | + <Dialog v-model="dialogVisible" :title="dialogTitle"> | ||
| 173 | + <!-- 对话框(添加 / 修改) --> | ||
| 174 | + <Form | ||
| 175 | + v-if="['create', 'update'].includes(actionType)" | ||
| 176 | + :schema="allSchemas.formSchema" | ||
| 177 | + :rules="rules" | ||
| 178 | + ref="formRef" | ||
| 179 | + /> | ||
| 180 | + <!-- 对话框(详情) --> | ||
| 181 | + <Descriptions | ||
| 182 | + v-if="actionType === 'detail'" | ||
| 183 | + :schema="allSchemas.detailSchema" | ||
| 184 | + :data="detailRef" | ||
| 185 | + > | ||
| 186 | +#foreach($column in $columns) | ||
| 187 | + #if ($column.listOperationResult) | ||
| 188 | + #set ($dictType=$column.dictType) | ||
| 189 | + #if ($column.javaType == "Date")## 时间类型 | ||
| 190 | + <template #${column.javaField}="{ row }"> | ||
| 191 | + <span>{{ dayjs(row.${column.javaField}).format('YYYY-MM-DD HH:mm:ss') }}</span> | ||
| 192 | + </template> | ||
| 193 | + #elseif("" != $column.dictType)## 数据字典 | ||
| 194 | + <template #${column.javaField}="{ row }"> | ||
| 195 | + <DictTag :type="DICT_TYPE.$dictType.toUpperCase()" :value="row.${column.javaField}" /> | ||
| 196 | + </template> | ||
| 197 | + #end | ||
| 198 | + #end | ||
| 199 | +#end | ||
| 200 | + </Descriptions> | ||
| 201 | + <!-- 操作按钮 --> | ||
| 202 | + <template #footer> | ||
| 203 | + <el-button | ||
| 204 | + v-if="['create', 'update'].includes(actionType)" | ||
| 205 | + type="primary" | ||
| 206 | + :loading="actionLoading" | ||
| 207 | + @click="submitForm" | ||
| 208 | + > | ||
| 209 | + {{ t('action.save') }} | ||
| 210 | + </el-button> | ||
| 211 | + <el-button @click="dialogVisible = false">{{ t('dialog.close') }}</el-button> | ||
| 212 | + </template> | ||
| 213 | + </Dialog> | ||
| 214 | +</template> |
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceTest.java
| @@ -19,6 +19,7 @@ import org.springframework.boot.test.mock.mockito.MockBean; | @@ -19,6 +19,7 @@ import org.springframework.boot.test.mock.mockito.MockBean; | ||
| 19 | import org.springframework.context.annotation.Import; | 19 | import org.springframework.context.annotation.Import; |
| 20 | 20 | ||
| 21 | import javax.annotation.Resource; | 21 | import javax.annotation.Resource; |
| 22 | +import java.util.Date; | ||
| 22 | import java.util.List; | 23 | import java.util.List; |
| 23 | import java.util.function.Consumer; | 24 | import java.util.function.Consumer; |
| 24 | 25 | ||
| @@ -180,8 +181,7 @@ public class ConfigServiceTest extends BaseDbUnitTest { | @@ -180,8 +181,7 @@ public class ConfigServiceTest extends BaseDbUnitTest { | ||
| 180 | reqVO.setName("艿"); | 181 | reqVO.setName("艿"); |
| 181 | reqVO.setKey("nai"); | 182 | reqVO.setKey("nai"); |
| 182 | reqVO.setType(ConfigTypeEnum.SYSTEM.getType()); | 183 | reqVO.setType(ConfigTypeEnum.SYSTEM.getType()); |
| 183 | - reqVO.setBeginTime(buildTime(2021, 1, 15)); | ||
| 184 | - reqVO.setEndTime(buildTime(2021, 2, 15)); | 184 | + reqVO.setCreateTime((new Date[]{buildTime(2021, 1, 15),buildTime(2021, 2, 15)})); |
| 185 | 185 | ||
| 186 | // 调用 | 186 | // 调用 |
| 187 | PageResult<ConfigDO> pageResult = configService.getConfigPage(reqVO); | 187 | PageResult<ConfigDO> pageResult = configService.getConfigPage(reqVO); |
| @@ -214,8 +214,7 @@ public class ConfigServiceTest extends BaseDbUnitTest { | @@ -214,8 +214,7 @@ public class ConfigServiceTest extends BaseDbUnitTest { | ||
| 214 | reqVO.setName("艿"); | 214 | reqVO.setName("艿"); |
| 215 | reqVO.setKey("nai"); | 215 | reqVO.setKey("nai"); |
| 216 | reqVO.setType(ConfigTypeEnum.SYSTEM.getType()); | 216 | reqVO.setType(ConfigTypeEnum.SYSTEM.getType()); |
| 217 | - reqVO.setBeginTime(buildTime(2021, 1, 15)); | ||
| 218 | - reqVO.setEndTime(buildTime(2021, 2, 15)); | 217 | + reqVO.setCreateTime((new Date[]{buildTime(2021, 1, 15),buildTime(2021, 2, 15)})); |
| 219 | 218 | ||
| 220 | // 调用 | 219 | // 调用 |
| 221 | List<ConfigDO> list = configService.getConfigList(reqVO); | 220 | List<ConfigDO> list = configService.getConfigList(reqVO); |
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileConfigServiceImplTest.java
| @@ -22,6 +22,7 @@ import org.springframework.context.annotation.Import; | @@ -22,6 +22,7 @@ import org.springframework.context.annotation.Import; | ||
| 22 | import javax.annotation.Resource; | 22 | import javax.annotation.Resource; |
| 23 | import javax.validation.Validator; | 23 | import javax.validation.Validator; |
| 24 | import java.io.Serializable; | 24 | import java.io.Serializable; |
| 25 | +import java.util.Date; | ||
| 25 | import java.util.Map; | 26 | import java.util.Map; |
| 26 | 27 | ||
| 27 | import static cn.hutool.core.util.RandomUtil.randomEle; | 28 | import static cn.hutool.core.util.RandomUtil.randomEle; |
| @@ -216,8 +217,7 @@ public class FileConfigServiceImplTest extends BaseDbUnitTest { | @@ -216,8 +217,7 @@ public class FileConfigServiceImplTest extends BaseDbUnitTest { | ||
| 216 | FileConfigPageReqVO reqVO = new FileConfigPageReqVO(); | 217 | FileConfigPageReqVO reqVO = new FileConfigPageReqVO(); |
| 217 | reqVO.setName("芋道"); | 218 | reqVO.setName("芋道"); |
| 218 | reqVO.setStorage(FileStorageEnum.LOCAL.getStorage()); | 219 | reqVO.setStorage(FileStorageEnum.LOCAL.getStorage()); |
| 219 | - reqVO.setBeginCreateTime(buildTime(2022, 11, 10)); | ||
| 220 | - reqVO.setEndCreateTime(buildTime(2022, 11, 12)); | 220 | + reqVO.setCreateTime((new Date[]{buildTime(2022, 11, 10),buildTime(2022, 11, 12)})); |
| 221 | 221 | ||
| 222 | // 调用 | 222 | // 调用 |
| 223 | PageResult<FileConfigDO> pageResult = fileConfigService.getFileConfigPage(reqVO); | 223 | PageResult<FileConfigDO> pageResult = fileConfigService.getFileConfigPage(reqVO); |
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileServiceTest.java
| @@ -15,6 +15,8 @@ import org.springframework.context.annotation.Import; | @@ -15,6 +15,8 @@ import org.springframework.context.annotation.Import; | ||
| 15 | 15 | ||
| 16 | import javax.annotation.Resource; | 16 | import javax.annotation.Resource; |
| 17 | 17 | ||
| 18 | +import java.util.Date; | ||
| 19 | + | ||
| 18 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; | 20 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; |
| 19 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | 21 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; |
| 20 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; | 22 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; |
| @@ -58,8 +60,7 @@ public class FileServiceTest extends BaseDbUnitTest { | @@ -58,8 +60,7 @@ public class FileServiceTest extends BaseDbUnitTest { | ||
| 58 | FilePageReqVO reqVO = new FilePageReqVO(); | 60 | FilePageReqVO reqVO = new FilePageReqVO(); |
| 59 | reqVO.setPath("yunai"); | 61 | reqVO.setPath("yunai"); |
| 60 | reqVO.setType("jp"); | 62 | reqVO.setType("jp"); |
| 61 | - reqVO.setBeginCreateTime(buildTime(2021, 1, 10)); | ||
| 62 | - reqVO.setEndCreateTime(buildTime(2021, 1, 20)); | 63 | + reqVO.setCreateTime((new Date[]{buildTime(2021, 1, 10), buildTime(2021, 1, 20)})); |
| 63 | 64 | ||
| 64 | // 调用 | 65 | // 调用 |
| 65 | PageResult<FileDO> pageResult = fileService.getFilePage(reqVO); | 66 | PageResult<FileDO> pageResult = fileService.getFilePage(reqVO); |
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/logger/ApiAccessLogServiceImplTest.java
| @@ -77,8 +77,7 @@ public class ApiAccessLogServiceImplTest extends BaseDbUnitTest { | @@ -77,8 +77,7 @@ public class ApiAccessLogServiceImplTest extends BaseDbUnitTest { | ||
| 77 | reqVO.setUserType(userType); | 77 | reqVO.setUserType(userType); |
| 78 | reqVO.setApplicationName(applicationName); | 78 | reqVO.setApplicationName(applicationName); |
| 79 | reqVO.setRequestUrl(requestUrl); | 79 | reqVO.setRequestUrl(requestUrl); |
| 80 | - reqVO.setBeginBeginTime(buildTime(2021, 3, 12)); | ||
| 81 | - reqVO.setEndBeginTime(buildTime(2021, 3, 14)); | 80 | + reqVO.setBeginTime((new Date[]{buildTime(2021, 3, 12),buildTime(2021, 3, 14)})); |
| 82 | reqVO.setDuration(duration); | 81 | reqVO.setDuration(duration); |
| 83 | reqVO.setResultCode(resultCode); | 82 | reqVO.setResultCode(resultCode); |
| 84 | 83 | ||
| @@ -135,8 +134,7 @@ public class ApiAccessLogServiceImplTest extends BaseDbUnitTest { | @@ -135,8 +134,7 @@ public class ApiAccessLogServiceImplTest extends BaseDbUnitTest { | ||
| 135 | reqVO.setUserType(userType); | 134 | reqVO.setUserType(userType); |
| 136 | reqVO.setApplicationName(applicationName); | 135 | reqVO.setApplicationName(applicationName); |
| 137 | reqVO.setRequestUrl(requestUrl); | 136 | reqVO.setRequestUrl(requestUrl); |
| 138 | - reqVO.setBeginBeginTime(buildTime(2021, 3, 12)); | ||
| 139 | - reqVO.setEndBeginTime(buildTime(2021, 3, 14)); | 137 | + reqVO.setBeginTime((new Date[]{buildTime(2021, 3, 12),buildTime(2021, 3, 14)})); |
| 140 | reqVO.setDuration(duration); | 138 | reqVO.setDuration(duration); |
| 141 | reqVO.setResultCode(resultCode); | 139 | reqVO.setResultCode(resultCode); |
| 142 | 140 |
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/logger/ApiErrorLogServiceImplTest.java
| @@ -77,8 +77,7 @@ public class ApiErrorLogServiceImplTest extends BaseDbUnitTest { | @@ -77,8 +77,7 @@ public class ApiErrorLogServiceImplTest extends BaseDbUnitTest { | ||
| 77 | reqVO.setUserType(userType); | 77 | reqVO.setUserType(userType); |
| 78 | reqVO.setApplicationName(applicationName); | 78 | reqVO.setApplicationName(applicationName); |
| 79 | reqVO.setRequestUrl(requestUrl); | 79 | reqVO.setRequestUrl(requestUrl); |
| 80 | - reqVO.setBeginExceptionTime(buildTime(2021, 3, 12)); | ||
| 81 | - reqVO.setEndExceptionTime(buildTime(2021, 3, 14)); | 80 | + reqVO.setExceptionTime((new Date[]{buildTime(2021, 3, 12),buildTime(2021, 3, 14)})); |
| 82 | reqVO.setProcessStatus(progressStatus); | 81 | reqVO.setProcessStatus(progressStatus); |
| 83 | 82 | ||
| 84 | // 调用service方法 | 83 | // 调用service方法 |
| @@ -130,8 +129,7 @@ public class ApiErrorLogServiceImplTest extends BaseDbUnitTest { | @@ -130,8 +129,7 @@ public class ApiErrorLogServiceImplTest extends BaseDbUnitTest { | ||
| 130 | reqVO.setUserType(userType); | 129 | reqVO.setUserType(userType); |
| 131 | reqVO.setApplicationName(applicationName); | 130 | reqVO.setApplicationName(applicationName); |
| 132 | reqVO.setRequestUrl(requestUrl); | 131 | reqVO.setRequestUrl(requestUrl); |
| 133 | - reqVO.setBeginExceptionTime(buildTime(2021, 3, 12)); | ||
| 134 | - reqVO.setEndExceptionTime(buildTime(2021, 3, 14)); | 132 | + reqVO.setExceptionTime((new Date[]{buildTime(2021, 3, 12),buildTime(2021, 3, 14)})); |
| 135 | reqVO.setProcessStatus(progressStatus); | 133 | reqVO.setProcessStatus(progressStatus); |
| 136 | 134 | ||
| 137 | // 调用service方法 | 135 | // 调用service方法 |
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/test/TestDemoServiceImplTest.java
| @@ -14,8 +14,10 @@ import org.junit.jupiter.api.Test; | @@ -14,8 +14,10 @@ import org.junit.jupiter.api.Test; | ||
| 14 | import org.springframework.context.annotation.Import; | 14 | import org.springframework.context.annotation.Import; |
| 15 | 15 | ||
| 16 | import javax.annotation.Resource; | 16 | import javax.annotation.Resource; |
| 17 | +import java.util.Date; | ||
| 17 | import java.util.List; | 18 | import java.util.List; |
| 18 | 19 | ||
| 20 | +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; | ||
| 19 | import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; | 21 | import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; |
| 20 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | 22 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; |
| 21 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | 23 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; |
| @@ -132,8 +134,7 @@ public class TestDemoServiceImplTest extends BaseDbUnitTest { | @@ -132,8 +134,7 @@ public class TestDemoServiceImplTest extends BaseDbUnitTest { | ||
| 132 | reqVO.setType(1); | 134 | reqVO.setType(1); |
| 133 | reqVO.setCategory(2); | 135 | reqVO.setCategory(2); |
| 134 | reqVO.setRemark("哈哈哈"); | 136 | reqVO.setRemark("哈哈哈"); |
| 135 | - reqVO.setBeginCreateTime(DateUtils.buildTime(2021, 11, 10)); | ||
| 136 | - reqVO.setEndCreateTime(DateUtils.buildTime(2021, 11, 12)); | 137 | + reqVO.setCreateTime((new Date[]{buildTime(2021, 11, 10),buildTime(2021, 11, 12)})); |
| 137 | 138 | ||
| 138 | // 调用 | 139 | // 调用 |
| 139 | PageResult<TestDemoDO> pageResult = testDemoService.getTestDemoPage(reqVO); | 140 | PageResult<TestDemoDO> pageResult = testDemoService.getTestDemoPage(reqVO); |
| @@ -174,8 +175,7 @@ public class TestDemoServiceImplTest extends BaseDbUnitTest { | @@ -174,8 +175,7 @@ public class TestDemoServiceImplTest extends BaseDbUnitTest { | ||
| 174 | reqVO.setType(1); | 175 | reqVO.setType(1); |
| 175 | reqVO.setCategory(2); | 176 | reqVO.setCategory(2); |
| 176 | reqVO.setRemark("哈哈哈"); | 177 | reqVO.setRemark("哈哈哈"); |
| 177 | - reqVO.setBeginCreateTime(DateUtils.buildTime(2021, 11, 10)); | ||
| 178 | - reqVO.setEndCreateTime(DateUtils.buildTime(2021, 11, 12)); | 178 | + reqVO.setCreateTime((new Date[]{buildTime(2021, 11, 10),buildTime(2021, 11, 12)})); |
| 179 | 179 | ||
| 180 | // 调用 | 180 | // 调用 |
| 181 | List<TestDemoDO> list = testDemoService.getTestDemoList(reqVO); | 181 | List<TestDemoDO> list = testDemoService.getTestDemoList(reqVO); |
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/controller/admin/activity/vo/ActivityPageReqVO.java
| @@ -29,36 +29,20 @@ public class ActivityPageReqVO extends PageParam { | @@ -29,36 +29,20 @@ public class ActivityPageReqVO extends PageParam { | ||
| 29 | private Integer status; | 29 | private Integer status; |
| 30 | 30 | ||
| 31 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 31 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 32 | - @ApiModelProperty(value = "开始开始时间") | ||
| 33 | - private Date beginStartTime; | 32 | + @ApiModelProperty(value = "开始时间") |
| 33 | + private Date[] startTime; | ||
| 34 | 34 | ||
| 35 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 35 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 36 | - @ApiModelProperty(value = "结束开始时间") | ||
| 37 | - private Date endStartTime; | 36 | + @ApiModelProperty(value = "结束时间") |
| 37 | + private Date[] endTime; | ||
| 38 | 38 | ||
| 39 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 39 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 40 | - @ApiModelProperty(value = "开始结束时间") | ||
| 41 | - private Date beginEndTime; | 40 | + @ApiModelProperty(value = "失效时间") |
| 41 | + private Date[] invalidTime; | ||
| 42 | 42 | ||
| 43 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 43 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 44 | - @ApiModelProperty(value = "结束结束时间") | ||
| 45 | - private Date endEndTime; | ||
| 46 | - | ||
| 47 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 48 | - @ApiModelProperty(value = "开始失效时间") | ||
| 49 | - private Date beginInvalidTime; | ||
| 50 | - | ||
| 51 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 52 | - @ApiModelProperty(value = "结束失效时间") | ||
| 53 | - private Date endInvalidTime; | ||
| 54 | - | ||
| 55 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 56 | - @ApiModelProperty(value = "开始删除时间") | ||
| 57 | - private Date beginDeleteTime; | ||
| 58 | - | ||
| 59 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 60 | - @ApiModelProperty(value = "结束删除时间") | ||
| 61 | - private Date endDeleteTime; | 44 | + @ApiModelProperty(value = "删除时间") |
| 45 | + private Date[] deleteTime; | ||
| 62 | 46 | ||
| 63 | @ApiModelProperty(value = "限制折扣字符串,使用 JSON 序列化成字符串存储") | 47 | @ApiModelProperty(value = "限制折扣字符串,使用 JSON 序列化成字符串存储") |
| 64 | private String timeLimitedDiscount; | 48 | private String timeLimitedDiscount; |
| @@ -67,11 +51,7 @@ public class ActivityPageReqVO extends PageParam { | @@ -67,11 +51,7 @@ public class ActivityPageReqVO extends PageParam { | ||
| 67 | private String fullPrivilege; | 51 | private String fullPrivilege; |
| 68 | 52 | ||
| 69 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 53 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 70 | - @ApiModelProperty(value = "开始创建时间") | ||
| 71 | - private Date beginCreateTime; | ||
| 72 | - | ||
| 73 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 74 | - @ApiModelProperty(value = "结束创建时间") | ||
| 75 | - private Date endCreateTime; | 54 | + @ApiModelProperty(value = "创建时间") |
| 55 | + private Date[] createTime; | ||
| 76 | 56 | ||
| 77 | } | 57 | } |
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/controller/admin/banner/vo/BannerPageReqVO.java
| @@ -32,11 +32,7 @@ public class BannerPageReqVO extends PageParam { | @@ -32,11 +32,7 @@ public class BannerPageReqVO extends PageParam { | ||
| 32 | private Integer status; | 32 | private Integer status; |
| 33 | 33 | ||
| 34 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 34 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 35 | - @ApiModelProperty(value = "开始创建时间") | ||
| 36 | - private Date beginCreateTime; | ||
| 37 | - | ||
| 38 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 39 | - @ApiModelProperty(value = "结束创建时间") | ||
| 40 | - private Date endCreateTime; | 35 | + @ApiModelProperty(value = "创建时间") |
| 36 | + private Date[] createTime; | ||
| 41 | 37 | ||
| 42 | } | 38 | } |
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/dal/mysql/activity/ActivityMapper.java
| @@ -22,13 +22,13 @@ public interface ActivityMapper extends BaseMapperX<ActivityDO> { | @@ -22,13 +22,13 @@ public interface ActivityMapper extends BaseMapperX<ActivityDO> { | ||
| 22 | .eqIfPresent(ActivityDO::getTitle, reqVO.getTitle()) | 22 | .eqIfPresent(ActivityDO::getTitle, reqVO.getTitle()) |
| 23 | .eqIfPresent(ActivityDO::getActivityType, reqVO.getActivityType()) | 23 | .eqIfPresent(ActivityDO::getActivityType, reqVO.getActivityType()) |
| 24 | .eqIfPresent(ActivityDO::getStatus, reqVO.getStatus()) | 24 | .eqIfPresent(ActivityDO::getStatus, reqVO.getStatus()) |
| 25 | - .betweenIfPresent(ActivityDO::getStartTime, reqVO.getBeginStartTime(), reqVO.getEndStartTime()) | ||
| 26 | - .betweenIfPresent(ActivityDO::getEndTime, reqVO.getBeginEndTime(), reqVO.getEndEndTime()) | ||
| 27 | - .betweenIfPresent(ActivityDO::getInvalidTime, reqVO.getBeginInvalidTime(), reqVO.getEndInvalidTime()) | ||
| 28 | - .betweenIfPresent(ActivityDO::getDeleteTime, reqVO.getBeginDeleteTime(), reqVO.getEndDeleteTime()) | 25 | + .betweenIfPresent(ActivityDO::getStartTime, reqVO.getStartTime()) |
| 26 | + .betweenIfPresent(ActivityDO::getEndTime, reqVO.getEndTime()) | ||
| 27 | + .betweenIfPresent(ActivityDO::getInvalidTime, reqVO.getInvalidTime()) | ||
| 28 | + .betweenIfPresent(ActivityDO::getDeleteTime, reqVO.getDeleteTime()) | ||
| 29 | .eqIfPresent(ActivityDO::getTimeLimitedDiscount, reqVO.getTimeLimitedDiscount()) | 29 | .eqIfPresent(ActivityDO::getTimeLimitedDiscount, reqVO.getTimeLimitedDiscount()) |
| 30 | .eqIfPresent(ActivityDO::getFullPrivilege, reqVO.getFullPrivilege()) | 30 | .eqIfPresent(ActivityDO::getFullPrivilege, reqVO.getFullPrivilege()) |
| 31 | - .betweenIfPresent(ActivityDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 31 | + .betweenIfPresent(ActivityDO::getCreateTime, reqVO.getCreateTime()) |
| 32 | .orderByDesc(ActivityDO::getId)); | 32 | .orderByDesc(ActivityDO::getId)); |
| 33 | } | 33 | } |
| 34 | 34 |
yudao-module-mall/yudao-module-market-biz/src/main/java/cn/iocoder/yudao/module/market/dal/mysql/banner/BannerMapper.java
| @@ -19,8 +19,7 @@ public interface BannerMapper extends BaseMapperX<BannerDO> { | @@ -19,8 +19,7 @@ public interface BannerMapper extends BaseMapperX<BannerDO> { | ||
| 19 | return selectPage(reqVO, new LambdaQueryWrapperX<BannerDO>() | 19 | return selectPage(reqVO, new LambdaQueryWrapperX<BannerDO>() |
| 20 | .likeIfPresent(BannerDO::getTitle, reqVO.getTitle()) | 20 | .likeIfPresent(BannerDO::getTitle, reqVO.getTitle()) |
| 21 | .eqIfPresent(BannerDO::getStatus, reqVO.getStatus()) | 21 | .eqIfPresent(BannerDO::getStatus, reqVO.getStatus()) |
| 22 | - .betweenIfPresent(BannerDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | ||
| 23 | - .betweenIfPresent(BannerDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 22 | + .betweenIfPresent(BannerDO::getCreateTime, reqVO.getCreateTime()) |
| 24 | .orderByDesc(BannerDO::getSort)); | 23 | .orderByDesc(BannerDO::getSort)); |
| 25 | } | 24 | } |
| 26 | 25 |
yudao-module-mall/yudao-module-market-biz/src/test/java/cn/iocoder/yudao/module/market/service/activity/ActivityServiceImplTest.java
| @@ -139,18 +139,13 @@ public class ActivityServiceImplTest extends BaseDbUnitTest { | @@ -139,18 +139,13 @@ public class ActivityServiceImplTest extends BaseDbUnitTest { | ||
| 139 | reqVO.setTitle(null); | 139 | reqVO.setTitle(null); |
| 140 | reqVO.setActivityType(null); | 140 | reqVO.setActivityType(null); |
| 141 | reqVO.setStatus(null); | 141 | reqVO.setStatus(null); |
| 142 | - reqVO.setBeginStartTime(null); | ||
| 143 | - reqVO.setEndStartTime(null); | ||
| 144 | - reqVO.setBeginEndTime(null); | ||
| 145 | - reqVO.setEndEndTime(null); | ||
| 146 | - reqVO.setBeginInvalidTime(null); | ||
| 147 | - reqVO.setEndInvalidTime(null); | ||
| 148 | - reqVO.setBeginDeleteTime(null); | ||
| 149 | - reqVO.setEndDeleteTime(null); | 142 | + reqVO.setStartTime(null); |
| 143 | + reqVO.setEndTime(null); | ||
| 144 | + reqVO.setInvalidTime(null); | ||
| 145 | + reqVO.setDeleteTime(null); | ||
| 150 | reqVO.setTimeLimitedDiscount(null); | 146 | reqVO.setTimeLimitedDiscount(null); |
| 151 | reqVO.setFullPrivilege(null); | 147 | reqVO.setFullPrivilege(null); |
| 152 | - reqVO.setBeginCreateTime(null); | ||
| 153 | - reqVO.setEndCreateTime(null); | 148 | + reqVO.setCreateTime(null); |
| 154 | 149 | ||
| 155 | // 调用 | 150 | // 调用 |
| 156 | PageResult<ActivityDO> pageResult = activityService.getActivityPage(reqVO); | 151 | PageResult<ActivityDO> pageResult = activityService.getActivityPage(reqVO); |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/vo/BrandExportReqVO.java
| @@ -22,11 +22,7 @@ public class BrandExportReqVO { | @@ -22,11 +22,7 @@ public class BrandExportReqVO { | ||
| 22 | private Integer status; | 22 | private Integer status; |
| 23 | 23 | ||
| 24 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 24 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 25 | - @ApiModelProperty(value = "开始创建时间") | ||
| 26 | - private Date beginCreateTime; | ||
| 27 | - | ||
| 28 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 29 | - @ApiModelProperty(value = "结束创建时间") | ||
| 30 | - private Date endCreateTime; | 25 | + @ApiModelProperty(value = "创建时间") |
| 26 | + private Date[] createTime; | ||
| 31 | 27 | ||
| 32 | } | 28 | } |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/vo/BrandPageReqVO.java
| @@ -24,11 +24,7 @@ public class BrandPageReqVO extends PageParam { | @@ -24,11 +24,7 @@ public class BrandPageReqVO extends PageParam { | ||
| 24 | private Integer status; | 24 | private Integer status; |
| 25 | 25 | ||
| 26 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 26 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 27 | - @ApiModelProperty(value = "开始创建时间") | ||
| 28 | - private Date beginCreateTime; | ||
| 29 | - | ||
| 30 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 31 | - @ApiModelProperty(value = "结束创建时间") | ||
| 32 | - private Date endCreateTime; | 27 | + @ApiModelProperty(value = "创建时间") |
| 28 | + private Date[] createTime; | ||
| 33 | 29 | ||
| 34 | } | 30 | } |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/category/vo/CategoryExportReqVO.java
| @@ -20,11 +20,7 @@ public class CategoryExportReqVO { | @@ -20,11 +20,7 @@ public class CategoryExportReqVO { | ||
| 20 | private Integer status; | 20 | private Integer status; |
| 21 | 21 | ||
| 22 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 22 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 23 | - @ApiModelProperty(value = "开始创建时间") | ||
| 24 | - private Date beginCreateTime; | ||
| 25 | - | ||
| 26 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 27 | - @ApiModelProperty(value = "结束创建时间") | ||
| 28 | - private Date endCreateTime; | 23 | + @ApiModelProperty(value = "创建时间") |
| 24 | + private Date[] createTime; | ||
| 29 | 25 | ||
| 30 | } | 26 | } |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/category/vo/CategoryPageReqVO.java
| @@ -25,11 +25,7 @@ public class CategoryPageReqVO extends PageParam { | @@ -25,11 +25,7 @@ public class CategoryPageReqVO extends PageParam { | ||
| 25 | private Integer status; | 25 | private Integer status; |
| 26 | 26 | ||
| 27 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 27 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 28 | - @ApiModelProperty(value = "开始创建时间") | ||
| 29 | - private Date beginCreateTime; | ||
| 30 | - | ||
| 31 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 32 | - @ApiModelProperty(value = "结束创建时间") | ||
| 33 | - private Date endCreateTime; | 28 | + @ApiModelProperty(value = "创建时间") |
| 29 | + private Date[] createTime; | ||
| 34 | 30 | ||
| 35 | } | 31 | } |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/category/vo/CategoryTreeListReqVO.java
| @@ -20,10 +20,6 @@ public class CategoryTreeListReqVO extends CategoryExportReqVO { | @@ -20,10 +20,6 @@ public class CategoryTreeListReqVO extends CategoryExportReqVO { | ||
| 20 | private Integer status; | 20 | private Integer status; |
| 21 | 21 | ||
| 22 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 22 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 23 | - @ApiModelProperty(value = "开始创建时间") | ||
| 24 | - private Date beginCreateTime; | ||
| 25 | - | ||
| 26 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 27 | - @ApiModelProperty(value = "结束创建时间") | ||
| 28 | - private Date endCreateTime; | 23 | + @ApiModelProperty(value = "创建时间") |
| 24 | + private Date[] createTime; | ||
| 29 | } | 25 | } |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/ProductPropertyExportReqVO.java
| @@ -19,11 +19,7 @@ public class ProductPropertyExportReqVO { | @@ -19,11 +19,7 @@ public class ProductPropertyExportReqVO { | ||
| 19 | private Integer status; | 19 | private Integer status; |
| 20 | 20 | ||
| 21 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 21 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 22 | - @ApiModelProperty(value = "开始创建时间") | ||
| 23 | - private Date beginCreateTime; | ||
| 24 | - | ||
| 25 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 26 | - @ApiModelProperty(value = "结束创建时间") | ||
| 27 | - private Date endCreateTime; | 22 | + @ApiModelProperty(value = "创建时间") |
| 23 | + private Date[] createTime; | ||
| 28 | 24 | ||
| 29 | } | 25 | } |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/property/vo/ProductPropertyPageReqVO.java
| @@ -21,11 +21,7 @@ public class ProductPropertyPageReqVO extends PageParam { | @@ -21,11 +21,7 @@ public class ProductPropertyPageReqVO extends PageParam { | ||
| 21 | private Integer status; | 21 | private Integer status; |
| 22 | 22 | ||
| 23 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 23 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 24 | - @ApiModelProperty(value = "开始创建时间") | ||
| 25 | - private Date beginCreateTime; | ||
| 26 | - | ||
| 27 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 28 | - @ApiModelProperty(value = "结束创建时间") | ||
| 29 | - private Date endCreateTime; | 24 | + @ApiModelProperty(value = "创建时间") |
| 25 | + private Date[] createTime; | ||
| 30 | 26 | ||
| 31 | } | 27 | } |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuExportReqVO.java
| @@ -37,11 +37,7 @@ public class ProductSkuExportReqVO { | @@ -37,11 +37,7 @@ public class ProductSkuExportReqVO { | ||
| 37 | private Integer status; | 37 | private Integer status; |
| 38 | 38 | ||
| 39 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 39 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 40 | - @ApiModelProperty(value = "开始创建时间") | ||
| 41 | - private Date beginCreateTime; | ||
| 42 | - | ||
| 43 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 44 | - @ApiModelProperty(value = "结束创建时间") | ||
| 45 | - private Date endCreateTime; | 40 | + @ApiModelProperty(value = "创建时间") |
| 41 | + private Date[] createTime; | ||
| 46 | 42 | ||
| 47 | } | 43 | } |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuPageReqVO.java
| @@ -39,11 +39,7 @@ public class ProductSkuPageReqVO extends PageParam { | @@ -39,11 +39,7 @@ public class ProductSkuPageReqVO extends PageParam { | ||
| 39 | private Integer status; | 39 | private Integer status; |
| 40 | 40 | ||
| 41 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 41 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 42 | - @ApiModelProperty(value = "开始创建时间") | ||
| 43 | - private Date beginCreateTime; | ||
| 44 | - | ||
| 45 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 46 | - @ApiModelProperty(value = "结束创建时间") | ||
| 47 | - private Date endCreateTime; | 42 | + @ApiModelProperty(value = "创建时间") |
| 43 | + private Date[] createTime; | ||
| 48 | 44 | ||
| 49 | } | 45 | } |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/SpuExportReqVO.java
| @@ -43,11 +43,7 @@ public class SpuExportReqVO { | @@ -43,11 +43,7 @@ public class SpuExportReqVO { | ||
| 43 | private Boolean status; | 43 | private Boolean status; |
| 44 | 44 | ||
| 45 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 45 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 46 | - @ApiModelProperty(value = "开始创建时间") | ||
| 47 | - private Date beginCreateTime; | ||
| 48 | - | ||
| 49 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 50 | - @ApiModelProperty(value = "结束创建时间") | ||
| 51 | - private Date endCreateTime; | 46 | + @ApiModelProperty(value = "创建时间") |
| 47 | + private Date[] createTime; | ||
| 52 | 48 | ||
| 53 | } | 49 | } |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/SpuPageReqVO.java
| @@ -45,11 +45,7 @@ public class SpuPageReqVO extends PageParam { | @@ -45,11 +45,7 @@ public class SpuPageReqVO extends PageParam { | ||
| 45 | private Boolean status; | 45 | private Boolean status; |
| 46 | 46 | ||
| 47 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 47 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 48 | - @ApiModelProperty(value = "开始创建时间") | ||
| 49 | - private Date beginCreateTime; | ||
| 50 | - | ||
| 51 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 52 | - @ApiModelProperty(value = "结束创建时间") | ||
| 53 | - private Date endCreateTime; | 48 | + @ApiModelProperty(value = "创建时间") |
| 49 | + private Date[] createTime; | ||
| 54 | 50 | ||
| 55 | } | 51 | } |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/brand/BrandMapper.java
| @@ -22,7 +22,7 @@ public interface BrandMapper extends BaseMapperX<BrandDO> { | @@ -22,7 +22,7 @@ public interface BrandMapper extends BaseMapperX<BrandDO> { | ||
| 22 | .eqIfPresent(BrandDO::getCategoryId, reqVO.getCategoryId()) | 22 | .eqIfPresent(BrandDO::getCategoryId, reqVO.getCategoryId()) |
| 23 | .likeIfPresent(BrandDO::getName, reqVO.getName()) | 23 | .likeIfPresent(BrandDO::getName, reqVO.getName()) |
| 24 | .eqIfPresent(BrandDO::getStatus, reqVO.getStatus()) | 24 | .eqIfPresent(BrandDO::getStatus, reqVO.getStatus()) |
| 25 | - .betweenIfPresent(BrandDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 25 | + .betweenIfPresent(BrandDO::getCreateTime, reqVO.getCreateTime()) |
| 26 | .orderByDesc(BrandDO::getId)); | 26 | .orderByDesc(BrandDO::getId)); |
| 27 | } | 27 | } |
| 28 | 28 | ||
| @@ -31,7 +31,7 @@ public interface BrandMapper extends BaseMapperX<BrandDO> { | @@ -31,7 +31,7 @@ public interface BrandMapper extends BaseMapperX<BrandDO> { | ||
| 31 | .eqIfPresent(BrandDO::getCategoryId, reqVO.getCategoryId()) | 31 | .eqIfPresent(BrandDO::getCategoryId, reqVO.getCategoryId()) |
| 32 | .likeIfPresent(BrandDO::getName, reqVO.getName()) | 32 | .likeIfPresent(BrandDO::getName, reqVO.getName()) |
| 33 | .eqIfPresent(BrandDO::getStatus, reqVO.getStatus()) | 33 | .eqIfPresent(BrandDO::getStatus, reqVO.getStatus()) |
| 34 | - .betweenIfPresent(BrandDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 34 | + .betweenIfPresent(BrandDO::getCreateTime, reqVO.getCreateTime()) |
| 35 | .orderByDesc(BrandDO::getId)); | 35 | .orderByDesc(BrandDO::getId)); |
| 36 | } | 36 | } |
| 37 | 37 |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/category/CategoryMapper.java
| @@ -22,7 +22,7 @@ public interface CategoryMapper extends BaseMapperX<CategoryDO> { | @@ -22,7 +22,7 @@ public interface CategoryMapper extends BaseMapperX<CategoryDO> { | ||
| 22 | return selectPage(reqVO, new LambdaQueryWrapperX<CategoryDO>() | 22 | return selectPage(reqVO, new LambdaQueryWrapperX<CategoryDO>() |
| 23 | .likeIfPresent(CategoryDO::getName, reqVO.getName()) | 23 | .likeIfPresent(CategoryDO::getName, reqVO.getName()) |
| 24 | .eqIfPresent(CategoryDO::getStatus, reqVO.getStatus()) | 24 | .eqIfPresent(CategoryDO::getStatus, reqVO.getStatus()) |
| 25 | - .betweenIfPresent(CategoryDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 25 | + .betweenIfPresent(CategoryDO::getCreateTime, reqVO.getCreateTime()) |
| 26 | .orderByDesc(CategoryDO::getId)); | 26 | .orderByDesc(CategoryDO::getId)); |
| 27 | } | 27 | } |
| 28 | 28 | ||
| @@ -30,7 +30,7 @@ public interface CategoryMapper extends BaseMapperX<CategoryDO> { | @@ -30,7 +30,7 @@ public interface CategoryMapper extends BaseMapperX<CategoryDO> { | ||
| 30 | return selectList(new LambdaQueryWrapperX<CategoryDO>() | 30 | return selectList(new LambdaQueryWrapperX<CategoryDO>() |
| 31 | .likeIfPresent(CategoryDO::getName, reqVO.getName()) | 31 | .likeIfPresent(CategoryDO::getName, reqVO.getName()) |
| 32 | .eqIfPresent(CategoryDO::getStatus, reqVO.getStatus()) | 32 | .eqIfPresent(CategoryDO::getStatus, reqVO.getStatus()) |
| 33 | - .betweenIfPresent(CategoryDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 33 | + .betweenIfPresent(CategoryDO::getCreateTime, reqVO.getCreateTime()) |
| 34 | .orderByDesc(CategoryDO::getId)); | 34 | .orderByDesc(CategoryDO::getId)); |
| 35 | } | 35 | } |
| 36 | 36 |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/property/ProductPropertyMapper.java
| @@ -21,7 +21,7 @@ public interface ProductPropertyMapper extends BaseMapperX<ProductPropertyDO> { | @@ -21,7 +21,7 @@ public interface ProductPropertyMapper extends BaseMapperX<ProductPropertyDO> { | ||
| 21 | return selectPage(reqVO, new LambdaQueryWrapperX<ProductPropertyDO>() | 21 | return selectPage(reqVO, new LambdaQueryWrapperX<ProductPropertyDO>() |
| 22 | .likeIfPresent(ProductPropertyDO::getName, reqVO.getName()) | 22 | .likeIfPresent(ProductPropertyDO::getName, reqVO.getName()) |
| 23 | .eqIfPresent(ProductPropertyDO::getStatus, reqVO.getStatus()) | 23 | .eqIfPresent(ProductPropertyDO::getStatus, reqVO.getStatus()) |
| 24 | - .betweenIfPresent(ProductPropertyDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 24 | + .betweenIfPresent(ProductPropertyDO::getCreateTime, reqVO.getCreateTime()) |
| 25 | .orderByDesc(ProductPropertyDO::getId)); | 25 | .orderByDesc(ProductPropertyDO::getId)); |
| 26 | } | 26 | } |
| 27 | 27 | ||
| @@ -29,7 +29,7 @@ public interface ProductPropertyMapper extends BaseMapperX<ProductPropertyDO> { | @@ -29,7 +29,7 @@ public interface ProductPropertyMapper extends BaseMapperX<ProductPropertyDO> { | ||
| 29 | return selectList(new LambdaQueryWrapperX<ProductPropertyDO>() | 29 | return selectList(new LambdaQueryWrapperX<ProductPropertyDO>() |
| 30 | .likeIfPresent(ProductPropertyDO::getName, reqVO.getName()) | 30 | .likeIfPresent(ProductPropertyDO::getName, reqVO.getName()) |
| 31 | .eqIfPresent(ProductPropertyDO::getStatus, reqVO.getStatus()) | 31 | .eqIfPresent(ProductPropertyDO::getStatus, reqVO.getStatus()) |
| 32 | - .betweenIfPresent(ProductPropertyDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 32 | + .betweenIfPresent(ProductPropertyDO::getCreateTime, reqVO.getCreateTime()) |
| 33 | .orderByDesc(ProductPropertyDO::getId)); | 33 | .orderByDesc(ProductPropertyDO::getId)); |
| 34 | } | 34 | } |
| 35 | 35 |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/sku/ProductSkuMapper.java
| @@ -28,7 +28,7 @@ public interface ProductSkuMapper extends BaseMapperX<ProductSkuDO> { | @@ -28,7 +28,7 @@ public interface ProductSkuMapper extends BaseMapperX<ProductSkuDO> { | ||
| 28 | .eqIfPresent(ProductSkuDO::getBarCode, reqVO.getBarCode()) | 28 | .eqIfPresent(ProductSkuDO::getBarCode, reqVO.getBarCode()) |
| 29 | .eqIfPresent(ProductSkuDO::getPicUrl, reqVO.getPicUrl()) | 29 | .eqIfPresent(ProductSkuDO::getPicUrl, reqVO.getPicUrl()) |
| 30 | .eqIfPresent(ProductSkuDO::getStatus, reqVO.getStatus()) | 30 | .eqIfPresent(ProductSkuDO::getStatus, reqVO.getStatus()) |
| 31 | - .betweenIfPresent(ProductSkuDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 31 | + .betweenIfPresent(ProductSkuDO::getCreateTime, reqVO.getCreateTime()) |
| 32 | .orderByDesc(ProductSkuDO::getId)); | 32 | .orderByDesc(ProductSkuDO::getId)); |
| 33 | } | 33 | } |
| 34 | 34 | ||
| @@ -42,7 +42,7 @@ public interface ProductSkuMapper extends BaseMapperX<ProductSkuDO> { | @@ -42,7 +42,7 @@ public interface ProductSkuMapper extends BaseMapperX<ProductSkuDO> { | ||
| 42 | .eqIfPresent(ProductSkuDO::getBarCode, reqVO.getBarCode()) | 42 | .eqIfPresent(ProductSkuDO::getBarCode, reqVO.getBarCode()) |
| 43 | .eqIfPresent(ProductSkuDO::getPicUrl, reqVO.getPicUrl()) | 43 | .eqIfPresent(ProductSkuDO::getPicUrl, reqVO.getPicUrl()) |
| 44 | .eqIfPresent(ProductSkuDO::getStatus, reqVO.getStatus()) | 44 | .eqIfPresent(ProductSkuDO::getStatus, reqVO.getStatus()) |
| 45 | - .betweenIfPresent(ProductSkuDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 45 | + .betweenIfPresent(ProductSkuDO::getCreateTime, reqVO.getCreateTime()) |
| 46 | .orderByDesc(ProductSkuDO::getId)); | 46 | .orderByDesc(ProductSkuDO::getId)); |
| 47 | } | 47 | } |
| 48 | 48 |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/spu/ProductSpuMapper.java
| @@ -29,7 +29,7 @@ public interface ProductSpuMapper extends BaseMapperX<ProductSpuDO> { | @@ -29,7 +29,7 @@ public interface ProductSpuMapper extends BaseMapperX<ProductSpuDO> { | ||
| 29 | .eqIfPresent(ProductSpuDO::getPrice, reqVO.getPrice()) | 29 | .eqIfPresent(ProductSpuDO::getPrice, reqVO.getPrice()) |
| 30 | .eqIfPresent(ProductSpuDO::getQuantity, reqVO.getQuantity()) | 30 | .eqIfPresent(ProductSpuDO::getQuantity, reqVO.getQuantity()) |
| 31 | .eqIfPresent(ProductSpuDO::getStatus, reqVO.getStatus()) | 31 | .eqIfPresent(ProductSpuDO::getStatus, reqVO.getStatus()) |
| 32 | - .betweenIfPresent(ProductSpuDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 32 | + .betweenIfPresent(ProductSpuDO::getCreateTime, reqVO.getCreateTime()) |
| 33 | .orderByDesc(ProductSpuDO::getId)); | 33 | .orderByDesc(ProductSpuDO::getId)); |
| 34 | } | 34 | } |
| 35 | 35 | ||
| @@ -45,7 +45,7 @@ public interface ProductSpuMapper extends BaseMapperX<ProductSpuDO> { | @@ -45,7 +45,7 @@ public interface ProductSpuMapper extends BaseMapperX<ProductSpuDO> { | ||
| 45 | .eqIfPresent(ProductSpuDO::getPrice, reqVO.getPrice()) | 45 | .eqIfPresent(ProductSpuDO::getPrice, reqVO.getPrice()) |
| 46 | .eqIfPresent(ProductSpuDO::getQuantity, reqVO.getQuantity()) | 46 | .eqIfPresent(ProductSpuDO::getQuantity, reqVO.getQuantity()) |
| 47 | .eqIfPresent(ProductSpuDO::getStatus, reqVO.getStatus()) | 47 | .eqIfPresent(ProductSpuDO::getStatus, reqVO.getStatus()) |
| 48 | - .betweenIfPresent(ProductSpuDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 48 | + .betweenIfPresent(ProductSpuDO::getCreateTime, reqVO.getCreateTime()) |
| 49 | .orderByDesc(ProductSpuDO::getId)); | 49 | .orderByDesc(ProductSpuDO::getId)); |
| 50 | } | 50 | } |
| 51 | 51 |
yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/brand/BrandServiceImplTest.java
| @@ -127,8 +127,7 @@ public class BrandServiceImplTest extends BaseDbUnitTest { | @@ -127,8 +127,7 @@ public class BrandServiceImplTest extends BaseDbUnitTest { | ||
| 127 | reqVO.setCategoryId(null); | 127 | reqVO.setCategoryId(null); |
| 128 | reqVO.setName(null); | 128 | reqVO.setName(null); |
| 129 | reqVO.setStatus(null); | 129 | reqVO.setStatus(null); |
| 130 | - reqVO.setBeginCreateTime(null); | ||
| 131 | - reqVO.setEndCreateTime(null); | 130 | + reqVO.setCreateTime((new Date[]{})); |
| 132 | 131 | ||
| 133 | // 调用 | 132 | // 调用 |
| 134 | PageResult<BrandDO> pageResult = brandService.getBrandPage(reqVO); | 133 | PageResult<BrandDO> pageResult = brandService.getBrandPage(reqVO); |
| @@ -162,8 +161,7 @@ public class BrandServiceImplTest extends BaseDbUnitTest { | @@ -162,8 +161,7 @@ public class BrandServiceImplTest extends BaseDbUnitTest { | ||
| 162 | reqVO.setCategoryId(null); | 161 | reqVO.setCategoryId(null); |
| 163 | reqVO.setName(null); | 162 | reqVO.setName(null); |
| 164 | reqVO.setStatus(null); | 163 | reqVO.setStatus(null); |
| 165 | - reqVO.setBeginCreateTime(null); | ||
| 166 | - reqVO.setEndCreateTime(null); | 164 | + reqVO.setCreateTime((new Date[]{})); |
| 167 | 165 | ||
| 168 | // 调用 | 166 | // 调用 |
| 169 | List<BrandDO> list = brandService.getBrandList(reqVO); | 167 | List<BrandDO> list = brandService.getBrandList(reqVO); |
yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/category/CategoryServiceImplTest.java
| @@ -135,8 +135,7 @@ public class CategoryServiceImplTest extends BaseDbUnitTest { | @@ -135,8 +135,7 @@ public class CategoryServiceImplTest extends BaseDbUnitTest { | ||
| 135 | CategoryPageReqVO reqVO = new CategoryPageReqVO(); | 135 | CategoryPageReqVO reqVO = new CategoryPageReqVO(); |
| 136 | reqVO.setName(null); | 136 | reqVO.setName(null); |
| 137 | reqVO.setStatus(null); | 137 | reqVO.setStatus(null); |
| 138 | - reqVO.setBeginCreateTime(null); | ||
| 139 | - reqVO.setEndCreateTime(null); | 138 | + reqVO.setCreateTime(null); |
| 140 | 139 | ||
| 141 | // 调用 | 140 | // 调用 |
| 142 | PageResult<CategoryDO> pageResult = categoryService.getCategoryPage(reqVO); | 141 | PageResult<CategoryDO> pageResult = categoryService.getCategoryPage(reqVO); |
| @@ -181,8 +180,7 @@ public class CategoryServiceImplTest extends BaseDbUnitTest { | @@ -181,8 +180,7 @@ public class CategoryServiceImplTest extends BaseDbUnitTest { | ||
| 181 | CategoryExportReqVO reqVO = new CategoryExportReqVO(); | 180 | CategoryExportReqVO reqVO = new CategoryExportReqVO(); |
| 182 | reqVO.setName(null); | 181 | reqVO.setName(null); |
| 183 | reqVO.setStatus(null); | 182 | reqVO.setStatus(null); |
| 184 | - reqVO.setBeginCreateTime(null); | ||
| 185 | - reqVO.setEndCreateTime(null); | 183 | + reqVO.setCreateTime(null); |
| 186 | 184 | ||
| 187 | // 调用 | 185 | // 调用 |
| 188 | List<CategoryDO> list = categoryService.getCategoryList(reqVO); | 186 | List<CategoryDO> list = categoryService.getCategoryList(reqVO); |
yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/sku/SkuServiceImplTest.java
| @@ -147,8 +147,7 @@ public class SkuServiceImplTest extends BaseDbUnitTest { | @@ -147,8 +147,7 @@ public class SkuServiceImplTest extends BaseDbUnitTest { | ||
| 147 | reqVO.setBarCode(null); | 147 | reqVO.setBarCode(null); |
| 148 | reqVO.setPicUrl(null); | 148 | reqVO.setPicUrl(null); |
| 149 | reqVO.setStatus(null); | 149 | reqVO.setStatus(null); |
| 150 | - reqVO.setBeginCreateTime(null); | ||
| 151 | - reqVO.setEndCreateTime(null); | 150 | + reqVO.setCreateTime(null); |
| 152 | 151 | ||
| 153 | // 调用 | 152 | // 调用 |
| 154 | PageResult<ProductSkuDO> pageResult = ProductSkuService.getSkuPage(reqVO); | 153 | PageResult<ProductSkuDO> pageResult = ProductSkuService.getSkuPage(reqVO); |
| @@ -202,8 +201,7 @@ public class SkuServiceImplTest extends BaseDbUnitTest { | @@ -202,8 +201,7 @@ public class SkuServiceImplTest extends BaseDbUnitTest { | ||
| 202 | reqVO.setBarCode(null); | 201 | reqVO.setBarCode(null); |
| 203 | reqVO.setPicUrl(null); | 202 | reqVO.setPicUrl(null); |
| 204 | reqVO.setStatus(null); | 203 | reqVO.setStatus(null); |
| 205 | - reqVO.setBeginCreateTime(null); | ||
| 206 | - reqVO.setEndCreateTime(null); | 204 | + reqVO.setCreateTime(null); |
| 207 | 205 | ||
| 208 | // 调用 | 206 | // 调用 |
| 209 | List<ProductSkuDO> list = ProductSkuService.getSkuList(reqVO); | 207 | List<ProductSkuDO> list = ProductSkuService.getSkuList(reqVO); |
yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImplTest.java
| @@ -155,8 +155,7 @@ public class ProductSpuServiceImplTest extends BaseDbUnitTest { | @@ -155,8 +155,7 @@ public class ProductSpuServiceImplTest extends BaseDbUnitTest { | ||
| 155 | reqVO.setPrice(null); | 155 | reqVO.setPrice(null); |
| 156 | reqVO.setQuantity(null); | 156 | reqVO.setQuantity(null); |
| 157 | reqVO.setStatus(null); | 157 | reqVO.setStatus(null); |
| 158 | - reqVO.setBeginCreateTime(null); | ||
| 159 | - reqVO.setEndCreateTime(null); | 158 | + reqVO.setCreateTime(null); |
| 160 | 159 | ||
| 161 | // 调用 | 160 | // 调用 |
| 162 | PageResult<SpuRespVO> pageResult = spuService.getSpuPage(reqVO); | 161 | PageResult<SpuRespVO> pageResult = spuService.getSpuPage(reqVO); |
| @@ -218,8 +217,7 @@ public class ProductSpuServiceImplTest extends BaseDbUnitTest { | @@ -218,8 +217,7 @@ public class ProductSpuServiceImplTest extends BaseDbUnitTest { | ||
| 218 | reqVO.setPrice(null); | 217 | reqVO.setPrice(null); |
| 219 | reqVO.setQuantity(null); | 218 | reqVO.setQuantity(null); |
| 220 | reqVO.setStatus(null); | 219 | reqVO.setStatus(null); |
| 221 | - reqVO.setBeginCreateTime(null); | ||
| 222 | - reqVO.setEndCreateTime(null); | 220 | + reqVO.setCreateTime(null); |
| 223 | 221 | ||
| 224 | // 调用 | 222 | // 调用 |
| 225 | List<ProductSpuDO> list = spuService.getSpuList(reqVO); | 223 | List<ProductSpuDO> list = spuService.getSpuList(reqVO); |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/merchant/vo/app/PayAppExportReqVO.java
| @@ -31,11 +31,7 @@ public class PayAppExportReqVO { | @@ -31,11 +31,7 @@ public class PayAppExportReqVO { | ||
| 31 | private String merchantName; | 31 | private String merchantName; |
| 32 | 32 | ||
| 33 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 33 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 34 | - @ApiModelProperty(value = "开始创建时间") | ||
| 35 | - private Date beginCreateTime; | ||
| 36 | - | ||
| 37 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 38 | - @ApiModelProperty(value = "结束创建时间") | ||
| 39 | - private Date endCreateTime; | 34 | + @ApiModelProperty(value = "创建时间") |
| 35 | + private Date[] createTime; | ||
| 40 | 36 | ||
| 41 | } | 37 | } |