diff --git a/README.md b/README.md index 77eb3cf1..1cc5214f 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@

License Stars - SpringBoot + SpringBoot SpringCloud Spring Cloud Alibaba

@@ -13,55 +13,69 @@ MateCloud是一款基于Spring Cloud Alibaba的微服务架构。旨在为大家提供技术框架的基础能力的封装,减少开发工作,让您只关注业务。 -### 🎨 系统演示 -#### 👉 演示地址:http://cloud.mate.vip +## 🎨 系统演示 +### 👉 演示地址:http://cloud.mate.vip 账号 | 密码| 操作权限 ---|---|--- admin | matecloud| mate-system模块不能执行增删改请求 如果需要验证手机号码登录,手机号码采用页面默认号码,点击获取验证码,输入1188,即可登录。 -#### 🍯 企业版:http://plus.mate.vip +### 🍯 企业版:http://plus.mate.vip 账号 | 密码| 操作权限 ---|---|--- admin | matecloud123 | 不能执行增删改请求,如需全部权限加微信 matecloud 联系 -### 📌 版本演进 +## 📌 版本演进 核心中间件 | 2.5.8及以下 | 3.0.8+ ---|---|--- -Spring Boot | 2.3.*.RELEASE | SpringBoot +Spring Boot | 2.3.*.RELEASE | SpringBoot Spring Cloud | Hoxton SR* | SpringCloud Spring Cloud Alibaba | 2.2.*.RELEASE | SpringCloudAlibaba Nacos | 1.4.*及以下 | nacos Sentinel | 1.8.1 | sentinel -### 📖 官方文档 -#### 👉 文档地址:[http://www.mate.vip/docs](http://www.mate.vip/docs) -#### 👉 商业版文档:[http://doc.mate.vip](http://doc.mate.vip) -#### 👉 快速安装:[http://www.mate.vip/archives/107](http://www.mate.vip/archives/107) - -### 👷 技术交流 +## 📖 官方文档 +### 👉 文档地址:[http://www.mate.vip/docs](http://www.mate.vip/docs) +### 👉 商业版文档:[http://doc.mate.vip](http://doc.mate.vip) +### 👉 快速安装:[http://www.mate.vip/archives/107](http://www.mate.vip/archives/107) + +## 🔥 前端重大更新 +前端采用`Vue3.2`、`Vite 2.5.*`、 `Ant-Design-Vue 2.*`、`TypeScript` 的大型中后台解决方案。 +### 👉 技术栈 +- Vue 3.2.2 +- Pinia 2.0.0-rc.4 +- vue-i18n 9.1.7 +- typescript 4.29.1 +- ant-design-vue 2.2.6 +- axios 0.21.1 +- vue-router 4.0.11 +- vite 2.5.0-beta.2 +### 👉 版本发布 +`4.0.8-M1`版本已经发布,实现了系统管理的基础功能,主要包括菜单管理、用户管理、角色管理、部门管理、日志管理、客户端管理等功能。欢迎体验。 + +## 👷 技术交流

👉 QQ群:2003638 -### 🍪 技术架构 +## 🍪 技术架构

-### ❓ 部分截图 +## ❓ 部分截图 - - - + + + - - - + + + @@ -70,8 +84,8 @@ Sentinel | 1.8.1 |
-### 🔧 功能特点 -- 主体框架:采用最新的`Spring Cloud 2020.0.3`, `Spring Boot 2.5.2`, `Spring Cloud Alibaba 2021.1`版本进行系统设计; +## 🔧 功能特点 +- 主体框架:采用最新的`Spring Cloud 2020.0.3`, `Spring Boot 2.5.4`, `Spring Cloud Alibaba 2021.1`版本进行系统设计; - 统一注册:支持`Nacos`作为注册中心,实现多配置、分群组、分命名空间、多业务模块的注册和发现功能; @@ -97,7 +111,7 @@ Sentinel | 1.8.1 | @@ -153,7 +167,7 @@ matecloud -- 父项目,各模块分离,方便集成和微服务 vip.mate mate-starter-dependencies - 3.7.8 + 3.8.8 pom import @@ -182,7 +196,7 @@ matecloud -- 父项目,各模块分离,方便集成和微服务 特别感谢卢神对`MateCloud`项目提供的技术支持! - 卢春梦: [mica](https://gitee.com/596392912/mica) - chuzhixin: [vue-admin-beautiful](https://github.com/chuzhixin/vue-admin-beautiful) - +- anncwb: [vue-vben-admin](https://github.com/anncwb/vue-vben-admin) ## 📚 开源项目推荐 - [SpringBoot脚手架](https://gitee.com/bdj/SpringBoot_v2) diff --git a/doc/images/1.png b/doc/images/1.png deleted file mode 100644 index b4d76a32..00000000 Binary files a/doc/images/1.png and /dev/null differ diff --git a/doc/images/2.png b/doc/images/2.png deleted file mode 100644 index 28181822..00000000 Binary files a/doc/images/2.png and /dev/null differ diff --git a/doc/images/3.png b/doc/images/3.png deleted file mode 100644 index 4a1adb7f..00000000 Binary files a/doc/images/3.png and /dev/null differ diff --git a/doc/images/4.png b/doc/images/4.png deleted file mode 100644 index 9cf6a693..00000000 Binary files a/doc/images/4.png and /dev/null differ diff --git a/doc/images/5.png b/doc/images/5.png deleted file mode 100644 index 0ad36387..00000000 Binary files a/doc/images/5.png and /dev/null differ diff --git a/doc/images/6.png b/doc/images/6.png deleted file mode 100644 index 23fccbab..00000000 Binary files a/doc/images/6.png and /dev/null differ diff --git a/doc/images/artemis_page1.png b/doc/images/artemis_page1.png new file mode 100644 index 00000000..f6413575 Binary files /dev/null and b/doc/images/artemis_page1.png differ diff --git a/doc/images/artemis_page2.png b/doc/images/artemis_page2.png new file mode 100644 index 00000000..8f174396 Binary files /dev/null and b/doc/images/artemis_page2.png differ diff --git a/doc/images/artemis_page3.png b/doc/images/artemis_page3.png new file mode 100644 index 00000000..70dadb49 Binary files /dev/null and b/doc/images/artemis_page3.png differ diff --git a/doc/images/artemis_page4.png b/doc/images/artemis_page4.png new file mode 100644 index 00000000..272e9168 Binary files /dev/null and b/doc/images/artemis_page4.png differ diff --git a/doc/images/artemis_page5.png b/doc/images/artemis_page5.png new file mode 100644 index 00000000..a778024d Binary files /dev/null and b/doc/images/artemis_page5.png differ diff --git a/doc/images/artemis_page6.png b/doc/images/artemis_page6.png new file mode 100644 index 00000000..e5bef4be Binary files /dev/null and b/doc/images/artemis_page6.png differ diff --git a/doc/sql/matex.sql b/doc/sql/matex.sql index 11273ada..ff822af2 100644 --- a/doc/sql/matex.sql +++ b/doc/sql/matex.sql @@ -7,6 +7,7 @@ CREATE TABLE `mate_sys_menu` ( `name` varchar(32) DEFAULT NULL COMMENT '菜单标题', `permission` varchar(32) DEFAULT NULL COMMENT '菜单权限', `path` varchar(128) DEFAULT NULL COMMENT '路径', + `component` varchar(128) DEFAULT NULL COMMENT '组件', `parent_id` bigint(20) DEFAULT '0' COMMENT '父菜单ID', `icon` varchar(32) DEFAULT NULL COMMENT '菜单图标', `sort` int(11) DEFAULT '1' COMMENT '排序值', @@ -22,80 +23,82 @@ CREATE TABLE `mate_sys_menu` ( `is_deleted` char(1) DEFAULT '0' COMMENT '删除标识', `tenant_id` bigint(20) unsigned DEFAULT '0' COMMENT '租户ID', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=2063 DEFAULT CHARSET=utf8mb4 COMMENT='菜单权限表'; +) ENGINE=InnoDB AUTO_INCREMENT=2069 DEFAULT CHARSET=utf8mb4 COMMENT='菜单权限表'; -- ---------------------------- -- 初始化-菜单权限表数据 -- ---------------------------- -INSERT INTO `mate_sys_menu` VALUES (1000, '系统管理', NULL, '/system', -1, 'imac', 1, '0', '0', '0', '0', NULL, NULL, '2020-06-17 14:21:45', '2020-08-11 03:41:11', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1100, '用户管理', NULL, '/system/user', 1000, 'user', 2, '0', '1', '0', '0', NULL, NULL, '2020-06-18 14:28:36', '2021-04-08 14:15:40', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1101, '用户新增', 'sys:user:add', '', 1100, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-06-17 14:32:51', '2020-07-03 08:51:48', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1102, '用户修改', 'sys:user:edit', NULL, 1100, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-06-20 00:27:40', '2020-07-03 08:51:50', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1103, '用户删除', 'sys:user:delete', NULL, 1100, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-06-20 00:27:56', '2020-07-03 08:51:52', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1104, '用户启用', 'sys:user:enable', NULL, 1100, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-03 08:49:47', '2020-07-03 08:55:39', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1105, '用户禁用', 'sys:user:disable', NULL, 1100, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-03 08:50:16', '2020-07-03 08:55:40', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1106, '用户导出', 'sys:user:export', NULL, 1100, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-03 08:50:58', '2020-07-03 08:55:42', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1200, '角色管理', NULL, '/system/role', 1000, 'repair', 4, '0', '1', '0', '0', NULL, NULL, '2020-06-19 16:36:01', '2021-04-08 14:16:36', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1201, '角色新增', 'sys:role:add', NULL, 1200, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-06-20 00:37:12', '2020-07-03 14:00:56', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1202, '角色修改', 'sys:role:edit', NULL, 1200, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-06-20 00:38:23', '2020-07-03 14:01:06', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1203, '角色删除', 'sys:role:delete', NULL, 1200, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-06-20 00:38:53', '2020-07-03 14:01:14', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1204, '角色导出', 'sys:role:export', NULL, 1200, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-03 14:02:37', '2020-07-03 14:02:50', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1205, '角色权限', 'sys:role:perm', NULL, 1200, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-03 14:03:32', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1300, '菜单管理', NULL, '/system/menu', 1000, 'tree', 1, '0', '1', '0', '0', NULL, NULL, '2020-06-19 16:39:07', '2021-04-08 14:16:05', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1301, '菜单新增', 'sys:menu:add', NULL, 1300, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-06-20 00:39:48', '2020-07-03 14:11:59', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1302, '菜单修改', 'sys:menu:edit', NULL, 1300, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-06-20 00:40:21', '2020-07-03 14:12:15', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1303, '菜单删除', 'sys:menu:delete', NULL, 1300, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-06-20 00:40:42', '2020-07-03 14:12:23', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1304, '菜单启用', 'sys:menu:enable', NULL, 1300, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-03 14:12:59', '2020-07-03 14:13:14', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1305, '菜单禁用', 'sys:menu:disable', NULL, 1300, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-03 14:13:34', '2020-07-03 14:13:57', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1306, '菜单导出', 'sys:menu:export', NULL, 1300, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-03 14:14:32', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1400, '部门管理', NULL, '/system/depart', 1000, 'table2', 3, '0', '1', '0', '0', NULL, NULL, '2020-06-26 22:52:41', '2021-04-08 14:16:25', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1401, '部门新增', 'sys:depart:add', NULL, 1400, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-06-27 14:53:37', '2020-07-03 14:26:12', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1402, '部门修改', 'sys:depart:edit', NULL, 1400, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-06-27 14:54:47', '2020-07-03 14:26:14', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1403, '部门删除', 'sys:depart:delete', NULL, 1400, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-06-27 14:55:15', '2020-07-03 14:26:17', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (1404, '部门导出', 'sys:depart:export', NULL, 1400, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-03 14:27:26', '2020-07-03 14:27:45', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2015, '开发运维', NULL, '/devops', -1, 'settings', 3, '0', '0', '0', '0', NULL, NULL, '2020-07-05 11:20:31', '2020-10-19 22:21:49', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2016, '数据源管理', '', '/devops/datasource', 2015, 'table', 1, '0', '1', '0', '0', NULL, NULL, '2020-07-06 19:21:58', '2020-07-09 06:50:01', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2017, '数据源新增', 'sys:datasource:add', NULL, 2016, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-07 04:08:11', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2018, '数据源修改', 'sys:datasource:edit', NULL, 2016, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-07 04:08:40', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2019, '数据源删除', 'sys:datasource:delete', NULL, 2016, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-07 04:09:05', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2020, '数据源导出', 'sys:datasource:export', NULL, 2016, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-07 04:09:25', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2021, '代码生成', NULL, '/devops/generator', 2015, 'download', 1, '0', '1', '0', '0', NULL, NULL, '2020-07-09 07:08:50', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2022, '代码生成', 'devops:gen', NULL, 2021, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-08 23:09:45', '2020-07-13 14:35:14', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2023, '监控配置中心', NULL, '/devops/monitor', 2015, 'validCode', 1, '0', '1', '0', '0', NULL, NULL, '2020-07-10 20:23:07', '2020-07-11 04:39:40', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2026, '客户端管理', NULL, '/system/client', 1000, 'iPhone', 7, '0', '1', '0', '0', NULL, NULL, '2020-07-13 22:47:20', '2021-04-08 14:17:27', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2027, '新增客户端', 'sys:client:add', NULL, 2026, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-13 22:47:44', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2028, '修改客户端', 'sys:client:edit', NULL, 2026, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-13 23:47:37', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2029, '删除客户端', 'sys:client:delete', NULL, 2026, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-13 23:48:11', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2030, '导出客户端', 'sys:client:export', NULL, 2026, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-13 23:48:28', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2031, '启禁客户端', 'sys:client:status', NULL, 2026, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-13 23:49:22', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2032, '操作日志', NULL, '/system/log', 1000, 'comment', 8, '0', '1', '0', '0', NULL, NULL, '2020-07-15 05:11:09', '2021-04-08 14:26:14', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2033, '详细日志', 'sys:log:detail', NULL, 2032, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-16 04:05:48', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2034, '日志删除', 'sys:log:delete', NULL, 2032, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-16 04:06:16', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2035, '字典管理', NULL, '/system/dict', 1000, 'add', 6, '0', '1', '0', '0', NULL, NULL, '2020-07-17 09:29:31', '2021-04-08 14:17:17', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2036, '新增字典', 'sys:dict:add', NULL, 2035, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-20 02:48:01', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2037, '修改字典', 'sys:dict:edit', NULL, 2035, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-20 02:48:20', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2038, '删除字典', 'sys:dict:delete', NULL, 2035, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-07-20 02:48:39', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2039, '组件管理', NULL, '/system/component', 1000, 'nested', 5, '0', '1', '0', '0', NULL, NULL, '2020-08-08 05:35:05', '2021-04-08 14:17:09', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2040, '内容管理', NULL, '/content', -1, 'content', 4, '0', '0', '0', '0', NULL, NULL, '2020-08-09 00:21:42', '2020-08-29 03:12:22', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2041, '文件管理', NULL, '/content/attachment', 2040, 'folder', 1, '0', '1', '0', '0', NULL, NULL, '2020-08-09 00:27:06', '2020-08-10 03:31:49', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2042, '修改组件', 'sys:comp:edit', NULL, 2039, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-08-10 00:42:28', '2020-08-10 08:42:57', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2043, '上传文件', 'sys:attach:add', NULL, 2041, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-08-10 08:43:52', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2044, '删除文件', 'sys:attach:delete', NULL, 2041, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-08-10 08:44:29', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2045, '网关中心', NULL, '/gateway', -1, 'gateway', 2, '0', '0', '0', '0', NULL, NULL, '2020-08-28 19:12:00', '2020-10-19 22:21:52', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2047, '黑名单管理', NULL, '/gateway/blacklist', 2045, 'blacklist', 3, '0', '1', '0', '0', NULL, NULL, '2020-08-29 03:15:34', '2020-10-19 22:21:40', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2048, '新增黑名单', 'gw:bl:add', NULL, 2047, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-08-29 09:38:52', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2049, '修改黑名单', 'gw:bl:edit', NULL, 2047, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-08-29 09:39:27', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2050, '删除黑名单', 'gw:bl:del', NULL, 2047, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-08-29 09:39:51', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2051, '黑名单状态', 'gw:bl:status', NULL, 2047, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-08-29 09:44:20', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2053, '文档管理', NULL, '/content/doc', 2040, 'comment', 1, '0', '1', '0', '0', NULL, NULL, '2020-09-07 12:16:38', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2055, 'API管理', NULL, '/gateway/api', 2045, 'discovery', 2, '0', '1', '0', '0', NULL, NULL, '2020-10-14 14:00:06', '2020-10-17 12:53:38', '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2056, '微服务管理', NULL, '/gateway/route', 2045, 'share3', 1, '0', '1', '0', '0', NULL, NULL, '2020-10-17 12:53:27', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2057, '同步API', 'gw:api:sync', NULL, 2055, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-10-17 14:16:06', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2058, '删除API', 'gw:api:del', NULL, 2055, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-10-17 14:17:25', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2059, '修改API', 'gw:api:edit', NULL, 2055, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-10-17 14:17:58', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2060, '新增微服务', 'gw:route:add', NULL, 2056, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-10-19 05:19:45', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2061, '修改微服务', 'gw:route:edit', NULL, 2056, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-10-19 05:20:49', NULL, '0', '0', 0); -INSERT INTO `mate_sys_menu` VALUES (2062, '删除微服务', 'gw:route:del', NULL, 2056, NULL, 1, '0', '2', '0', '0', NULL, NULL, '2020-10-19 05:21:03', NULL, '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1000, '系统管理', NULL, '/system', 'Layout', -1, 'ant-design:appstore-outlined', 1, '0', '0', '0', '1', NULL, NULL, '2020-06-17 14:21:45', '2021-08-13 20:56:34', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1100, '用户管理', NULL, '/system/user', '/system/user/index', 1000, 'ant-design:user-outlined', 2, '0', '1', '0', '1', NULL, NULL, '2020-06-18 14:28:36', '2021-08-13 21:28:25', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1101, '用户新增', 'sys:user:add', '', NULL, 1100, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-06-17 14:32:51', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1102, '用户修改', 'sys:user:edit', NULL, NULL, 1100, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-06-20 00:27:40', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1103, '用户删除', 'sys:user:delete', NULL, NULL, 1100, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-06-20 00:27:56', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1104, '用户启用', 'sys:user:enable', NULL, NULL, 1100, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-03 08:49:47', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1105, '用户禁用', 'sys:user:disable', NULL, NULL, 1100, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-03 08:50:16', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1106, '用户导出', 'sys:user:export', NULL, NULL, 1100, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-03 08:50:58', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1200, '角色管理', NULL, '/system/role', '/system/role/index', 1000, 'ant-design:team-outlined', 4, '0', '1', '0', '1', NULL, NULL, '2020-06-19 16:36:01', '2021-08-14 07:17:58', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1201, '角色新增', 'sys:role:add', NULL, NULL, 1200, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-06-20 00:37:12', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1202, '角色修改', 'sys:role:edit', NULL, NULL, 1200, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-06-20 00:38:23', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1203, '角色删除', 'sys:role:delete', NULL, NULL, 1200, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-06-20 00:38:53', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1204, '角色导出', 'sys:role:export', NULL, NULL, 1200, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-03 14:02:37', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1205, '角色权限', 'sys:role:perm', NULL, NULL, 1200, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-03 14:03:32', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1300, '菜单管理', NULL, '/system/menu', '/system/menu/index', 1000, 'ant-design:menu-unfold-outlined', 1, '0', '1', '0', '1', NULL, NULL, '2020-06-19 16:39:07', '2021-08-13 21:03:17', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1301, '菜单新增', 'sys:menu:add', NULL, NULL, 1300, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-06-20 00:39:48', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1302, '菜单修改', 'sys:menu:edit', NULL, NULL, 1300, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-06-20 00:40:21', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1303, '菜单删除', 'sys:menu:delete', NULL, NULL, 1300, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-06-20 00:40:42', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1304, '菜单启用', 'sys:menu:enable', NULL, NULL, 1300, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-03 14:12:59', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1305, '菜单禁用', 'sys:menu:disable', NULL, NULL, 1300, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-03 14:13:34', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1306, '菜单导出', 'sys:menu:export', NULL, NULL, 1300, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-03 14:14:32', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1400, '部门管理', NULL, '/system/depart', '/system/depart/index', 1000, 'ant-design:apartment-outlined', 3, '0', '1', '0', '1', NULL, NULL, '2020-06-26 22:52:41', '2021-08-13 21:20:11', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1401, '部门新增', 'sys:depart:add', NULL, NULL, 1400, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-06-27 14:53:37', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1402, '部门修改', 'sys:depart:edit', NULL, NULL, 1400, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-06-27 14:54:47', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1403, '部门删除', 'sys:depart:delete', NULL, NULL, 1400, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-06-27 14:55:15', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (1404, '部门导出', 'sys:depart:export', NULL, NULL, 1400, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-03 14:27:26', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2015, '开发运维', NULL, '/devops', 'Layout', -1, 'ant-design:tool-outlined', 3, '0', '0', '0', '1', NULL, NULL, '2020-07-05 11:20:31', '2021-08-14 15:00:56', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2016, '数据源管理', '', '/devops/datasource', '/devops/datasource/index', 2015, 'ant-design:database-outlined', 1, '0', '1', '0', '1', NULL, NULL, '2020-07-06 19:21:58', '2021-08-16 23:06:52', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2017, '数据源新增', 'sys:datasource:add', NULL, NULL, 2016, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-07 04:08:11', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2018, '数据源修改', 'sys:datasource:edit', NULL, NULL, 2016, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-07 04:08:40', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2019, '数据源删除', 'sys:datasource:delete', NULL, NULL, 2016, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-07 04:09:05', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2020, '数据源导出', 'sys:datasource:export', NULL, NULL, 2016, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-07 04:09:25', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2021, '代码生成', NULL, '/devops/generator', '/devops/generator/index', 2015, 'ant-design:experiment-outlined', 1, '0', '1', '0', '1', NULL, NULL, '2020-07-09 07:08:50', '2021-08-16 23:06:19', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2022, '代码生成', 'devops:gen', NULL, NULL, 2021, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-08 23:09:45', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2023, '监控配置中心', NULL, '/devops/monitor', '/devops/monitor/index', 2015, 'ant-design:desktop-outlined', 1, '0', '1', '0', '1', NULL, NULL, '2020-07-10 20:23:07', '2021-08-16 23:04:56', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2026, '客户端管理', NULL, '/system/client', '/system/client/index', 1000, 'ant-design:mobile-outlined', 7, '0', '1', '0', '1', NULL, NULL, '2020-07-13 22:47:20', '2021-08-14 14:52:32', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2027, '新增客户端', 'sys:client:add', NULL, NULL, 2026, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-13 22:47:44', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2028, '修改客户端', 'sys:client:edit', NULL, NULL, 2026, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-13 23:47:37', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2029, '删除客户端', 'sys:client:delete', NULL, NULL, 2026, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-13 23:48:11', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2030, '导出客户端', 'sys:client:export', NULL, NULL, 2026, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-13 23:48:28', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2031, '启禁客户端', 'sys:client:status', NULL, NULL, 2026, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-13 23:49:22', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2032, '操作日志', NULL, '/system/log', '/system/log/index', 1000, 'ant-design:ordered-list-outlined', 8, '0', '1', '0', '1', NULL, NULL, '2020-07-15 05:11:09', '2021-08-14 14:55:52', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2033, '详细日志', 'sys:log:detail', NULL, NULL, 2032, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-16 04:05:48', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2034, '日志删除', 'sys:log:delete', NULL, NULL, 2032, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-16 04:06:16', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2035, '字典管理', NULL, '/system/dict', '/system/dict/index', 1000, 'ant-design:read-outlined', 6, '0', '1', '0', '1', NULL, NULL, '2020-07-17 09:29:31', '2021-08-14 14:36:16', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2036, '新增字典', 'sys:dict:add', NULL, NULL, 2035, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-20 02:48:01', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2037, '修改字典', 'sys:dict:edit', NULL, NULL, 2035, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-20 02:48:20', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2038, '删除字典', 'sys:dict:delete', NULL, NULL, 2035, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-07-20 02:48:39', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2039, '组件管理', NULL, '/content/component', '/content/component/index', 2040, 'ant-design:usb-outlined', 1, '0', '1', '0', '1', NULL, NULL, '2020-08-08 05:35:05', '2021-08-16 23:09:40', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2040, '内容管理', NULL, '/content', 'Layout', -1, 'ant-design:dribbble-outlined', 4, '0', '0', '0', '1', NULL, NULL, '2020-08-09 00:21:42', '2021-08-14 15:01:58', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2041, '文件管理', NULL, '/content/attachment', '/content/attachment/index', 2040, 'ant-design:folder-open-twotone', 2, '0', '1', '0', '1', NULL, NULL, '2020-08-09 00:27:06', '2021-08-16 23:10:21', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2042, '修改组件', 'sys:comp:edit', NULL, NULL, 2039, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-08-10 00:42:28', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2043, '上传文件', 'sys:attach:add', NULL, NULL, 2041, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-08-10 08:43:52', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2044, '删除文件', 'sys:attach:delete', NULL, NULL, 2041, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-08-10 08:44:29', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2045, '网关中心', NULL, '/gateway', 'Layout', -1, 'ant-design:instagram-outlined', 2, '0', '0', '0', '1', NULL, NULL, '2020-08-28 19:12:00', '2021-08-14 14:58:31', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2047, '黑名单管理', NULL, '/gateway/blacklist', '/gateway/blacklist/index', 2045, 'ant-design:codepen-square-filled', 3, '0', '1', '0', '1', NULL, NULL, '2020-08-29 03:15:34', '2021-08-16 23:03:31', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2048, '新增黑名单', 'gw:bl:add', NULL, NULL, 2047, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-08-29 09:38:52', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2049, '修改黑名单', 'gw:bl:edit', NULL, NULL, 2047, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-08-29 09:39:27', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2050, '删除黑名单', 'gw:bl:del', NULL, NULL, 2047, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-08-29 09:39:51', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2051, '黑名单状态', 'gw:bl:status', NULL, NULL, 2047, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-08-29 09:44:20', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2055, 'API管理', NULL, '/gateway/api', '/gateway/api/index', 2045, 'ant-design:sliders-outlined', 2, '0', '1', '0', '1', NULL, NULL, '2020-10-14 14:00:06', '2021-08-16 23:02:57', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2056, '微服务管理', NULL, '/gateway/route', '/gateway/route/index', 2045, 'ant-design:ungroup-outlined', 1, '0', '1', '0', '1', NULL, NULL, '2020-10-17 12:53:27', '2021-08-16 22:56:32', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2057, '同步API', 'gw:api:sync', NULL, NULL, 2055, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-10-17 14:16:06', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2058, '删除API', 'gw:api:del', NULL, NULL, 2055, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-10-17 14:17:25', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2059, '修改API', 'gw:api:edit', NULL, NULL, 2055, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-10-17 14:17:58', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2060, '新增微服务', 'gw:route:add', NULL, NULL, 2056, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-10-19 05:19:45', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2061, '修改微服务', 'gw:route:edit', NULL, NULL, 2056, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-10-19 05:20:49', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2062, '删除微服务', 'gw:route:del', NULL, NULL, 2056, NULL, 1, '0', '2', '0', '1', NULL, NULL, '2020-10-19 05:21:03', '2021-07-24 23:29:27', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2064, '工作台', NULL, '/dashboard', 'Layout', -1, 'ant-design:windows-outlined', 0, '0', '0', '0', '0', NULL, NULL, '2021-08-16 09:07:39', '2021-08-16 18:29:30', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2065, '分析页', NULL, '/dashboard', '/dashboard/analysis/index', 2064, 'ant-design:rise-outlined', 0, '0', '1', '0', '0', NULL, NULL, '2021-08-16 09:14:24', '2021-08-16 16:07:05', '0', '0', 0); +INSERT INTO `mate_sys_menu` VALUES (2068, '工作台', NULL, '/dashboard/workbench', '/dashboard/workbench/index', 2064, 'ant-design:block-outlined', 2, '0', '1', '0', '0', NULL, NULL, '2021-08-16 20:23:58', NULL, '0', '0', 0); -- ---------------------------- -- 2、用户表 mate_sys_user @@ -116,6 +119,7 @@ CREATE TABLE `mate_sys_user` ( `role_id` bigint(20) DEFAULT '0' COMMENT '角色id', `depart_id` bigint(20) DEFAULT '0' COMMENT '部门id', `status` char(1) DEFAULT NULL COMMENT '状态', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', `create_by` varchar(32) DEFAULT NULL COMMENT '创建人', `update_by` varchar(32) DEFAULT NULL COMMENT '更新人', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', @@ -174,6 +178,8 @@ CREATE TABLE `mate_sys_role` ( `role_name` varchar(64) DEFAULT NULL COMMENT '角色名称', `role_code` varchar(64) DEFAULT NULL COMMENT '角色编码', `description` varchar(255) DEFAULT NULL COMMENT '描述', + `sort` int(11) DEFAULT '0' COMMENT '排序', + `status` char(1) DEFAULT NULL COMMENT '状态', `create_by` varchar(32) DEFAULT NULL COMMENT '创建人', `update_by` varchar(32) DEFAULT NULL COMMENT '更新人', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', @@ -187,8 +193,8 @@ CREATE TABLE `mate_sys_role` ( -- ---------------------------- -- 初始化-角色表数据 -- ---------------------------- -INSERT INTO `mate_sys_role` VALUES (1, '管理员', 'admin', '管理员组', NULL, NULL, '2020-06-28 15:02:16', NULL, '0', NULL); -INSERT INTO `mate_sys_role` VALUES (2, '演示会员', 'demo2', '演示会员组', NULL, NULL, '2020-06-28 07:02:36', '2020-06-28 07:02:58', '0', NULL); +INSERT INTO `mate_sys_role` VALUES (1, '管理员', 'admin', '管理员组', 0, '1', NULL, NULL, '2020-06-28 15:02:16', '2021-08-14 07:36:57', '0', NULL); +INSERT INTO `mate_sys_role` VALUES (2, '演示会员', 'demo2', '演示会员组', 0, '1', NULL, NULL, '2020-06-28 07:02:36', '2021-08-14 07:37:02', '0', NULL); -- ---------------------------- -- 5、字典表 mate_sys_dict @@ -353,7 +359,7 @@ CREATE TABLE `mate_sys_role_permission` ( `menu_id` bigint(64) DEFAULT NULL COMMENT '菜单id', `role_id` bigint(64) DEFAULT NULL COMMENT '角色id', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=2173 DEFAULT CHARSET=utf8mb4 COMMENT='角色权限表'; +) ENGINE=InnoDB AUTO_INCREMENT=2710 DEFAULT CHARSET=utf8mb4 COMMENT='角色权限表'; -- ---------------------------- -- 初始化-角色权限表数据 @@ -364,76 +370,205 @@ INSERT INTO `mate_sys_role_permission` VALUES (979, 1301, 2); INSERT INTO `mate_sys_role_permission` VALUES (980, 1302, 2); INSERT INTO `mate_sys_role_permission` VALUES (981, 1303, 2); INSERT INTO `mate_sys_role_permission` VALUES (982, 2009, 2); -INSERT INTO `mate_sys_role_permission` VALUES (2103, 1000, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2104, 1300, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2105, 1301, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2106, 1302, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2107, 1303, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2108, 1304, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2109, 1305, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2110, 1306, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2111, 1100, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2112, 1101, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2113, 1102, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2114, 1103, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2115, 1104, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2116, 1105, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2117, 1106, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2118, 1400, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2119, 1401, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2120, 1402, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2121, 1403, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2122, 1404, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2123, 1200, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2124, 1201, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2125, 1202, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2126, 1203, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2127, 1204, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2128, 1205, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2129, 2026, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2130, 2027, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2131, 2028, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2132, 2029, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2133, 2030, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2134, 2031, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2135, 2035, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2136, 2036, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2137, 2037, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2138, 2038, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2139, 2039, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2140, 2042, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2141, 2032, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2142, 2033, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2143, 2034, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2144, 2045, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2145, 2056, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2146, 2060, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2147, 2061, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2148, 2062, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2149, 2055, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2150, 2057, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2151, 2058, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2152, 2059, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2153, 2047, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2154, 2048, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2155, 2049, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2156, 2050, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2157, 2051, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2158, 2015, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2159, 2016, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2160, 2017, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2161, 2018, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2162, 2019, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2163, 2020, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2164, 2021, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2165, 2022, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2166, 2023, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2167, 2040, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2168, 2041, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2169, 2043, 1); -INSERT INTO `mate_sys_role_permission` VALUES (2170, 2044, 1); INSERT INTO `mate_sys_role_permission` VALUES (2171, NULL, NULL); -INSERT INTO `mate_sys_role_permission` VALUES (2172, 2053, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2370, 1000, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2371, 1300, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2372, 1301, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2373, 1302, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2374, 1303, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2375, 1304, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2376, 1305, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2377, 1306, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2378, 1100, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2379, 1101, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2380, 1102, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2381, 1103, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2382, 1104, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2383, 1105, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2384, 1106, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2385, 1400, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2386, 1401, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2387, 1402, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2388, 1403, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2389, 1404, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2390, 1200, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2391, 1201, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2392, 1202, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2393, 1203, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2394, 1204, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2395, 1205, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2396, 2039, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2397, 2042, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2398, 2035, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2399, 2036, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2400, 2037, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2401, 2038, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2402, 2026, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2403, 2027, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2404, 2028, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2405, 2029, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2406, 2030, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2407, 2031, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2408, 2032, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2409, 2033, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2410, 2034, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2411, 2045, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2412, 2056, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2413, 2060, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2414, 2061, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2415, 2062, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2416, 2055, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2417, 2057, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2418, 2058, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2419, 2059, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2420, 2047, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2421, 2048, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2422, 2049, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2423, 2050, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2424, 2051, 3); +INSERT INTO `mate_sys_role_permission` VALUES (2567, 2064, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2568, 2065, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2569, 1000, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2570, 1300, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2571, 1301, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2572, 1302, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2573, 1303, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2574, 1304, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2575, 1305, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2576, 1306, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2577, 1100, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2578, 1101, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2579, 1102, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2580, 1103, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2581, 1104, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2582, 1105, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2583, 1106, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2584, 1400, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2585, 1401, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2586, 1402, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2587, 1403, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2588, 1404, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2589, 1200, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2590, 1201, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2591, 1202, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2592, 1203, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2593, 1204, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2594, 1205, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2595, 2035, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2596, 2036, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2597, 2037, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2598, 2038, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2599, 2026, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2600, 2027, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2601, 2028, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2602, 2029, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2603, 2030, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2604, 2031, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2605, 2032, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2606, 2033, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2607, 2034, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2608, 2045, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2609, 2056, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2610, 2060, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2611, 2061, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2612, 2062, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2613, 2055, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2614, 2057, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2615, 2058, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2616, 2059, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2617, 2047, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2618, 2048, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2619, 2049, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2620, 2050, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2621, 2051, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2622, 2015, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2623, 2016, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2624, 2017, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2625, 2018, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2626, 2019, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2627, 2020, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2628, 2021, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2629, 2022, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2630, 2023, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2631, 2040, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2632, 2053, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2633, 2039, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2634, 2042, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2635, 2041, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2636, 2043, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2637, 2044, 4); +INSERT INTO `mate_sys_role_permission` VALUES (2638, 1000, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2639, 1300, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2640, 1301, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2641, 1302, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2642, 1303, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2643, 1304, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2644, 1305, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2645, 1306, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2646, 1100, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2647, 1101, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2648, 1102, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2649, 1103, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2650, 1104, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2651, 1105, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2652, 1106, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2653, 1400, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2654, 1401, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2655, 1402, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2656, 1403, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2657, 1404, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2658, 1200, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2659, 1201, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2660, 1202, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2661, 1203, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2662, 1204, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2663, 1205, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2664, 2035, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2665, 2036, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2666, 2037, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2667, 2038, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2668, 2026, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2669, 2027, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2670, 2028, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2671, 2029, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2672, 2030, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2673, 2031, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2674, 2032, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2675, 2033, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2676, 2034, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2677, 2039, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2678, 2042, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2679, 2040, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2680, 2053, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2681, 2041, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2682, 2043, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2683, 2044, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2684, 2045, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2685, 2056, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2686, 2060, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2687, 2061, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2688, 2062, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2689, 2055, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2690, 2057, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2691, 2058, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2692, 2059, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2693, 2047, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2694, 2048, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2695, 2049, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2696, 2050, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2697, 2051, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2698, 2015, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2699, 2016, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2700, 2017, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2701, 2018, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2702, 2019, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2703, 2020, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2704, 2021, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2705, 2022, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2706, 2023, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2707, 2065, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2708, 2068, 1); +INSERT INTO `mate_sys_role_permission` VALUES (2709, 2064, 1); -- ---------------------------- -- 11、系统接口表 mate_sys_api diff --git a/doc/sql/update/matex_4.0.8_4.0.9_update.sql b/doc/sql/update/matex_4.0.8_4.0.9_update.sql new file mode 100644 index 00000000..84bcde64 --- /dev/null +++ b/doc/sql/update/matex_4.0.8_4.0.9_update.sql @@ -0,0 +1 @@ +ALTER TABLE mate_sys_user ADD COLUMN `remark` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '备注'; diff --git a/mate-core/mate-starter-auth/pom.xml b/mate-core/mate-starter-auth/pom.xml index 9e4f7c93..1a7f3dd4 100644 --- a/mate-core/mate-starter-auth/pom.xml +++ b/mate-core/mate-starter-auth/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-cloud/pom.xml b/mate-core/mate-starter-cloud/pom.xml index 0ffde7c3..d56a6a98 100644 --- a/mate-core/mate-starter-cloud/pom.xml +++ b/mate-core/mate-starter-cloud/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-cloud/src/main/java/vip/mate/core/cloud/config/RequestConfiguration.java b/mate-core/mate-starter-cloud/src/main/java/vip/mate/core/cloud/config/RequestConfiguration.java index 1ed92450..a2f6f167 100644 --- a/mate-core/mate-starter-cloud/src/main/java/vip/mate/core/cloud/config/RequestConfiguration.java +++ b/mate-core/mate-starter-cloud/src/main/java/vip/mate/core/cloud/config/RequestConfiguration.java @@ -3,7 +3,6 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import vip.mate.core.cloud.filter.TenantContextHolderFilter; import vip.mate.core.cloud.filter.TraceFilter; import vip.mate.core.cloud.props.MateRequestProperties; @@ -15,10 +14,10 @@ @EnableConfigurationProperties(MateRequestProperties.class) public class RequestConfiguration { - @Bean - public TenantContextHolderFilter tenantContextHolderFilter() { - return new TenantContextHolderFilter(); - } +// @Bean +// public TenantContextHolderFilter tenantContextHolderFilter() { +// return new TenantContextHolderFilter(); +// } @Bean public TraceFilter traceFilter() { diff --git a/mate-core/mate-starter-common/pom.xml b/mate-core/mate-starter-common/pom.xml index 498da59c..beabc394 100644 --- a/mate-core/mate-starter-common/pom.xml +++ b/mate-core/mate-starter-common/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-common/src/main/java/vip/mate/core/common/constant/MateConstant.java b/mate-core/mate-starter-common/src/main/java/vip/mate/core/common/constant/MateConstant.java index a2fee2d8..2a83df03 100644 --- a/mate-core/mate-starter-common/src/main/java/vip/mate/core/common/constant/MateConstant.java +++ b/mate-core/mate-starter-common/src/main/java/vip/mate/core/common/constant/MateConstant.java @@ -13,7 +13,7 @@ public class MateConstant { /** * 应用版本号 */ - public static final String MATE_APP_VERSION = "3.8.8"; + public static final String MATE_APP_VERSION = "4.0.9"; /** * Spring 应用名 prop key diff --git a/mate-core/mate-starter-common/src/main/java/vip/mate/core/common/constant/SystemConstant.java b/mate-core/mate-starter-common/src/main/java/vip/mate/core/common/constant/SystemConstant.java index 82f6b44e..7270a83d 100644 --- a/mate-core/mate-starter-common/src/main/java/vip/mate/core/common/constant/SystemConstant.java +++ b/mate-core/mate-starter-common/src/main/java/vip/mate/core/common/constant/SystemConstant.java @@ -4,6 +4,7 @@ /** * 系统管理缓存name + * * @author pangu * 2020-7-4 */ @@ -19,4 +20,13 @@ public class SystemConstant { public static final String SYS_MENU_CACHE = "sys-menu-cache-"; public static final String SYS_DICT_CACHE = "sys-dict-cache-"; + + /** + * 角色权限默认值 + */ + public static final String ROLE_DEFAULT_ID = "0"; + /** + * 角色权限默认名称 + */ + public static final String ROLE_DEFAULT_VALUE = "角色未授权"; } diff --git a/mate-core/mate-starter-database/pom.xml b/mate-core/mate-starter-database/pom.xml index e99adeff..411d3f00 100644 --- a/mate-core/mate-starter-database/pom.xml +++ b/mate-core/mate-starter-database/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-database/src/main/java/vip/mate/core/database/config/MybatisPlusConfiguration.java b/mate-core/mate-starter-database/src/main/java/vip/mate/core/database/config/MybatisPlusConfiguration.java index fddd30f3..d6d32a23 100644 --- a/mate-core/mate-starter-database/src/main/java/vip/mate/core/database/config/MybatisPlusConfiguration.java +++ b/mate-core/mate-starter-database/src/main/java/vip/mate/core/database/config/MybatisPlusConfiguration.java @@ -3,7 +3,6 @@ import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer; import com.baomidou.mybatisplus.core.injector.ISqlInjector; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; -import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor; @@ -85,9 +84,9 @@ public MybatisPlusInterceptor paginationInterceptor() { PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(); paginationInnerInterceptor.setMaxLimit(MAX_LIMIT); //防止全表更新与删除插件: BlockAttackInnerInterceptor - BlockAttackInnerInterceptor blockAttackInnerInterceptor = new BlockAttackInnerInterceptor(); + // BlockAttackInnerInterceptor blockAttackInnerInterceptor = new BlockAttackInnerInterceptor(); interceptor.addInnerInterceptor(paginationInnerInterceptor); - interceptor.addInnerInterceptor(blockAttackInnerInterceptor); + // interceptor.addInnerInterceptor(blockAttackInnerInterceptor); return interceptor; } diff --git a/mate-core/mate-starter-dependencies/pom.xml b/mate-core/mate-starter-dependencies/pom.xml index 4973c46d..855e662c 100644 --- a/mate-core/mate-starter-dependencies/pom.xml +++ b/mate-core/mate-starter-dependencies/pom.xml @@ -5,14 +5,14 @@ org.springframework.boot spring-boot-starter-parent - 2.5.2 + 2.5.4 4.0.0 vip.mate mate-starter-dependencies - 3.8.8 + 4.0.9 pom mate-starter-dependencies based on Spring Cloud Alibaba dependencies @@ -39,10 +39,10 @@ - 3.8.8 + 4.0.9 UTF-8 - 2.5.2 + 2.5.4 2020.0.3 2021.1 @@ -65,7 +65,7 @@ 2.10.5 1.6.2 - 2.0.8 + 2.0.9 0.9.1 1.6.2 2.0.2 @@ -75,9 +75,9 @@ 2.7.12 1.2.76 - 2.4.1 + 2.5.0 4.1.2 - 2.0.2 + 2.0.3 4.3.0 1.7.2 1.15.8 @@ -86,13 +86,13 @@ 4.1.1 - 7.13.2 + 7.13.3 3.2.2 6.5.0 3.15.0 - 5.3.5.RELEASE - 1.8.1 + 5.3.7.RELEASE + 1.8.2 2.12.0 2.8.0 4.9.0 @@ -198,11 +198,6 @@ mate-starter-file ${matecloud.core.version} - - ${project.groupId} - mate-starter-dozer - ${matecloud.core.version} - ${project.groupId} mate-starter-rule diff --git a/mate-core/mate-starter-dozer/pom.xml b/mate-core/mate-starter-dozer/pom.xml deleted file mode 100644 index 85f329f3..00000000 --- a/mate-core/mate-starter-dozer/pom.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - mate-core - vip.mate - 3.8.8 - - 4.0.0 - - mate-starter-dozer - - - - org.springframework.boot - spring-boot-autoconfigure - - - - com.github.dozermapper - dozer-core - - - com.github.dozermapper - dozer-spring4 - - - - \ No newline at end of file diff --git a/mate-core/mate-starter-dozer/src/main/java/vip/mate/core/dozer/config/DozerConfiguration.java b/mate-core/mate-starter-dozer/src/main/java/vip/mate/core/dozer/config/DozerConfiguration.java deleted file mode 100644 index ff96c5ad..00000000 --- a/mate-core/mate-starter-dozer/src/main/java/vip/mate/core/dozer/config/DozerConfiguration.java +++ /dev/null @@ -1,58 +0,0 @@ -package vip.mate.core.dozer.config; - -import com.github.dozermapper.core.Mapper; -import com.github.dozermapper.spring.DozerBeanMapperFactoryBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import vip.mate.core.dozer.props.DozerProperties; -import vip.mate.core.dozer.util.DozerUtil; - -import java.io.IOException; - -/** - * Dozer配置 - * @author pangu - * @link http://dozer.sourceforge.net/documentation/usage.html - * http://www.jianshu.com/p/bf8f0e8aee23 - */ -@Configuration -@ConditionalOnClass({DozerBeanMapperFactoryBean.class, Mapper.class}) -@ConditionalOnMissingBean(Mapper.class) -@EnableConfigurationProperties(DozerProperties.class) -public class DozerConfiguration { - - private final DozerProperties properties; - - - /** - * Constructor for creating auto configuration. - * - * @param properties properties - */ - public DozerConfiguration(DozerProperties properties) { - this.properties = properties; - } - - @Bean - public DozerUtil getDozerUtil(Mapper mapper) { - return new DozerUtil(mapper); - } - - /** - * Creates default Dozer mapper - * - * @return Dozer mapper - * @throws IOException if there is an exception during initialization. - */ - @Bean - public DozerBeanMapperFactoryBean dozerMapper() throws IOException { - DozerBeanMapperFactoryBean factoryBean = new DozerBeanMapperFactoryBean(); - // 官方这样子写,没法用 匹配符! - //factoryBean.setMappingFiles(properties.getMappingFiles()); - factoryBean.setMappingFiles(properties.resolveMapperLocations()); - return factoryBean; - } -} diff --git a/mate-core/mate-starter-dozer/src/main/java/vip/mate/core/dozer/package-info.java b/mate-core/mate-starter-dozer/src/main/java/vip/mate/core/dozer/package-info.java deleted file mode 100644 index 6e10ae71..00000000 --- a/mate-core/mate-starter-dozer/src/main/java/vip/mate/core/dozer/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package vip.mate.core.dozer; \ No newline at end of file diff --git a/mate-core/mate-starter-dozer/src/main/java/vip/mate/core/dozer/props/DozerProperties.java b/mate-core/mate-starter-dozer/src/main/java/vip/mate/core/dozer/props/DozerProperties.java deleted file mode 100644 index 31d3db5d..00000000 --- a/mate-core/mate-starter-dozer/src/main/java/vip/mate/core/dozer/props/DozerProperties.java +++ /dev/null @@ -1,60 +0,0 @@ -package vip.mate.core.dozer.props; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.core.io.Resource; -import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import org.springframework.core.io.support.ResourcePatternResolver; - -import java.io.IOException; -import java.util.Arrays; -import java.util.Optional; -import java.util.stream.Stream; - -/** - * Dozer属性 - * @author pangu - */ -@ConfigurationProperties(prefix = "dozer") -public class DozerProperties { - private static final ResourcePatternResolver PATTERN_RESOLVER = new PathMatchingResourcePatternResolver(); - - /** - * Mapping files configuration. - * For example "classpath:*.dozer.xml". - */ - private String[] mappingFiles = new String[]{"classpath*:dozer/*.dozer.xml"}; - - /** - * Mapping files configuration. - * - * @return mapping files - */ - public String[] getMappingFiles() { - return Arrays.copyOf(mappingFiles, mappingFiles.length); - } - - /** - * Set mapping files configuration. For example classpath:*.dozer.xml. - * - * @param mappingFiles dozer mapping files - * @return dozer properties - */ - public DozerProperties setMappingFiles(String[] mappingFiles) { - this.mappingFiles = Arrays.copyOf(mappingFiles, mappingFiles.length); - return this; - } - - public Resource[] resolveMapperLocations() { - return Stream.of(Optional.ofNullable(this.mappingFiles).orElse(new String[0])) - .flatMap(location -> Stream.of(getResources(location))) - .toArray(Resource[]::new); - } - - private Resource[] getResources(String location) { - try { - return PATTERN_RESOLVER.getResources(location); - } catch (IOException var3) { - return new Resource[0]; - } - } -} diff --git a/mate-core/mate-starter-dozer/src/main/java/vip/mate/core/dozer/util/DozerUtil.java b/mate-core/mate-starter-dozer/src/main/java/vip/mate/core/dozer/util/DozerUtil.java deleted file mode 100644 index 7b6cc2af..00000000 --- a/mate-core/mate-starter-dozer/src/main/java/vip/mate/core/dozer/util/DozerUtil.java +++ /dev/null @@ -1,127 +0,0 @@ -package vip.mate.core.dozer.util; - -import com.github.dozermapper.core.Mapper; - -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -/** - * Dozer工具类 - * @author pangu - */ -public class DozerUtil { - - private Mapper mapper; - - public DozerUtil(Mapper mapper) { - this.mapper = mapper; - } - - public Mapper getMapper() { - return this.mapper; - } - - /** - * Constructs new instance of destinationClass and performs mapping between from source - * - * @param source - * @param destinationClass - * @param - * @return - */ - public T map(Object source, Class destinationClass) { - if (source == null) { - return null; - } - return mapper.map(source, destinationClass); - } - - public T map2(Object source, Class destinationClass) { - if (source == null) { - try { - return destinationClass.newInstance(); - } catch (Exception e) { - } - } - return mapper.map(source, destinationClass); - } - - /** - * Performs mapping between source and destination objects - * - * @param source - * @param destination - */ - public void map(Object source, Object destination) { - if (source == null) { - return; - } - mapper.map(source, destination); - } - - /** - * Constructs new instance of destinationClass and performs mapping between from source - * - * @param source - * @param destinationClass - * @param mapId - * @param - * @return - */ - public T map(Object source, Class destinationClass, String mapId) { - if (source == null) { - return null; - } - return mapper.map(source, destinationClass, mapId); - } - - /** - * Performs mapping between source and destination objects - * - * @param source - * @param destination - * @param mapId - */ - public void map(Object source, Object destination, String mapId) { - if (source == null) { - return; - } - mapper.map(source, destination, mapId); - } - - /** - * 将集合转成集合 - * List --> List - * - * @param sourceList 源集合 - * @param destinationClass 待转类型 - * @param - * @return - */ - public List mapList(Collection sourceList, Class destinationClass) { - return mapPage(sourceList, destinationClass); - } - - - public List mapPage(Collection sourceList, Class destinationClass) { - if (sourceList == null || sourceList.isEmpty() || destinationClass == null) { - return Collections.emptyList(); - } - List destinationList = sourceList.parallelStream() - .filter(item -> item != null) - .map((sourceObject) -> mapper.map(sourceObject, destinationClass)) - .collect(Collectors.toList()); - - return destinationList; - } - - public Set mapSet(Collection sourceList, Class destinationClass) { - if (sourceList == null || sourceList.isEmpty() || destinationClass == null) { - return Collections.emptySet(); - } - return sourceList.parallelStream().map((sourceObject) -> mapper.map(sourceObject, destinationClass)).collect(Collectors.toSet()); - } -} diff --git a/mate-core/mate-starter-dozer/src/main/resources/META-INF/spring.factories b/mate-core/mate-starter-dozer/src/main/resources/META-INF/spring.factories deleted file mode 100755 index 8bed9d0f..00000000 --- a/mate-core/mate-starter-dozer/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - vip.mate.core.dozer.config.DozerConfiguration diff --git a/mate-core/mate-starter-dozer/src/main/resources/dozer/global.dozer.xml b/mate-core/mate-starter-dozer/src/main/resources/dozer/global.dozer.xml deleted file mode 100755 index c6972ee9..00000000 --- a/mate-core/mate-starter-dozer/src/main/resources/dozer/global.dozer.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - yyyy-MM-dd HH:mm:ss - - - - diff --git a/mate-core/mate-starter-dubbo/pom.xml b/mate-core/mate-starter-dubbo/pom.xml index a0eb7ff9..d90c7104 100644 --- a/mate-core/mate-starter-dubbo/pom.xml +++ b/mate-core/mate-starter-dubbo/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-elasticsearch/pom.xml b/mate-core/mate-starter-elasticsearch/pom.xml deleted file mode 100644 index 0e6a5422..00000000 --- a/mate-core/mate-starter-elasticsearch/pom.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - mate-core - vip.mate - 3.8.8 - - 4.0.0 - - mate-starter-elasticsearch - - - - vip.mate - mate-starter-common - provided - - - org.springframework.boot - spring-boot-starter-data-elasticsearch - - - org.elasticsearch.client - elasticsearch-rest-high-level-client - - - org.elasticsearch - elasticsearch - - - org.projectlombok - lombok - provided - - - commons-lang - commons-lang - 2.5 - compile - - - - - - \ No newline at end of file diff --git a/mate-core/mate-starter-elasticsearch/src/main/java/vip/mate/core/elasticsearch/config/ElasticSearchConfiguration.java b/mate-core/mate-starter-elasticsearch/src/main/java/vip/mate/core/elasticsearch/config/ElasticSearchConfiguration.java deleted file mode 100644 index 5279c67d..00000000 --- a/mate-core/mate-starter-elasticsearch/src/main/java/vip/mate/core/elasticsearch/config/ElasticSearchConfiguration.java +++ /dev/null @@ -1,32 +0,0 @@ -package vip.mate.core.elasticsearch.config; - -import lombok.AllArgsConstructor; -import org.apache.commons.lang.StringUtils; -import org.elasticsearch.client.RestHighLevelClient; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.elasticsearch.client.ClientConfiguration; -import org.springframework.data.elasticsearch.client.RestClients; -import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration; -import vip.mate.core.common.util.StringPool; -import vip.mate.core.elasticsearch.props.ElasticSearchProperties; - -@Configuration -@AllArgsConstructor -@EnableConfigurationProperties(ElasticSearchProperties.class) -public class ElasticSearchConfiguration extends AbstractElasticsearchConfiguration { - - private final ElasticSearchProperties elasticSearchProperties; - - @Override - @Bean - public RestHighLevelClient elasticsearchClient() { - final ClientConfiguration clientConfiguration = ClientConfiguration.builder() - .connectedTo(StringUtils.join(elasticSearchProperties.getUris(), StringPool.COMMA)) - .withBasicAuth(elasticSearchProperties.getUsername(), elasticSearchProperties.getPassword()) - .withSocketTimeout(elasticSearchProperties.getReadTimeout()) - .build(); - return RestClients.create(clientConfiguration).rest(); - } -} diff --git a/mate-core/mate-starter-elasticsearch/src/main/java/vip/mate/core/elasticsearch/props/ElasticSearchProperties.java b/mate-core/mate-starter-elasticsearch/src/main/java/vip/mate/core/elasticsearch/props/ElasticSearchProperties.java deleted file mode 100644 index e872d24f..00000000 --- a/mate-core/mate-starter-elasticsearch/src/main/java/vip/mate/core/elasticsearch/props/ElasticSearchProperties.java +++ /dev/null @@ -1,23 +0,0 @@ -package vip.mate.core.elasticsearch.props; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; - -import java.time.Duration; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * @author pangu - */ -@Data -@ConfigurationProperties(prefix = "mate.es") -public class ElasticSearchProperties { - - private List uris = new ArrayList<>(Collections.singletonList("http://localhost:9200")); - private String username; - private String password; - private Duration connectionTimeout = Duration.ofSeconds(1L); - private Duration readTimeout = Duration.ofSeconds(30L); -} diff --git a/mate-core/mate-starter-encrypt/pom.xml b/mate-core/mate-starter-encrypt/pom.xml index f5caa228..44493387 100644 --- a/mate-core/mate-starter-encrypt/pom.xml +++ b/mate-core/mate-starter-encrypt/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-feign/pom.xml b/mate-core/mate-starter-feign/pom.xml index a2c53863..25332a75 100644 --- a/mate-core/mate-starter-feign/pom.xml +++ b/mate-core/mate-starter-feign/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-file/pom.xml b/mate-core/mate-starter-file/pom.xml index 3c50ca99..f4065cb8 100644 --- a/mate-core/mate-starter-file/pom.xml +++ b/mate-core/mate-starter-file/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-gray/pom.xml b/mate-core/mate-starter-gray/pom.xml index deacefdf..7182d8d6 100644 --- a/mate-core/mate-starter-gray/pom.xml +++ b/mate-core/mate-starter-gray/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-idempotent/pom.xml b/mate-core/mate-starter-idempotent/pom.xml index 04aae6c9..64c1f327 100644 --- a/mate-core/mate-starter-idempotent/pom.xml +++ b/mate-core/mate-starter-idempotent/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-j2cache/pom.xml b/mate-core/mate-starter-j2cache/pom.xml deleted file mode 100644 index 4d9e9ae1..00000000 --- a/mate-core/mate-starter-j2cache/pom.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - mate-core - vip.mate - 3.8.8 - - 4.0.0 - - mate-starter-j2cache - - - - net.oschina.j2cache - j2cache-core - - - - org.ehcache - ehcache - 3.4.0 - - - - - \ No newline at end of file diff --git a/mate-core/mate-starter-j2cache/src/main/java/vip/mate/core/j2cache/config/J2cacheConfiguration.java b/mate-core/mate-starter-j2cache/src/main/java/vip/mate/core/j2cache/config/J2cacheConfiguration.java deleted file mode 100644 index d2c5e869..00000000 --- a/mate-core/mate-starter-j2cache/src/main/java/vip/mate/core/j2cache/config/J2cacheConfiguration.java +++ /dev/null @@ -1,15 +0,0 @@ -package vip.mate.core.j2cache.config; - -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; - -/** - * J2Cache配置 - * - * @author pangu - * @since 1.5.8 - */ -@Configuration -@PropertySource("classpath:mate-j2cache.properties") -public class J2cacheConfiguration { -} diff --git a/mate-core/mate-starter-j2cache/src/main/java/vip/mate/core/j2cache/package-info.java b/mate-core/mate-starter-j2cache/src/main/java/vip/mate/core/j2cache/package-info.java deleted file mode 100644 index c859e703..00000000 --- a/mate-core/mate-starter-j2cache/src/main/java/vip/mate/core/j2cache/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package vip.mate.core.j2cache; \ No newline at end of file diff --git a/mate-core/mate-starter-j2cache/src/main/resources/mate-j2cache.properties b/mate-core/mate-starter-j2cache/src/main/resources/mate-j2cache.properties deleted file mode 100644 index 3f9b2242..00000000 --- a/mate-core/mate-starter-j2cache/src/main/resources/mate-j2cache.properties +++ /dev/null @@ -1,114 +0,0 @@ -#J2Cache configuration -#j2cache 源码地址https://gitee.com/ld/J2Cache - -######################################### -# Cache Broadcast Method -# values: -# jgroups -> use jgroups's multicast -# redis -> use redis publish/subscribe mechanism -######################################### -#广播策略 -#j2cache.broadcast = net.oschina.j2cache.cache.support.redis.SpringRedisPubSubPolicy -j2cache.broadcast = redis - -# 是否开启二级缓存 -j2cache.l2-cache-open=true -j2cache.open-spring-cache= true -j2cache.allow-null-values= true -j2cache.cache-clean-mode= active -j2cache.redis-client=jedis - -#组播的通道名称 -jgroups.channel.name = j2cache - -######################################### -# Level 1&2 provider -# values: -# none -> disable this level cache -# ehcache -> use ehcache2 as level 1 cache -# ehcache3 -> use ehcache3 as level 1 cache -# caffeine -> use caffeine as level 1 cache(only in memory) -# redis -> use redis(hashs) as level 2 cache -# [classname] -> use custom provider -######################################### -#一级缓存使用ehcache3 -j2cache.L1.provider_class = ehcache -#j2cache.L2.provider_class = net.oschina.j2cache.cache.support.redis.SpringRedisProvider -j2cache.L2.provider_class = redis -#二级缓存使用redis -#j2cache.L2.provider_class = redis -j2cache.L2.config_section = redis - -######################################### -# Cache Serialization Provider -# values: -# fst -> fast-serialization -# kyro -> kyro -# java -> java standard -# [classname implements Serializer] -######################################### - -j2cache.serialization = fst - -######################################### -# Ehcache configuration -######################################### - -#ehcache.name= -#ehcache.configXml=/ehcache.xml -ehcache3.configXml = /ehcache/ehcache3.xml - -######################################### -# Caffeine configuration -# caffeine.region.[name] = size, xxxx[s|m|h|d] -# -######################################### - -caffeine.region.default = 1000, 1h - -######################################### -# Redis connection configuration -######################################### - -######################################### -# Redis Cluster Mode -# -# single -> single redis server -# sentinel -> master-slaves servers -# cluster -> cluster servers (数据库配置无效,使用 database = 0) -# sharded -> sharded servers (密码、数据库必须在 hosts 中指定,且连接池配置无效 ; redis://user:password@127.0.0.1:6379/0) -# -######################################### - -#redis.mode = sentinel -redis.mode = single -#cluster name just for sharded -redis.cluster_name = mymaster - -## redis cache namespace optional, default[j2cache] -redis.namespace = j2cache - -## connection -#redis.hosts = 127.0.0.1:26378,127.0.0.1:26379,127.0.0.1:26380 -redis.hosts = localhost:6379 -redis.timeout = 2000 -redis.password = -redis.database = 0 - -## redis pub/sub channel name -redis.channel = j2cache - -## redis pool properties -redis.maxTotal = -1 -redis.maxIdle = 2000 -redis.maxWaitMillis = 100 -redis.minEvictableIdleTimeMillis = 864000000 -redis.minIdle = 1000 -redis.numTestsPerEvictionRun = 10 -redis.lifo = false -redis.softMinEvictableIdleTimeMillis = 10 -redis.testOnBorrow = true -redis.testOnReturn = false -redis.testWhileIdle = false -redis.timeBetweenEvictionRunsMillis = 300000 -redis.blockWhenExhausted = true \ No newline at end of file diff --git a/mate-core/mate-starter-jetcache/pom.xml b/mate-core/mate-starter-jetcache/pom.xml index 0f9e48a2..4a7f3def 100644 --- a/mate-core/mate-starter-jetcache/pom.xml +++ b/mate-core/mate-starter-jetcache/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-job/pom.xml b/mate-core/mate-starter-job/pom.xml index f4b63d0d..6fd85ec8 100644 --- a/mate-core/mate-starter-job/pom.xml +++ b/mate-core/mate-starter-job/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 jar diff --git a/mate-core/mate-starter-kafka/pom.xml b/mate-core/mate-starter-kafka/pom.xml index 95f9a9ac..e1f28a1a 100644 --- a/mate-core/mate-starter-kafka/pom.xml +++ b/mate-core/mate-starter-kafka/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-lock/pom.xml b/mate-core/mate-starter-lock/pom.xml index 53a0c81b..b3af5768 100644 --- a/mate-core/mate-starter-lock/pom.xml +++ b/mate-core/mate-starter-lock/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-log/pom.xml b/mate-core/mate-starter-log/pom.xml index 071a4526..868f2682 100644 --- a/mate-core/mate-starter-log/pom.xml +++ b/mate-core/mate-starter-log/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-mail/pom.xml b/mate-core/mate-starter-mail/pom.xml index 5cb4dc03..802a74d7 100644 --- a/mate-core/mate-starter-mail/pom.xml +++ b/mate-core/mate-starter-mail/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-mongodb/pom.xml b/mate-core/mate-starter-mongodb/pom.xml index 16788833..452224e7 100644 --- a/mate-core/mate-starter-mongodb/pom.xml +++ b/mate-core/mate-starter-mongodb/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-mybatis/pom.xml b/mate-core/mate-starter-mybatis/pom.xml index 0886b36b..6d09ab5d 100644 --- a/mate-core/mate-starter-mybatis/pom.xml +++ b/mate-core/mate-starter-mybatis/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-oss/pom.xml b/mate-core/mate-starter-oss/pom.xml index c53ddef3..516803b5 100644 --- a/mate-core/mate-starter-oss/pom.xml +++ b/mate-core/mate-starter-oss/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-prometheus/pom.xml b/mate-core/mate-starter-prometheus/pom.xml index 96cd5ff7..e817d2e6 100644 --- a/mate-core/mate-starter-prometheus/pom.xml +++ b/mate-core/mate-starter-prometheus/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-rabbit/pom.xml b/mate-core/mate-starter-rabbit/pom.xml index 7e6a85ef..ff7f318b 100644 --- a/mate-core/mate-starter-rabbit/pom.xml +++ b/mate-core/mate-starter-rabbit/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-redis/pom.xml b/mate-core/mate-starter-redis/pom.xml index 81137759..b503bdc2 100644 --- a/mate-core/mate-starter-redis/pom.xml +++ b/mate-core/mate-starter-redis/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-retrofit/README.md b/mate-core/mate-starter-retrofit/README.md deleted file mode 100644 index 9eed024f..00000000 --- a/mate-core/mate-starter-retrofit/README.md +++ /dev/null @@ -1,10 +0,0 @@ -## mate-starter-retrofit - -封装了链家出品的基于springboot上应用的retrofit-spring-boot-starter - -## 框架开发背景 -spring-boot项目中存在大量的http请求调用,然而当时调用都是通过HttpUtils或者RestTemplate实现的,说实话很麻烦,并且不利于统一管理。 因此当时就想通过Java接口的形式来统一搞定这件事。 由于不想引入spring-cloud相关依赖,当时就没有直接用feign,另外更重要的一点就是也想做的更加轻量,因此最终才写了这个框架 - -## 官方教程 - -https://github.com/LianjiaTech/retrofit-spring-boot-starter/blob/master/README_CN.md \ No newline at end of file diff --git a/mate-core/mate-starter-retrofit/pom.xml b/mate-core/mate-starter-retrofit/pom.xml deleted file mode 100644 index 6629dcad..00000000 --- a/mate-core/mate-starter-retrofit/pom.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - mate-core - vip.mate - 3.8.8 - - 4.0.0 - - mate-starter-retrofit - - - - vip.mate - mate-starter-common - provided - - - com.github.lianjiatech - retrofit-spring-boot-starter - - - - - \ No newline at end of file diff --git a/mate-core/mate-starter-retrofit/src/main/java/vip/mate/core/retrofit/annotation/Sign.java b/mate-core/mate-starter-retrofit/src/main/java/vip/mate/core/retrofit/annotation/Sign.java deleted file mode 100644 index 7ebaa3d9..00000000 --- a/mate-core/mate-starter-retrofit/src/main/java/vip/mate/core/retrofit/annotation/Sign.java +++ /dev/null @@ -1,58 +0,0 @@ -package vip.mate.core.retrofit.annotation; - -import com.github.lianjiatech.retrofit.spring.boot.annotation.InterceptMark; -import com.github.lianjiatech.retrofit.spring.boot.interceptor.BasePathMatchInterceptor; -import vip.mate.core.retrofit.interceptor.SignInterceptor; - -import java.lang.annotation.*; - -/** - * 签名注解 - * - * @author pangu - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) -@Documented -@InterceptMark -public @interface Sign { - - /** - * secret key - * Support the configuration in the form of placeholder. - * - * @return - */ - String accessKeyId(); - - /** - * secret key - * Support the configuration in the form of placeholder. - * - * @return - */ - String accessKeySecret(); - - /** - * Interceptor matching path. - * - * @return - */ - String[] include() default {"/**"}; - - /** - * Interceptor excludes matching and intercepting by specified path. - * - * @return - */ - String[] exclude() default {}; - - /** - * The interceptor class which handles the annotation. - * Get the corresponding bean from the spring container firstly.If not, use - * reflection to create one! - * - * @return - */ - Class handler() default SignInterceptor.class; -} diff --git a/mate-core/mate-starter-retrofit/src/main/java/vip/mate/core/retrofit/config/RetrofitConfiguration.java b/mate-core/mate-starter-retrofit/src/main/java/vip/mate/core/retrofit/config/RetrofitConfiguration.java deleted file mode 100644 index f3c587ae..00000000 --- a/mate-core/mate-starter-retrofit/src/main/java/vip/mate/core/retrofit/config/RetrofitConfiguration.java +++ /dev/null @@ -1,23 +0,0 @@ -package vip.mate.core.retrofit.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; -import vip.mate.core.common.factory.YamlPropertySourceFactory; -import vip.mate.core.retrofit.interceptor.SignInterceptor; - -/** - * Retrofit配置类 - * - * @author pangu - */ -@Configuration -@PropertySource(factory = YamlPropertySourceFactory.class, value = "classpath:mate-retrofit.yml") -public class RetrofitConfiguration { - - @Bean - public SignInterceptor signInterceptor() { - return new SignInterceptor(); - } - -} diff --git a/mate-core/mate-starter-retrofit/src/main/java/vip/mate/core/retrofit/interceptor/SignInterceptor.java b/mate-core/mate-starter-retrofit/src/main/java/vip/mate/core/retrofit/interceptor/SignInterceptor.java deleted file mode 100644 index b4bb0d5b..00000000 --- a/mate-core/mate-starter-retrofit/src/main/java/vip/mate/core/retrofit/interceptor/SignInterceptor.java +++ /dev/null @@ -1,33 +0,0 @@ -package vip.mate.core.retrofit.interceptor; - -import com.github.lianjiatech.retrofit.spring.boot.interceptor.BasePathMatchInterceptor; -import lombok.Setter; -import okhttp3.Request; -import okhttp3.Response; -import org.springframework.stereotype.Component; - -import java.io.IOException; - -/** - * 签名拦截器 - * - * @author pangu - */ -@Setter -@Component -public class SignInterceptor extends BasePathMatchInterceptor { - - private String accessKeyId; - - private String accessKeySecret; - - @Override - public Response doIntercept(Chain chain) throws IOException { - Request request = chain.request(); - Request newReq = request.newBuilder() - .addHeader("accessKeyId", accessKeyId) - .addHeader("accessKeySecret", accessKeySecret) - .build(); - return chain.proceed(newReq); - } -} diff --git a/mate-core/mate-starter-retrofit/src/main/resources/META-INF/spring.factories b/mate-core/mate-starter-retrofit/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 74b6675c..00000000 --- a/mate-core/mate-starter-retrofit/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,4 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - vip.mate.core.retrofit.config.RetrofitConfiguration - - diff --git a/mate-core/mate-starter-retrofit/src/main/resources/mate-retrofit.yml b/mate-core/mate-starter-retrofit/src/main/resources/mate-retrofit.yml deleted file mode 100644 index a10fc3cb..00000000 --- a/mate-core/mate-starter-retrofit/src/main/resources/mate-retrofit.yml +++ /dev/null @@ -1,21 +0,0 @@ -retrofit: - # Enable BodyCallAdapter - enable-body-call-adapter: true - # Enable ResponseCallAdapter - enable-response-call-adapter: true - # Enable log printing - enable-log: true - # Connection pool configuration - pool: - test1: - max-idle-connections: 3 - keep-alive-second: 100 - test2: - max-idle-connections: 5 - keep-alive-second: 50 - # Disable java.lang.Void return type - disable-void-return-type: false - # Log print interceptor - logging-interceptor: com.github.lianjiatech.retrofit.spring.boot.interceptor.DefaultLoggingInterceptor - # Retry Interceptor - retry-interceptor: com.github.lianjiatech.retrofit.spring.boot.retry.DefaultRetryInterceptor \ No newline at end of file diff --git a/mate-core/mate-starter-rocketmq/pom.xml b/mate-core/mate-starter-rocketmq/pom.xml index a2631c52..32907dbb 100644 --- a/mate-core/mate-starter-rocketmq/pom.xml +++ b/mate-core/mate-starter-rocketmq/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-rule/pom.xml b/mate-core/mate-starter-rule/pom.xml index e7064a0a..57c3b15b 100644 --- a/mate-core/mate-starter-rule/pom.xml +++ b/mate-core/mate-starter-rule/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-seata/README.md b/mate-core/mate-starter-seata/README.md new file mode 100644 index 00000000..49153052 --- /dev/null +++ b/mate-core/mate-starter-seata/README.md @@ -0,0 +1,256 @@ +# Seata + +## 部署安装 + +- 集成nacos配置中心 + + 下载 config ` https://github.com/seata/seata/blob/develop/script/config-center/config.txt` + + 下载 sh脚本 `https://github.com/seata/seata/blob/develop/script/config-center/nacos/nacos-config.sh` + + 本地修改config.txt 相关参数,修改nacos-config.sh 相关配置,并执行脚本,将配置推送到nacos + +- Docker部署(需要指定当前宿主机IP) + + ```sh + docker run --name seata-server \ + -p 8091:8091 \ + -e SEATA_IP=10.113.206.85 \ + -e SEATA_PORT=8091 \ + seataio/seata-server + ``` + + 进入容器中,修改registry.conf 配置Nacos相关参数 + + ```sh + registry { + # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa + type = "nacos" + loadBalance = "RandomLoadBalance" + loadBalanceVirtualNodes = 10 + + nacos { + application = "serverAddr" + serverAddr = "10.113.206.34:8848" + group = "DEFAULT_GROUP" + namespace = "" + cluster = "default" + username = "" + password = "" + } + } + + config { + # file、nacos 、apollo、zk、consul、etcd3 + type = "nacos" + + nacos { + serverAddr = "10.113.206.34:8848" + namespace = "" + group = "SEATA_GROUP" + username = "" + password = "" + # dataId = "seataServer.properties" + } + } + ``` + + + +## 注入原理 + +- 添加注解 @EnableAutoDataSourceProxy 配置自动代理数据源 + + ```java + @Target({ElementType.TYPE}) + @Retention(RetentionPolicy.RUNTIME) + @Import({AutoDataSourceProxyRegistrar.class}) + @Documented + public @interface EnableAutoDataSourceProxy { + boolean useJdkProxy() default false; + + String[] excludes() default {}; + + //设置工作模式 默认AT模式,可以选择TCC、XA、SAGA + String dataSourceProxyMode() default "AT"; + } + ``` + + @Import 引入配置类 AutoDataSourceProxyRegistrar.class 配置了代理数据源对象 + + ```java + + ``` + +- 由于maven依赖了 + + ```java + + io.seata + seata-spring-boot-starter + 1.4.1 + + ``` + + 1:由spring.factories 配置加载配置类 加载bean GlobalTransactionScanner + + ```java + @Configuration + @EnableConfigurationProperties({SeataProperties.class}) + public class SeataAutoConfiguration { + . + . + . + @Bean + @DependsOn({"springApplicationContextProvider", "failureHandler"}) + @ConditionalOnMissingBean({GlobalTransactionScanner.class}) + public GlobalTransactionScanner globalTransactionScanner(SeataProperties seataProperties, FailureHandler failureHandler) { + if (LOGGER.isInfoEnabled()) { + LOGGER.info("Automatically configure Seata"); + } + + return new GlobalTransactionScanner(seataProperties.getApplicationId(), seataProperties.getTxServiceGroup(), failureHandler); + } + + . + . + . + } + ``` + + GlobalTransactionScanner 是个spring bean处理器,主要继承以及实现如下 + + ```java + public class GlobalTransactionScanner extends AbstractAutoProxyCreator implements ConfigurationChangeListener, InitializingBean, ApplicationContextAware, DisposableBean { + + } + + public abstract class AbstractAutoProxyCreator extends ProxyProcessorSupport + implements SmartInstantiationAwareBeanPostProcessor, BeanFactoryAware { + + } + ``` + + 由这部分判断是否有注解@GlobalTransactional 并创建代理对象,增强方法主要在有该注解的方法前,生成XID,在TC注册该全局事务; + + ```java + public Object postProcessAfterInitialization(@Nullable Object bean, String beanName) { + if (bean != null) { + Object cacheKey = getCacheKey(bean.getClass(), beanName); + if (this.earlyProxyReferences.remove(cacheKey) != bean) { + return wrapIfNecessary(bean, beanName, cacheKey); + } + } + return bean; + } + ``` + + GlobalTransactionalInterceptor 判断 是否有@GlobalTransactional注解 + + ```java + public Object invoke(MethodInvocation methodInvocation) throws Throwable { + Class targetClass = methodInvocation.getThis() != null ? AopUtils.getTargetClass(methodInvocation.getThis()) : null; + Method specificMethod = ClassUtils.getMostSpecificMethod(methodInvocation.getMethod(), targetClass); + if (specificMethod != null && !specificMethod.getDeclaringClass().equals(Object.class)) { + Method method = BridgeMethodResolver.findBridgedMethod(specificMethod); + GlobalTransactional globalTransactionalAnnotation = (GlobalTransactional)this.getAnnotation(method, targetClass, GlobalTransactional.class); + GlobalLock globalLockAnnotation = (GlobalLock)this.getAnnotation(method, targetClass, GlobalLock.class); + boolean localDisable = this.disable || degradeCheck && degradeNum >= degradeCheckAllowTimes; + if (!localDisable) { + if (globalTransactionalAnnotation != null) { + return this.handleGlobalTransaction(methodInvocation, globalTransactionalAnnotation); + } + + if (globalLockAnnotation != null) { + return this.handleGlobalLock(methodInvocation, globalLockAnnotation); + } + } + } + + return methodInvocation.proceed(); + } + + ``` + + AT的增强类:SeataAutoDataSourceProxyAdvice + + ```java + public class SeataAutoDataSourceProxyAdvice implements MethodInterceptor, IntroductionInfo { + + public Object invoke(MethodInvocation invocation) throws Throwable { + if (!RootContext.requireGlobalLock() && this.dataSourceProxyMode != RootContext.getBranchType()) { + return invocation.proceed(); + } else { + Method method = invocation.getMethod(); + Object[] args = invocation.getArguments(); + Method m = BeanUtils.findDeclaredMethod(this.dataSourceProxyClazz, method.getName(), method.getParameterTypes()); + if (m != null) { + SeataDataSourceProxy dataSourceProxy = DataSourceProxyHolder.get().putDataSource((DataSource)invocation.getThis(), this.dataSourceProxyMode); + return m.invoke(dataSourceProxy, args); + } else { + return invocation.proceed(); + } + } + } + + } + ``` + + 其中 RootContext.requireGlobalLock() 先判断了当前线程的该ThreadLocal中是否有 TX_LOCK ,如果有,执行代理方法 + + ``` + public static boolean requireGlobalLock() { + return CONTEXT_HOLDER.get("TX_LOCK") != null; + } + ``` + + 2:该spring.factories 配置也同时加载配置类 加载bean HttpAutoConfiguration + + ```java + @Configuration + @ConditionalOnWebApplication + public class HttpAutoConfiguration extends WebMvcConfigurerAdapter { + public HttpAutoConfiguration() { + } + + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(new TransactionPropagationInterceptor()); + } + + public void extendHandlerExceptionResolvers(List exceptionResolvers) { + exceptionResolvers.add(new HttpHandlerExceptionResolver()); + } + } + + + ``` + + 新增了拦截器,用于拦截请求,构造上面的 线程ThreadLocal 变量,为之后数据源代理对象,判断是否是分布式事务 + + ```java + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { + String xid = RootContext.getXID(); + String rpcXid = request.getHeader("TX_XID"); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("xid in RootContext[{}] xid in HttpContext[{}]", xid, rpcXid); + } + + if (xid == null && rpcXid != null) { + RootContext.bind(rpcXid); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("bind[{}] to RootContext", rpcXid); + } + } + + return true; + } + + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { + if (RootContext.inGlobalTransaction()) { + XidResource.cleanXid(request.getHeader("TX_XID")); + } + + } + ``` + +- 未发现用feign拦截器进行request插入参数 XID的配置;对于请求的XID如何传递,暂时未看到源码。 \ No newline at end of file diff --git a/mate-core/mate-starter-seata/pom.xml b/mate-core/mate-starter-seata/pom.xml index efec2526..66c53d66 100644 --- a/mate-core/mate-starter-seata/pom.xml +++ b/mate-core/mate-starter-seata/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-seata/src/main/java/vip/mate/core/seata/config/SeataConfiguration.java b/mate-core/mate-starter-seata/src/main/java/vip/mate/core/seata/config/SeataConfiguration.java index cbebad81..6b3536ba 100644 --- a/mate-core/mate-starter-seata/src/main/java/vip/mate/core/seata/config/SeataConfiguration.java +++ b/mate-core/mate-starter-seata/src/main/java/vip/mate/core/seata/config/SeataConfiguration.java @@ -1,16 +1,64 @@ package vip.mate.core.seata.config; +import io.seata.spring.annotation.datasource.EnableAutoDataSourceProxy; +import java.sql.SQLException; +import javax.annotation.PostConstruct; +import javax.sql.DataSource; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import vip.mate.core.common.factory.YamlPropertySourceFactory; +import vip.mate.core.seata.props.SeataProperties; /** * Seata配置 * - * @author pangu - * @since 1.6.8 + * @author aaronuu + * @EnableAutoDataSourceProxy 自动开启代理数据源 */ @Configuration @PropertySource(factory = YamlPropertySourceFactory.class, value = "classpath:mate-seata.yml") +@EnableConfigurationProperties(SeataProperties.class) +@AllArgsConstructor +@ConditionalOnBean(DataSource.class) +@EnableAutoDataSourceProxy +@Slf4j public class SeataConfiguration { + + @Autowired + public DataSource dataSource; + + public static final String undoLogSql = "CREATE TABLE IF NOT EXISTS undo_log(" + + "`id` bigint(20) NOT NULL AUTO_INCREMENT," + + "`branch_id` bigint(20) NOT NULL," + + "`xid` varchar(100) NOT NULL," + + "`context` varchar(128) NOT NULL," + + "`rollback_info` longblob NOT NULL," + + "`log_status` int(11) NOT NULL," + + "`log_created` datetime NOT NULL," + + "`log_modified` datetime NOT NULL," + + "`ext` varchar(100) DEFAULT NULL," + + "PRIMARY KEY (`id`)," + + "UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)" + + ")ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;"; + + public final SeataProperties seataProperties; + + /** + * 判断当前数据库是否有undo_log 该表,如果没有, + * 创建该表 undo_log 为seata 记录事务sql执行的记录表 第二阶段时,如果confirm会清除记录,如果是cancel 会根据记录补偿原数据 + */ + @PostConstruct + public void detectTable() { + try { + dataSource.getConnection().prepareStatement(undoLogSql).execute(); + } catch (SQLException e) { + log.error("创建[seata] undo_log表错误。", e); + } + } + } diff --git a/mate-core/mate-starter-seata/src/main/java/vip/mate/core/seata/package-info.java b/mate-core/mate-starter-seata/src/main/java/vip/mate/core/seata/package-info.java deleted file mode 100644 index acc1be01..00000000 --- a/mate-core/mate-starter-seata/src/main/java/vip/mate/core/seata/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package vip.mate.core.seata; \ No newline at end of file diff --git a/mate-core/mate-starter-seata/src/main/java/vip/mate/core/seata/props/SeataProperties.java b/mate-core/mate-starter-seata/src/main/java/vip/mate/core/seata/props/SeataProperties.java new file mode 100644 index 00000000..b96cbbaa --- /dev/null +++ b/mate-core/mate-starter-seata/src/main/java/vip/mate/core/seata/props/SeataProperties.java @@ -0,0 +1,21 @@ +package vip.mate.core.seata.props; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * Seata配置 + * + * @author aaronuu + */ +@Getter +@Setter +@ConfigurationProperties(prefix = "seata") +public class SeataProperties { + + private String applicationId; + + private String txServiceGroup; + +} diff --git a/mate-core/mate-starter-seata/src/main/resources/mate-seata.yml b/mate-core/mate-starter-seata/src/main/resources/mate-seata.yml index 5a97bdb8..98e9b8b2 100644 --- a/mate-core/mate-starter-seata/src/main/resources/mate-seata.yml +++ b/mate-core/mate-starter-seata/src/main/resources/mate-seata.yml @@ -8,7 +8,7 @@ seata: nacos: group: SEATA_GROUP namespace: - server-addr: 127.0.0.1:8848 + server-addr: ${spring.cloud.nacos.discovery.server-addr} # Nacos 服务地址 service: # 虚拟组和分组的映射 vgroup-mapping: @@ -19,5 +19,5 @@ seata: nacos: cluster: default # 使用的 Seata 分组 namespace: # Nacos 命名空间 - serverAddr: 127.0.0.1:8848 # Nacos 服务地址 - enabled: true \ No newline at end of file + serverAddr: ${spring.cloud.nacos.discovery.server-addr} # Nacos 服务地址 + enabled: true diff --git a/mate-core/mate-starter-security/pom.xml b/mate-core/mate-starter-security/pom.xml index d508242f..d361e1fd 100644 --- a/mate-core/mate-starter-security/pom.xml +++ b/mate-core/mate-starter-security/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-security/src/main/java/vip/mate/core/security/userdetails/MateUser.java b/mate-core/mate-starter-security/src/main/java/vip/mate/core/security/userdetails/MateUser.java index e5703e48..70cf0954 100644 --- a/mate-core/mate-starter-security/src/main/java/vip/mate/core/security/userdetails/MateUser.java +++ b/mate-core/mate-starter-security/src/main/java/vip/mate/core/security/userdetails/MateUser.java @@ -24,7 +24,7 @@ public class MateUser extends User { /** * 部门ID */ - private final Long roleId; + private final String roleId; /** * 部门ID */ @@ -50,7 +50,7 @@ public class MateUser extends User { */ private final int type; - public MateUser(Long id, int type, Long departId, Long roleId, String phone, String avatar, String tenantId, String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection authorities) { + public MateUser(Long id, int type, Long departId, String roleId, String phone, String avatar, String tenantId, String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection authorities) { super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); this.id = id; this.type = type; diff --git a/mate-core/mate-starter-sentinel/pom.xml b/mate-core/mate-starter-sentinel/pom.xml index fe816859..5f459994 100644 --- a/mate-core/mate-starter-sentinel/pom.xml +++ b/mate-core/mate-starter-sentinel/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-sharding/pom.xml b/mate-core/mate-starter-sharding/pom.xml deleted file mode 100644 index 4b6c8327..00000000 --- a/mate-core/mate-starter-sharding/pom.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - mate-core - vip.mate - 3.8.8 - - 4.0.0 - - mate-starter-sharding - - - - - vip.mate - mate-starter-common - - - - com.baomidou - mybatis-plus-boot-starter - - - com.baomidou - mybatis-plus-extension - - - - com.alibaba - druid-spring-boot-starter - - - - mysql - mysql-connector-java - - - org.apache.shardingsphere - sharding-jdbc-spring-boot-starter - - - - - - \ No newline at end of file diff --git a/mate-core/mate-starter-sharding/src/main/java/vip/mate/core/sharding/config/DataSourceConfiguration.java b/mate-core/mate-starter-sharding/src/main/java/vip/mate/core/sharding/config/DataSourceConfiguration.java deleted file mode 100644 index ae330db3..00000000 --- a/mate-core/mate-starter-sharding/src/main/java/vip/mate/core/sharding/config/DataSourceConfiguration.java +++ /dev/null @@ -1,10 +0,0 @@ -package vip.mate.core.sharding.config; - -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; -import vip.mate.core.common.factory.YamlPropertySourceFactory; - -@Configuration -@PropertySource(factory = YamlPropertySourceFactory.class, value = "classpath:mate-sharding-db.yml") -public class DataSourceConfiguration { -} diff --git a/mate-core/mate-starter-sharding/src/main/java/vip/mate/core/sharding/package-info.java b/mate-core/mate-starter-sharding/src/main/java/vip/mate/core/sharding/package-info.java deleted file mode 100644 index 5a4e9ecb..00000000 --- a/mate-core/mate-starter-sharding/src/main/java/vip/mate/core/sharding/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package vip.mate.core.sharding; \ No newline at end of file diff --git a/mate-core/mate-starter-sharding/src/main/resources/META-INF/spring.factories b/mate-core/mate-starter-sharding/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 44928eca..00000000 --- a/mate-core/mate-starter-sharding/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,4 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - vip.mate.core.sharding.config.DataSourceConfiguration - - diff --git a/mate-core/mate-starter-sharding/src/main/resources/mate-sharding-db.yml b/mate-core/mate-starter-sharding/src/main/resources/mate-sharding-db.yml deleted file mode 100644 index e255ef80..00000000 --- a/mate-core/mate-starter-sharding/src/main/resources/mate-sharding-db.yml +++ /dev/null @@ -1,40 +0,0 @@ -db: - one: primary - two: secondary -spring: - shardingsphere: - #配置多数据源 - datasource: - names: ${db.one}, ${db.two} - #第一个数据源 - primary: - type: com.mysql.cj.jdbc.Driver - jdbc-url: jdbc:mysql://127.0.0.1:3306/matex1?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull - username: root - password: root - max-active: 16 - #第二个数据源 - secondary: - type: com.mysql.cj.jdbc.Driver - jdbc-url: jdbc:mysql://127.0.0.1:3306/matex2?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull - username: root - password: root - max-active: 16 - #配置分片规则,参见https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/yaml/sharding/ - sharding: - tables: - mate_sys_log: - actual-data-nodes: ${db.one}.mate_sys_log_$->{1..8} - table-strategy: - inline: - sharding-column: today - algorithm-expression: mate_sys_log_$->{today} - key-generator: - column: id - type: SNOWFLAKE - #不分表的策略 - mate_sys_user: - actual-data-nodes: ${db.two}.mate_sys_user - - - diff --git a/mate-core/mate-starter-sms/pom.xml b/mate-core/mate-starter-sms/pom.xml index 6bd70399..12cc1f10 100644 --- a/mate-core/mate-starter-sms/pom.xml +++ b/mate-core/mate-starter-sms/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-strategy/pom.xml b/mate-core/mate-starter-strategy/pom.xml index cfd6c926..944e2f40 100644 --- a/mate-core/mate-starter-strategy/pom.xml +++ b/mate-core/mate-starter-strategy/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-validator/pom.xml b/mate-core/mate-starter-validator/pom.xml index 79512270..700877d7 100644 --- a/mate-core/mate-starter-validator/pom.xml +++ b/mate-core/mate-starter-validator/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-web/pom.xml b/mate-core/mate-starter-web/pom.xml index 148016e7..3e213343 100644 --- a/mate-core/mate-starter-web/pom.xml +++ b/mate-core/mate-starter-web/pom.xml @@ -5,7 +5,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-core/mate-starter-web/src/main/java/vip/mate/core/web/config/ExceptionConfiguration.java b/mate-core/mate-starter-web/src/main/java/vip/mate/core/web/config/ExceptionConfiguration.java index 13f7f53a..b18c828b 100644 --- a/mate-core/mate-starter-web/src/main/java/vip/mate/core/web/config/ExceptionConfiguration.java +++ b/mate-core/mate-starter-web/src/main/java/vip/mate/core/web/config/ExceptionConfiguration.java @@ -1,9 +1,11 @@ package vip.mate.core.web.config; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import vip.mate.core.common.factory.YamlPropertySourceFactory; +import vip.mate.core.web.handler.BaseExceptionHandler; /** * 统一异常处理配置 @@ -13,4 +15,9 @@ @ComponentScan(value="vip.mate.core.web.handler") @PropertySource(factory = YamlPropertySourceFactory.class, value = "classpath:mate-error.yml") public class ExceptionConfiguration { + + @Bean + public BaseExceptionHandler baseExceptionHandler(){ + return new BaseExceptionHandler(); + } } \ No newline at end of file diff --git a/mate-core/mate-starter-web/src/main/java/vip/mate/core/web/config/SwaggerConfiguration.java b/mate-core/mate-starter-web/src/main/java/vip/mate/core/web/config/SwaggerConfiguration.java index 3b7fbb53..c082c1e5 100644 --- a/mate-core/mate-starter-web/src/main/java/vip/mate/core/web/config/SwaggerConfiguration.java +++ b/mate-core/mate-starter-web/src/main/java/vip/mate/core/web/config/SwaggerConfiguration.java @@ -1,5 +1,6 @@ package vip.mate.core.web.config; +import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.boot.context.properties.EnableConfigurationProperties; @@ -53,6 +54,8 @@ public class SwaggerConfiguration implements WebMvcConfigurer { private final MateSwaggerProperties swaggerProperties; + private final OpenApiExtensionResolver openApiExtensionResolver; + @Bean public PathProvider pathProvider() { return new DefaultPathProvider() { @@ -98,7 +101,7 @@ public Docket createRestApi() { .securityContexts(securityContexts()) .pathProvider(pathProvider()) .ignoredParameterTypes(ignoredParameterTypes) - .pathMapping("/"); + .pathMapping("/").extensions(openApiExtensionResolver.buildSettingExtensions()); } @Override diff --git a/mate-core/mate-starter-web/src/main/java/vip/mate/core/web/util/CollectionUtil.java b/mate-core/mate-starter-web/src/main/java/vip/mate/core/web/util/CollectionUtil.java index abfa2ad0..fce25b4f 100644 --- a/mate-core/mate-starter-web/src/main/java/vip/mate/core/web/util/CollectionUtil.java +++ b/mate-core/mate-starter-web/src/main/java/vip/mate/core/web/util/CollectionUtil.java @@ -9,21 +9,24 @@ /** * Collection工具类 + * + * @author pangu */ public class CollectionUtil { /** * 将以“,”分隔的字符串转成为Collection + * * @param str 字符串 * @return Collection */ - public static Collection stringToCollection(String str){ + public static Collection stringToCollection(String str) { if (StringUtils.isBlank(str)) { return null; } else { String[] strArray = str.split(","); final Long[] longs = new Long[strArray.length]; - for (int i = 0; i < strArray.length ; i++) { + for (int i = 0; i < strArray.length; i++) { longs[i] = strToLong(strArray[i], 0L); } return arrayToCollection(longs); @@ -32,6 +35,7 @@ public static Collection stringToCollection(String str){ /** * 将字组转换成Collection + * * @param longArray Long数组 * @return Collection */ @@ -43,6 +47,7 @@ public static Collection arrayToCollection(Long[] longAr /** * 字符串转换为long + * * @param str * @param defaultValue * @return @@ -60,6 +65,7 @@ public static long strToLong(@Nullable final String str, final long defaultValue /** * 字符串转换为long + * * @param str * @param defaultValue * @return diff --git a/mate-core/mate-starter-web/src/main/resources/mate-swagger.md b/mate-core/mate-starter-web/src/main/resources/mate-swagger.md new file mode 100644 index 00000000..9ce5917f --- /dev/null +++ b/mate-core/mate-starter-web/src/main/resources/mate-swagger.md @@ -0,0 +1,202 @@ +

+ +

+

+ License + Stars + SpringBoot + SpringCloud + Spring Cloud Alibaba +

+ +## 🍟 如果您觉得有帮助,请点右上角 "Star" 支持一下谢谢 + +MateCloud是一款基于Spring Cloud Alibaba的微服务架构。旨在为大家提供技术框架的基础能力的封装,减少开发工作,让您只关注业务。 + +## 🎨 系统演示 +### 👉 演示地址:http://cloud.mate.vip + +账号 | 密码| 操作权限 +---|---|--- +admin | matecloud| mate-system模块不能执行增删改请求 + +如果需要验证手机号码登录,手机号码采用页面默认号码,点击获取验证码,输入1188,即可登录。 +### 🍯 企业版:http://plus.mate.vip +账号 | 密码| 操作权限 +---|---|--- +admin | matecloud123 | 不能执行增删改请求,如需全部权限加微信 matecloud 联系 + +## 📌 版本演进 +核心中间件 | 2.5.8及以下 | 3.0.8+ +---|---|--- +Spring Boot | 2.3.*.RELEASE | SpringBoot +Spring Cloud | Hoxton SR* | SpringCloud +Spring Cloud Alibaba | 2.2.*.RELEASE | SpringCloudAlibaba +Nacos | 1.4.*及以下 | nacos +Sentinel | 1.8.1 | sentinel + +## 📖 官方文档 +### 👉 文档地址:[http://www.mate.vip/docs](http://www.mate.vip/docs) +### 👉 商业版文档:[http://doc.mate.vip](http://doc.mate.vip) +### 👉 快速安装:[http://www.mate.vip/archives/107](http://www.mate.vip/archives/107) + +## 🔥 前端重大更新 +前端采用`Vue3.2`、`Vite 2.5.*`、 `Ant-Design-Vue 2.*`、`TypeScript` 的大型中后台解决方案。 +### 👉 技术栈 +- Vue 3.2.2 +- Pinia 2.0.0-rc.4 +- vue-i18n 9.1.7 +- typescript 4.29.1 +- ant-design-vue 2.2.6 +- axios 0.21.1 +- vue-router 4.0.11 +- vite 2.5.0-beta.2 +### 👉 版本发布 +`4.0.8-M1`版本已经发布,实现了系统管理的基础功能,主要包括菜单管理、用户管理、角色管理、部门管理、日志管理、客户端管理等功能。欢迎体验。 + +## 👷 技术交流 +

+ +

+👉 QQ群:2003638 + +## 🍪 技术架构 +

+ +

+ +## ❓ 部分截图 + + + + + + + + + + + + + + + + +
+ +## 🔧 功能特点 +- 主体框架:采用最新的`Spring Cloud 2020.0.3`, `Spring Boot 2.5.4`, `Spring Cloud Alibaba 2021.1`版本进行系统设计; + +- 统一注册:支持`Nacos`作为注册中心,实现多配置、分群组、分命名空间、多业务模块的注册和发现功能; + +- 统一认证:统一`Oauth2`认证协议,采用jwt的方式,实现统一认证,并支持自定义grant_type实现手机号码登录,第三方登录集成JustAuth实现微信、支付宝等多种登录模式; + +- 业务监控:利用`Spring Boot Admin`来监控各个独立Service的运行状态。 + +- 内部调用:集成了`Feign`和`Dubbo`两种模式支持内部调用,并且可以实现无缝切换,适合新老程序员,快速熟悉项目; + +- 业务熔断:采用`Sentinel`实现业务熔断处理,避免服务之间出现雪崩; + +- 身份注入:通过注解的方式,实现用户登录信息的快速注入; + +- 在线文档:通过接入`Knife4j`,实现在线API文档的查看与调试; + +- 代码生成:基于`Mybatis-plus-generator`自动生成代码,提升开发效率,生成模式不断优化中,暂不支持前端代码生成; + +- 消息中心:集成消息中间件`RocketMQ`和`Kafka`,对业务进行异步处理; + +- 业务分离:采用前后端分离的框架设计,前端采用`vue-element-admin`,商业版采用`antd-pro-vue` + +- 链路追踪:自定义traceId的方式,实现简单的链路追踪功能 + +- 多租户功能:集成`Mybatis Plus`,实现SAAS多租户功能 + +## 🗿 文件结构 +```lua +matecloud -- 父项目,各模块分离,方便集成和微服务 +│ ├─mate-core -- 核心通用模块,主模块 +│ │ ├─mate-starter-common -- 封装通用模块 +│ │ ├─mate-starter-cloud -- 封装微服务模块 +│ │ ├─mate-starter-auth -- 封装token验证模块 +│ │ ├─mate-starter-security -- 封装OAuth2基础模块 +│ │ ├─mate-starter-web -- 封装WEB服务基础模块 +│ │ ├─mate-starter-database -- 封装Mybatis及数据库基础模块 +│ │ ├─mate-starter-dependencies -- 封装所有依赖模块,可作为父项目独立引用 +│ │ ├─mate-starter-dubbo -- 封装dubbo基础模块 +│ │ ├─mate-starter-feign -- 封装feign基础模块 +│ │ ├─mate-starter-jetcache -- 封装JetCache阿里缓存基础模块 +│ │ ├─mate-starter-rocketmq -- 封装RocketMQ基础模块 +│ │ ├─mate-starter-gray -- 封装灰度发布基础模块 +│ │ ├─mate-starter-elasticsearch -- 封装ElasticSearch模块 +│ │ ├─mate-starter-oss -- 封装oss存储基础模块,支持阿里云、七牛云、minio等 +│ │ ├─mate-starter-log -- 封装日志基础模块 +│ │ ├─mate-starter-sharding -- 封装多数据库基础模块 +│ │ ├─mate-starter-sms -- 封装短信基础模块 +│ │ ├─mate-starter-mail -- 封装邮件模块 +│ │ ├─mate-starter-kafka -- 封装kafka基础模块 +│ │ ├─mate-starter-rule -- 封装黑名单基础模块 +│ │ ├─mate-starter-idempotent -- 封装幂等基础模块 +│ │ ├─mate-starter-lock -- 封装分布式锁基础模块 +│ │ ├─mate-starter-encrypt -- 封装报文加密模块,支持AES和RSA +│ │ ├─mate-starter-mongodb -- 封装mongodb数据库模块 +│ │ ├─mate-starter-strategy -- 封装策略模块 +│ │ ├─mate-starter-job -- 封装定时任务基础模块 +│ │ ├─mate-starter-validator -- 封装统一检验基础模块 +│ │─mate-gateway -- 统一网关模块 [10001] +│ │─mate-uaa -- 统一认证中心模块 [20001] +│ │─mate-platform -- 平台模块项目,目前包含系统子模块 +│ │ ├─mate-system-api -- 系统模块的通用模块,供其他模块引用 +│ │ ├─mate-system -- 系统模块核心功能 [20002] +│ │ ├─mate-component-api -- 组件模块核心功能,供其他模块引用 +│ │ ├─mate-component -- 组件模块核心功能 [20003] +│ │─mate-support -- 支持中心项目,目前包括代码生成、admin模块 +│ │ ├─mate-code -- 封装代码生成逻辑 [30002] +│ │ ├─mate-admin -- 封装spring-boot-admin逻辑 [30001] +│ │ ├─mate-job -- xxl-jog定时任务模块 +│ │ ├─mate-job-admin -- 定时任务管理平台模块 +│ │─mate-mq -- 消息中心项目,支持kafka、RocketMQ等多种消息中间件 +│ │ ├─mate-log-producer -- 日志消息生产者,集成kafka [40001] +│ │ ├─mate-message-consumer -- 消息服务消费者 [40002] +│ │ ├─mate-message-producer -- 消息服务生产者 [40003] +``` +## 🎨 核心模块提交至中央仓库 +如何引入依赖 +```xml + + + + vip.mate + mate-starter-dependencies + 3.8.8 + pom + import + + + +``` +然后在 dependencies 中添加自己所需使用的依赖即可使用。 + +## 🌭 项目源码 +| 项目 | GITHUB | 码云 | +|--- |--- | --- | +| MateCloud后端源码 | https://github.com/matevip/matecloud | https://gitee.com/matevip/matecloud | +| Artemis前端源码 | https://github.com/matevip/artemis | https://gitee.com/matevip/artemis | +| MateBoot后端源码 | https://github.com/matevip/mateboot | https://gitee.com/matevip/mateboot | + +## 🥥 微服务项目示例 + +- 🥥 [https://gitee.com/matevip/mate-demo](https://gitee.com/matevip/mate-demo) + +## 🍻 贡献者名单 +欢迎提交[PR](https://gitee.com/matevip/matecloud/pulls)一起完善项目,以下为开源项目贡献的战友(排名不分先后): + +@L.cm、@Z先生、@苏慕彦、@简、@madi、@yunfei08、[@hackerdom](https://github.com/aaronuu) + +## ✨ 特别鸣谢 +特别感谢卢神对`MateCloud`项目提供的技术支持! +- 卢春梦: [mica](https://gitee.com/596392912/mica) +- chuzhixin: [vue-admin-beautiful](https://github.com/chuzhixin/vue-admin-beautiful) +- anncwb: [vue-vben-admin](https://github.com/anncwb/vue-vben-admin) +## 📚 开源项目推荐 +- [SpringBoot脚手架](https://gitee.com/bdj/SpringBoot_v2) + diff --git a/mate-core/mate-starter-web/src/main/resources/mate-swagger.yml b/mate-core/mate-starter-web/src/main/resources/mate-swagger.yml index d4791219..50f276ad 100644 --- a/mate-core/mate-starter-web/src/main/resources/mate-swagger.yml +++ b/mate-core/mate-starter-web/src/main/resources/mate-swagger.yml @@ -14,14 +14,16 @@ knife4j: enable: ${mate.swagger.enable} # 开启生产环境屏蔽 production: false - basic: - enable: true - username: admin - password: matecloud +# basic: +# enable: true +# username: admin +# password: matecloud setting: # 是否不显示Knife4j默认的footer,默认为true(显示) enableFooter: false # 是否自定义Footer,默认为false(非自定义) enableFooterCustom: true # 自定义Footer内容,支持Markdown语法 - footerCustomContent: Apache License 2.0 | Copyright 2020-[北京道天地科技有限公司](https://gitee.com/matevip/matecloud) \ No newline at end of file + footerCustomContent: Apache License 2.0 | Copyright 2020-[北京道天地科技有限公司](https://gitee.com/matevip/matecloud) + enableHomeCustom: true + homeCustomLocation: classpath:mate-swagger.md diff --git a/mate-core/pom.xml b/mate-core/pom.xml index 787a317c..87450d3e 100644 --- a/mate-core/pom.xml +++ b/mate-core/pom.xml @@ -6,7 +6,7 @@ mate-core vip.mate - 3.8.8 + 4.0.9 pom mate-core based on Spring Cloud Alibaba microservice components @@ -45,15 +45,12 @@ mate-starter-jetcache mate-starter-log mate-starter-gray - mate-starter-sharding - mate-starter-elasticsearch mate-starter-redis mate-starter-oss mate-starter-sms mate-starter-kafka mate-starter-file mate-starter-cloud - mate-starter-dozer mate-starter-rule mate-starter-sentinel mate-starter-seata @@ -61,11 +58,8 @@ mate-starter-job mate-starter-mail mate-starter-strategy - mate-starter-retrofit - mate-starter-j2cache mate-starter-mongodb mate-starter-lock - mate-starter-encrypt mate-starter-rabbit mate-starter-mybatis mate-starter-idempotent @@ -73,7 +67,7 @@ - 3.8.8 + 4.0.9 2.9.2 1.5.21 1.9.4 @@ -251,7 +245,7 @@ dev 127.0.0.1:8848 - 8c29b21f-c146-4925-9168-3590e754f9da + DEFAULT_GROUP 127.0.0.1:8848 8719 diff --git a/mate-examples/pom.xml b/mate-examples/pom.xml index 79514576..b8b63282 100644 --- a/mate-examples/pom.xml +++ b/mate-examples/pom.xml @@ -5,7 +5,7 @@ matecloud vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-examples/seata-example/pom.xml b/mate-examples/seata-example/pom.xml index ec5cccc4..66c53c70 100644 --- a/mate-examples/seata-example/pom.xml +++ b/mate-examples/seata-example/pom.xml @@ -5,7 +5,7 @@ mate-examples vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-examples/seata-example/seata-order-example/pom.xml b/mate-examples/seata-example/seata-order-example/pom.xml index ab579042..c73d5266 100644 --- a/mate-examples/seata-example/seata-order-example/pom.xml +++ b/mate-examples/seata-example/seata-order-example/pom.xml @@ -5,7 +5,7 @@ seata-example vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-examples/seata-example/seata-point-example/pom.xml b/mate-examples/seata-example/seata-point-example/pom.xml index 5fbddeb6..8972d2a4 100644 --- a/mate-examples/seata-example/seata-point-example/pom.xml +++ b/mate-examples/seata-example/seata-point-example/pom.xml @@ -5,7 +5,7 @@ seata-example vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-examples/seata-example/seata-user-example/pom.xml b/mate-examples/seata-example/seata-user-example/pom.xml index d66088e1..6dd6d221 100644 --- a/mate-examples/seata-example/seata-user-example/pom.xml +++ b/mate-examples/seata-example/seata-user-example/pom.xml @@ -5,7 +5,7 @@ seata-example vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-examples/sso-ui-example/pom.xml b/mate-examples/sso-ui-example/pom.xml index 20258c83..3bb9be07 100644 --- a/mate-examples/sso-ui-example/pom.xml +++ b/mate-examples/sso-ui-example/pom.xml @@ -5,7 +5,7 @@ mate-examples vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-gateway/pom.xml b/mate-gateway/pom.xml index f154dec8..96544c14 100644 --- a/mate-gateway/pom.xml +++ b/mate-gateway/pom.xml @@ -5,7 +5,7 @@ matecloud vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-gateway/src/main/java/vip/mate/gateway/handler/JsonErrorExceptionHandler.java b/mate-gateway/src/main/java/vip/mate/gateway/handler/JsonErrorExceptionHandler.java index 44d1f958..9e3e02a8 100644 --- a/mate-gateway/src/main/java/vip/mate/gateway/handler/JsonErrorExceptionHandler.java +++ b/mate-gateway/src/main/java/vip/mate/gateway/handler/JsonErrorExceptionHandler.java @@ -33,38 +33,12 @@ public JsonErrorExceptionHandler(ErrorAttributes errorAttributes, super(errorAttributes, resourceProperties, errorProperties, applicationContext); } -// @Override -// protected Map getErrorAttributes(ServerRequest request, boolean includeStackTrace) { -// // 这里其实可以根据异常类型进行定制化逻辑 -// Throwable error = super.getError(request); -// int code = HttpStatus.INTERNAL_SERVER_ERROR.value(); -// if (error instanceof FileNotFoundException) { -// code = HttpStatus.NOT_FOUND.value(); -// } else if (error instanceof ResponseStatusException -// && StringUtils.contains(error.getMessage(), HttpStatus.NOT_FOUND.toString())) { -// code = HttpStatus.NOT_FOUND.value(); -// } else if (error instanceof TokenException) { -// code = HttpStatus.UNAUTHORIZED.value(); -// } -// Map errorAttributes = new HashMap<>(8); -// errorAttributes.put("message", error.getMessage()); -// errorAttributes.put("code", code); -// errorAttributes.put("method", request.methodName()); -// errorAttributes.put("path", request.path()); -// return errorAttributes; -// } - @Override @SuppressWarnings("all") protected RouterFunction getRoutingFunction(ErrorAttributes errorAttributes) { return RouterFunctions.route(RequestPredicates.all(), this::renderErrorResponse); } -// @Override -// protected int getHttpStatus(Map errorAttributes) { -// return HttpStatus.INTERNAL_SERVER_ERROR.value(); -// } - @Override protected Mono renderErrorResponse(ServerRequest request) { Map error = getErrorAttributes(request, getErrorAttributeOptions(request, MediaType.ALL)); diff --git a/mate-mq/mate-log-producer/pom.xml b/mate-mq/mate-log-producer/pom.xml index 714a52b9..d5a704b0 100644 --- a/mate-mq/mate-log-producer/pom.xml +++ b/mate-mq/mate-log-producer/pom.xml @@ -5,7 +5,7 @@ mate-mq vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-mq/mate-message-consumer/pom.xml b/mate-mq/mate-message-consumer/pom.xml index 6b2fb092..245d984b 100644 --- a/mate-mq/mate-message-consumer/pom.xml +++ b/mate-mq/mate-message-consumer/pom.xml @@ -5,7 +5,7 @@ mate-mq vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-mq/mate-message-producer/pom.xml b/mate-mq/mate-message-producer/pom.xml index a9ecd032..7ead19df 100644 --- a/mate-mq/mate-message-producer/pom.xml +++ b/mate-mq/mate-message-producer/pom.xml @@ -5,7 +5,7 @@ mate-mq vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-mq/pom.xml b/mate-mq/pom.xml index 2ee584f0..8a17bea3 100644 --- a/mate-mq/pom.xml +++ b/mate-mq/pom.xml @@ -5,7 +5,7 @@ matecloud vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-platform/mate-component-api/pom.xml b/mate-platform/mate-component-api/pom.xml index 8fcb6fab..832abe94 100644 --- a/mate-platform/mate-component-api/pom.xml +++ b/mate-platform/mate-component-api/pom.xml @@ -5,7 +5,7 @@ mate-platform vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-platform/mate-component/pom.xml b/mate-platform/mate-component/pom.xml index 179604cd..34b3311c 100644 --- a/mate-platform/mate-component/pom.xml +++ b/mate-platform/mate-component/pom.xml @@ -5,7 +5,7 @@ mate-platform vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-platform/mate-system-api/pom.xml b/mate-platform/mate-system-api/pom.xml index e958773c..3e5309a8 100644 --- a/mate-platform/mate-system-api/pom.xml +++ b/mate-platform/mate-system-api/pom.xml @@ -5,7 +5,7 @@ mate-platform vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-platform/mate-system-api/src/main/java/vip/mate/system/dto/UserInfo.java b/mate-platform/mate-system-api/src/main/java/vip/mate/system/dto/UserInfo.java index c5118749..dfd1ea69 100644 --- a/mate-platform/mate-system-api/src/main/java/vip/mate/system/dto/UserInfo.java +++ b/mate-platform/mate-system-api/src/main/java/vip/mate/system/dto/UserInfo.java @@ -35,7 +35,7 @@ public class UserInfo implements Serializable { * 系统角色标识组 */ @ApiModelProperty(value = "系统角色标识组") - private List roleIds; + private List roleIds; /** * 登录类型 1:用户名密码登录 2:手机号登录 3:社交登录 diff --git a/mate-platform/mate-system-api/src/main/java/vip/mate/system/entity/SysMenu.java b/mate-platform/mate-system-api/src/main/java/vip/mate/system/entity/SysMenu.java index 6ca5398f..c3283ec9 100644 --- a/mate-platform/mate-system-api/src/main/java/vip/mate/system/entity/SysMenu.java +++ b/mate-platform/mate-system-api/src/main/java/vip/mate/system/entity/SysMenu.java @@ -40,6 +40,11 @@ public class SysMenu extends BaseEntity { */ @ApiModelProperty(value = "路径") private String path; + /** + * 组件 + */ + @ApiModelProperty(value = "组件") + private String component; /** * 父菜单ID */ diff --git a/mate-platform/mate-system-api/src/main/java/vip/mate/system/entity/SysRole.java b/mate-platform/mate-system-api/src/main/java/vip/mate/system/entity/SysRole.java index b5e5704d..f9d86ee5 100644 --- a/mate-platform/mate-system-api/src/main/java/vip/mate/system/entity/SysRole.java +++ b/mate-platform/mate-system-api/src/main/java/vip/mate/system/entity/SysRole.java @@ -1,5 +1,6 @@ package vip.mate.system.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -8,6 +9,8 @@ import lombok.experimental.Accessors; import vip.mate.core.database.entity.BaseEntity; +import java.util.List; + /** *

* 角色表 @@ -35,6 +38,16 @@ public class SysRole extends BaseEntity { */ @ApiModelProperty(value = "角色编码") private String roleCode; + /** + * 排序 + */ + @ApiModelProperty(value = "排序") + private int sort; + /** + * 状态 + */ + @ApiModelProperty(value = "状态") + private String status; /** * 描述 */ @@ -51,4 +64,11 @@ public class SysRole extends BaseEntity { */ @ApiModelProperty(value = "租户ID") private Integer tenantId; + + /** + * 菜单列表 + */ + @TableField(exist = false) + @ApiModelProperty(value = "菜单列表") + private List menu; } diff --git a/mate-platform/mate-system-api/src/main/java/vip/mate/system/entity/SysUser.java b/mate-platform/mate-system-api/src/main/java/vip/mate/system/entity/SysUser.java index 0a7b7805..2873920d 100644 --- a/mate-platform/mate-system-api/src/main/java/vip/mate/system/entity/SysUser.java +++ b/mate-platform/mate-system-api/src/main/java/vip/mate/system/entity/SysUser.java @@ -92,7 +92,7 @@ public class SysUser extends BaseEntity { * 角色id */ @ApiModelProperty(value = "角色id") - private Long roleId; + private String roleId; /** * 部门id @@ -112,6 +112,12 @@ public class SysUser extends BaseEntity { @ApiModelProperty(value = "删除标识") private String isDeleted; + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + private String remark; + /** * 部门名称 */ diff --git a/mate-platform/mate-system-api/src/main/java/vip/mate/system/vo/SysMenuVO.java b/mate-platform/mate-system-api/src/main/java/vip/mate/system/vo/SysMenuVO.java index 4f962243..36327043 100644 --- a/mate-platform/mate-system-api/src/main/java/vip/mate/system/vo/SysMenuVO.java +++ b/mate-platform/mate-system-api/src/main/java/vip/mate/system/vo/SysMenuVO.java @@ -8,6 +8,7 @@ import vip.mate.core.web.tree.INode; import vip.mate.system.entity.MenuMeta; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -78,6 +79,8 @@ public class SysMenuVO implements INode { private String typeName; + private LocalDateTime createTime; + /** * 子孙节点 */ diff --git a/mate-platform/mate-system/pom.xml b/mate-platform/mate-system/pom.xml index 8877af42..26f6c769 100644 --- a/mate-platform/mate-system/pom.xml +++ b/mate-platform/mate-system/pom.xml @@ -5,7 +5,7 @@ mate-platform vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysBlacklistController.java b/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysBlacklistController.java index 3cebcd06..09515637 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysBlacklistController.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysBlacklistController.java @@ -43,7 +43,6 @@ public class SysBlacklistController extends BaseController { /** * 黑名单分页 - * @param page 分页参数 * @param search 关键词 * @return Result */ diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysLogController.java b/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysLogController.java index b72f07c4..9d7d3a49 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysLogController.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysLogController.java @@ -1,6 +1,7 @@ package vip.mate.system.controller; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -69,5 +70,13 @@ public Result del(@RequestParam String ids) { return Result.condition(sysLogService.removeByIds(CollectionUtil.stringToCollection(ids))); } + @PreAuth() + @Log(value = "日志清空") + @PostMapping("/empty") + @ApiOperation(value = "日志清空") + public Result empty() { + return Result.condition(sysLogService.remove(Wrappers.emptyWrapper())); + } + } diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysMenuController.java b/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysMenuController.java index 3d578854..0a206ce3 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysMenuController.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysMenuController.java @@ -1,6 +1,5 @@ package vip.mate.system.controller; - import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import io.swagger.annotations.Api; @@ -47,142 +46,153 @@ @Api(tags = "菜单管理") public class SysMenuController extends BaseController { - private final ISysMenuService sysMenuService; + private final ISysMenuService sysMenuService; + + /** + * 菜单树 + * + * @return Result + */ + @PreAuth + @Log(value = "菜单树", exception = "菜单树请求异常") + @GetMapping("/tree") + @ApiOperation(value = "菜单树", notes = "根据roleId查询菜单树") + public Result tree(@ApiIgnore @EnableUser LoginUser user) { + return Result.data(sysMenuService.routes(user.getRoleId())); + } - /** - * 菜单树 - * - * @return Result - */ - @PreAuth - @Log(value = "菜单树", exception = "菜单树请求异常") - @GetMapping("/tree") - @ApiOperation(value = "菜单树", notes = "根据roleId查询菜单树") - @ApiImplicitParams({ - @ApiImplicitParam(name = "roleId", required = false, value = "可不填,根据token获取", paramType = "form"), - }) - public Result tree(@ApiIgnore @EnableUser LoginUser user) { - return Result.data(sysMenuService.routes(user.getRoleId())); - } + /** + * 菜单列表 + * + * @param search 搜索关键词 + * @return Result + */ + @PreAuth + @Log(value = "菜单列表", exception = "菜单列表请求异常") + @GetMapping("/list") + @ApiOperation(value = "菜单列表", notes = "菜单列表,根据关键词查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "keyword", required = true, value = "模糊查询关键词", paramType = "form"), + @ApiImplicitParam(name = "startDate", required = true, value = "创建开始日期", paramType = "form"), + @ApiImplicitParam(name = "endDate", required = true, value = "创建结束日期", paramType = "form"), + }) + public Result list(@ApiIgnore Search search) { + return Result.data(ForestNodeMerger.merge(TreeUtil.buildTree(sysMenuService.searchList(search)))); + } - /** - * 菜单列表 - * - * @param search 搜索关键词 - * @return Result - */ - @PreAuth - @Log(value = "菜单列表", exception = "菜单列表请求异常") - @GetMapping("/list") - @ApiOperation(value = "菜单列表", notes = "菜单列表,根据关键词查询") - @ApiImplicitParams({ - @ApiImplicitParam(name = "keyword", required = true, value = "模糊查询关键词", paramType = "form"), - @ApiImplicitParam(name = "startDate", required = true, value = "创建开始日期", paramType = "form"), - @ApiImplicitParam(name = "endDate", required = true, value = "创建结束日期", paramType = "form"), - }) - public Result list(@ApiIgnore Search search) { - return Result.data(ForestNodeMerger.merge(TreeUtil.buildTree(sysMenuService.searchList(search)))); - } + /** + * 菜单分级列表,用于前端下拉框使用 + * + * @return Result + */ + @PreAuth + @Log(value = "菜单分级列表", exception = "菜单分级列表请求异常") + @GetMapping("/grade") + @ApiOperation(value = "菜单分级列表", notes = "菜单分级列表") + public Result grade() { + LambdaQueryWrapper lsm = Wrappers.query().lambda().orderByAsc(SysMenu::getSort); + List sysMenus = sysMenuService.list(lsm); + return Result.data(ForestNodeMerger.merge( + sysMenus.stream().map(sysMenu -> SysMenuDTO.builder() + .id(sysMenu.getId()) + .label(sysMenu.getName()) + .parentId(sysMenu.getParentId()).build()).collect(Collectors.toList()))); + } - /** - * 菜单分级列表,用于前端下拉框使用 - * - * @return Result - */ - @PreAuth - @Log(value = "菜单分级列表", exception = "菜单分级列表请求异常") - @GetMapping("/grade") - @ApiOperation(value = "菜单分级列表", notes = "菜单分级列表") - public Result grade() { - LambdaQueryWrapper lsm = Wrappers.query().lambda().orderByAsc(SysMenu::getSort); - List sysMenus = sysMenuService.list(lsm); - return Result.data(ForestNodeMerger.merge( - sysMenus.stream().map(sysMenu -> SysMenuDTO.builder() - .id(sysMenu.getId()) - .label(sysMenu.getName()) - .parentId(sysMenu.getParentId()).build()).collect(Collectors.toList()))); - } + /** + * 菜单设置 + * + * @param sysMenu 菜单 + * @return Result + */ + @PreAuth + @Log(value = "菜单设置", exception = "菜单设置请求异常") + @PostMapping("/set") + @ApiOperation(value = "菜单设置", notes = "菜单设置,支持新增或修改") + public Result set(@Valid @RequestBody SysMenu sysMenu) { + return Result.condition(sysMenuService.saveAll(sysMenu)); + } - /** - * 菜单设置 - * - * @param sysMenu 菜单 - * @return Result - */ - @PreAuth - @Log(value = "菜单设置", exception = "菜单设置请求异常") - @PostMapping("/set") - @ApiOperation(value = "菜单设置", notes = "菜单设置,支持新增或修改") - public Result set(@Valid @RequestBody SysMenu sysMenu) { - return Result.condition(sysMenuService.saveAll(sysMenu)); - } + /** + * 查询菜单信息 + * + * @param id id + * @return Result + */ + @PreAuth + @Log(value = "菜单信息", exception = "菜单信息请求异常") + @GetMapping("/get") + @ApiOperation(value = "菜单信息", notes = "根据ID查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", required = true, value = "菜单ID", paramType = "form"), + }) + public Result get(@RequestParam String id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(SysMenu::getId, id); + return Result.data(sysMenuService.getOne(queryWrapper)); + } - /** - * 查询菜单信息 - * - * @param id id - * @return Result - */ - @PreAuth - @Log(value = "菜单信息", exception = "菜单信息请求异常") - @GetMapping("/get") - @ApiOperation(value = "菜单信息", notes = "根据ID查询") - @ApiImplicitParams({ - @ApiImplicitParam(name = "id", required = true, value = "菜单ID", paramType = "form"), - }) - public Result get(@RequestParam String id) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.in(SysMenu::getId, id); - return Result.data(sysMenuService.getOne(queryWrapper)); - } + /** + * 批量删除查询 + * + * @param ids 多个Id,用,号分隔 + * @return Result + */ + @PreAuth + @Log(value = "菜单删除", exception = "菜单删除请求异常") + @PostMapping("/del") + @ApiOperation(value = "菜单删除", notes = "菜单删除") + @ApiImplicitParams({ + @ApiImplicitParam(name = "ids", required = true, value = "多个用,号隔开", paramType = "form") + }) + public Result del(@RequestParam String ids) { + return Result.condition(sysMenuService.removeByIds(CollectionUtil.stringToCollection(ids))); + } - /** - * 批量删除查询 - * - * @param ids 多个Id,用,号分隔 - * @return Result - */ - @PreAuth - @Log(value = "菜单删除", exception = "菜单删除请求异常") - @PostMapping("/del") - @ApiOperation(value = "菜单删除", notes = "菜单删除") - @ApiImplicitParams({ - @ApiImplicitParam(name = "ids", required = true, value = "多个用,号隔开", paramType = "form") - }) - public Result del(@RequestParam String ids) { - return Result.condition(sysMenuService.removeByIds(CollectionUtil.stringToCollection(ids))); - } + /** + * 菜单状态 + * + * @param ids 多个Id,用,号分隔 + * @param status 状态:启用、禁用 + * @return Result + */ + @PreAuth + @Log(value = "菜单状态", exception = "菜单状态请求异常") + @PostMapping("/set-status") + @ApiOperation(value = "菜单状态", notes = "状态包括:启用、禁用") + @ApiImplicitParams({ + @ApiImplicitParam(name = "ids", required = true, value = "多个id用,号隔开", paramType = "form"), + @ApiImplicitParam(name = "status", required = true, value = "状态", paramType = "form") + }) + public Result setStatus(@RequestParam String ids, @RequestParam String status) { + return Result.condition(sysMenuService.status(ids, status)); + } - /** - * 菜单状态 - * - * @param ids 多个Id,用,号分隔 - * @param status 状态:启用、禁用 - * @return Result - */ - @PreAuth - @Log(value = "菜单状态", exception = "菜单状态请求异常") - @PostMapping("/set-status") - @ApiOperation(value = "菜单状态", notes = "状态包括:启用、禁用") - @ApiImplicitParams({ - @ApiImplicitParam(name = "ids", required = true, value = "多个id用,号隔开", paramType = "form"), - @ApiImplicitParam(name = "status", required = true, value = "状态", paramType = "form") - }) - public Result setStatus(@RequestParam String ids, @RequestParam String status) { - return Result.condition(sysMenuService.status(ids, status)); - } + /** + * 菜单是否包含子菜单 + * + * @param sysMenu 菜单对象 + * @return boolean + */ + @PreAuth + @Log(value = "菜单是否包含子菜单") + @GetMapping("/check-child") + @ApiOperation(value = "菜单是否包含子菜单") + public Result checkChild(SysMenu sysMenu) { + return Result.data(sysMenuService.checkChild(sysMenu.getId())); + } - /** - * 菜单导出 - */ - @PreAuth - @Log(value = "菜单导出", exception = "菜单导出请求异常") - @PostMapping("/export") - @ApiOperation(value = "菜单导出", notes = "菜单导出") - public void export(@ApiIgnore HttpServletResponse response) { - List sysMenuPOIS = sysMenuService.export(); - //使用工具类导出excel - ExcelUtil.exportExcel(sysMenuPOIS, null, "菜单", SysMenuPOI.class, "menu", response); - } + /** + * 菜单导出 + */ + @PreAuth + @Log(value = "菜单导出", exception = "菜单导出请求异常") + @PostMapping("/export") + @ApiOperation(value = "菜单导出", notes = "菜单导出") + public void export(@ApiIgnore HttpServletResponse response) { + List sysMenuPOIS = sysMenuService.export(); + //使用工具类导出excel + ExcelUtil.exportExcel(sysMenuPOIS, null, "菜单", SysMenuPOI.class, "menu", response); + } } diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysRoleController.java b/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysRoleController.java index 818b0aec..4b59e9cc 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysRoleController.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysRoleController.java @@ -1,7 +1,9 @@ package vip.mate.system.controller; +import cn.hutool.core.util.NumberUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -11,8 +13,8 @@ import springfox.documentation.annotations.ApiIgnore; import vip.mate.core.auth.annotation.PreAuth; import vip.mate.core.common.api.Result; -import vip.mate.core.common.constant.MateConstant; -import vip.mate.core.common.constant.Oauth2Constant; +import vip.mate.core.common.constant.SystemConstant; +import vip.mate.core.database.entity.Search; import vip.mate.core.file.util.ExcelUtil; import vip.mate.core.log.annotation.Log; import vip.mate.core.redis.core.RedisService; @@ -49,6 +51,21 @@ public class SysRoleController extends BaseController { private final ISysRolePermissionService sysRolePermissionService; private final RedisService redisService; + @PreAuth + @Log(value = "角色分页") + @GetMapping("/page") + @ApiOperation(value = "角色分页") + @ApiImplicitParams({ + @ApiImplicitParam(name = "current", required = true, value = "当前页", paramType = "form"), + @ApiImplicitParam(name = "size", required = true, value = "每页显示数据", paramType = "form"), + @ApiImplicitParam(name = "keyword", required = true, value = "模糊查询关键词", paramType = "form"), + @ApiImplicitParam(name = "startDate", required = true, value = "创建开始日期", paramType = "form"), + @ApiImplicitParam(name = "endDate", required = true, value = "创建结束日期", paramType = "form"), + }) + public Result page(Search search) { + return Result.data(sysRoleService.listPage(search)); + } + /** * 角色列表 * @@ -68,6 +85,28 @@ public Result list(@RequestParam Map query) { return Result.data(sysRoleService.listSearch(query)); } + /** + * 所有角色列表 + * + * @return List + */ + @PreAuth + @Log(value = "所有角色列表") + @GetMapping("/all-list") + @ApiOperation(value = "所有角色列表") + public Result allList() { + // 设置一个未授权的角色信息,提供给前端使用 + SysRole sysRole = new SysRole(); + sysRole.setId(NumberUtil.parseLong(SystemConstant.ROLE_DEFAULT_ID)); + sysRole.setRoleName(SystemConstant.ROLE_DEFAULT_VALUE); + // 查询所有角色列表 + List list = sysRoleService.list(); + // 增加未授权角色信息 + list.add(sysRole); + // 业务返回 + return Result.data(list); + } + /** * 角色设置 * @@ -79,7 +118,23 @@ public Result list(@RequestParam Map query) { @PostMapping("/set") @ApiOperation(value = "角色设置", notes = "角色设置,支持新增或修改") public Result set(@Valid @RequestBody SysRole sysRole) { - return Result.condition(sysRoleService.saveOrUpdate(sysRole)); + return Result.condition(sysRoleService.set(sysRole)); + } + + /** + * 角色状态变更 + * + * @param sysRole + * @return + */ + @PreAuth + @Log(value = "角色状态变更") + @PostMapping("/set-status") + @ApiOperation(value = "角色状态变更") + public Result setStatus(@Valid @RequestBody SysRole sysRole) { + return Result.condition(sysRoleService.update(Wrappers.lambdaUpdate(). + set(SysRole::getStatus, sysRole.getStatus()) + .eq(SysRole::getId, sysRole.getId()))); } /** @@ -115,7 +170,7 @@ public Result get(@RequestParam String id) { @ApiImplicitParam(name = "ids", required = true, value = "多个用,号隔开", paramType = "form") }) public Result delete(@RequestParam String ids) { - return Result.condition(sysRoleService.removeByIds(CollectionUtil.stringToCollection(ids))); + return Result.condition(sysRoleService.batchDeleteByIds(ids)); } /** diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysUserController.java b/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysUserController.java index a06588eb..bff9521e 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysUserController.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/controller/SysUserController.java @@ -12,6 +12,7 @@ import vip.mate.core.auth.annotation.PreAuth; import vip.mate.core.cloud.util.CryptoUtil; import vip.mate.core.common.api.Result; +import vip.mate.core.common.exception.BaseException; import vip.mate.core.database.entity.Search; import vip.mate.core.file.util.ExcelUtil; import vip.mate.core.log.annotation.Log; @@ -40,142 +41,142 @@ @Api(tags = "用户管理") public class SysUserController extends BaseController { - private final ISysUserService sysUserService; + private final ISysUserService sysUserService; - private final PasswordEncoder passwordEncoder; + private final PasswordEncoder passwordEncoder; - /** - * 用户列表 - * - * @param search  搜索关键词 - * @return Result - */ - @PreAuth - @Log(value = "用户列表", exception = "用户列表请求异常") - @GetMapping("/page") - @ApiOperation(value = "用户列表", notes = "分页查询") - @ApiImplicitParams({ - @ApiImplicitParam(name = "current", required = true, value = "当前页", paramType = "form"), - @ApiImplicitParam(name = "size", required = true, value = "每页显示数据", paramType = "form"), - @ApiImplicitParam(name = "keyword", required = true, value = "模糊查询关键词", paramType = "form"), - @ApiImplicitParam(name = "startDate", required = true, value = "创建开始日期", paramType = "form"), - @ApiImplicitParam(name = "endDate", required = true, value = "创建结束日期", paramType = "form"), - @ApiImplicitParam(name = "prop", required = true, value = "排序属性", paramType = "form"), - @ApiImplicitParam(name = "order", required = true, value = "排序方式", paramType = "form"), - }) - public Result page(Search search) { - return Result.data(sysUserService.listPage(search)); - } + /** + * 用户列表 + * + * @param search  搜索关键词 + * @return Result + */ + @PreAuth + @Log(value = "用户列表", exception = "用户列表请求异常") + @GetMapping("/page") + @ApiOperation(value = "用户列表", notes = "分页查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "current", required = true, value = "当前页", paramType = "form"), + @ApiImplicitParam(name = "size", required = true, value = "每页显示数据", paramType = "form"), + @ApiImplicitParam(name = "keyword", required = true, value = "模糊查询关键词", paramType = "form"), + @ApiImplicitParam(name = "startDate", required = true, value = "创建开始日期", paramType = "form"), + @ApiImplicitParam(name = "endDate", required = true, value = "创建结束日期", paramType = "form"), + @ApiImplicitParam(name = "prop", required = true, value = "排序属性", paramType = "form"), + @ApiImplicitParam(name = "order", required = true, value = "排序方式", paramType = "form"), + }) + public Result page(Search search, SysUser sysUser) { + return Result.data(sysUserService.listPage(search, sysUser)); + } - /** - * 设置用户,支持新增或修改 - * - * @param sysUser 用户信息 - * @return Result - */ - @PreAuth - @Log(value = "用户设置", exception = "设置用户请求异常") - @PostMapping("/set") - @ApiOperation(value = "设置用户", notes = "新增或修改用户") - public Result set(@Valid @RequestBody SysUser sysUser) { - String password = sysUser.getPassword(); - if (StringUtils.isNotBlank(password) && sysUser.getId() == null) { - password = passwordEncoder.encode(CryptoUtil.encodeMD5(password)); - sysUser.setPassword(password); - } - return Result.condition(sysUserService.saveOrUpdate(sysUser)); - } + /** + * 设置用户,支持新增或修改 + * + * @param sysUser 用户信息 + * @return Result + */ + @PreAuth + @Log(value = "用户设置", exception = "设置用户请求异常") + @PostMapping("/set") + @ApiOperation(value = "设置用户", notes = "新增或修改用户") + public Result set(@Valid @RequestBody SysUser sysUser) { + String password = sysUser.getPassword(); + if (StringUtils.isNotBlank(password) && sysUser.getId() == null) { + password = passwordEncoder.encode(CryptoUtil.encodeMD5(password)); + sysUser.setPassword(password); + } + return Result.condition(sysUserService.saveOrUpdate(sysUser)); + } - /** - * 用户信息 - * - * @param id Id信息 - * @return Result - */ - @PreAuth - @Log(value = "用户信息", exception = "用户信息请求异常") - @GetMapping("/get") - @ApiOperation(value = "用户信息", notes = "根据ID查询") - @ApiImplicitParams({ - @ApiImplicitParam(name = "id", required = true, value = "用户ID", paramType = "form"), - }) - public Result get(@RequestParam String id) { - return Result.data(sysUserService.getById(id)); - } + /** + * 用户信息 + * + * @param id Id信息 + * @return Result + */ + @PreAuth + @Log(value = "用户信息", exception = "用户信息请求异常") + @GetMapping("/get") + @ApiOperation(value = "用户信息", notes = "根据ID查询") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", required = true, value = "用户ID", paramType = "form"), + }) + public Result get(@RequestParam String id) { + return Result.data(sysUserService.getById(id)); + } - /** - * 用户删除 - * - * @param ids id字符串,根据,号分隔 - * @return Result - */ - @PreAuth - @Log(value = "用户删除", exception = "用户删除请求异常") - @PostMapping("/del") - @ApiOperation(value = "用户删除", notes = "用户删除") - @ApiImplicitParams({ - @ApiImplicitParam(name = "ids", required = true, value = "多个用,号隔开", paramType = "form") - }) - public Result del(@RequestParam String ids) { - return Result.condition(sysUserService.removeByIds(CollectionUtil.stringToCollection(ids))); - } + /** + * 用户删除 + * + * @param ids id字符串,根据,号分隔 + * @return Result + */ + @PreAuth + @Log(value = "用户删除", exception = "用户删除请求异常") + @PostMapping("/del") + @ApiOperation(value = "用户删除", notes = "用户删除") + @ApiImplicitParams({ + @ApiImplicitParam(name = "ids", required = true, value = "多个用,号隔开", paramType = "form") + }) + public Result del(@RequestParam String ids) { + return Result.condition(sysUserService.removeByIds(CollectionUtil.stringToCollection(ids))); + } - /** - * 设置用户状态 - * - * @param ids id字符串,根据,号分隔 - * @param status 状态标识,启用或禁用 - * @return Result - */ - @PreAuth - @Log(value = "用户状态", exception = "用户状态请求异常") - @PostMapping("/set-status") - @ApiOperation(value = "用户状态", notes = "状态包括:启用、禁用") - @ApiImplicitParams({ - @ApiImplicitParam(name = "ids", required = true, value = "多个用,号隔开", paramType = "form"), - @ApiImplicitParam(name = "status", required = true, value = "状态", paramType = "form") - }) - public Result setStatus(@RequestParam String ids, @RequestParam String status) { - return Result.condition(sysUserService.status(ids, status)); - } + /** + * 设置用户状态 + * + * @param ids id字符串,根据,号分隔 + * @param status 状态标识,启用或禁用 + * @return Result + */ + @PreAuth + @Log(value = "用户状态", exception = "用户状态请求异常") + @PostMapping("/set-status") + @ApiOperation(value = "用户状态", notes = "状态包括:启用、禁用") + @ApiImplicitParams({ + @ApiImplicitParam(name = "ids", required = true, value = "多个用,号隔开", paramType = "form"), + @ApiImplicitParam(name = "status", required = true, value = "状态", paramType = "form") + }) + public Result setStatus(@RequestParam String ids, @RequestParam String status) { + return Result.condition(sysUserService.status(ids, status)); + } - /** - * 设置用户密码 - * - * @param id id - * @param password 密码 - * @return Result - */ - @PreAuth - @Log(value = "用户密码设置", exception = "用户密码设置请求异常") - @PostMapping("/set-password") - @ApiOperation(value = "用户密码设置", notes = "用户密码设置") - @ApiImplicitParams({ - @ApiImplicitParam(name = "id", required = true, value = "用户ID", paramType = "form"), - @ApiImplicitParam(name = "password", required = true, value = "密码", paramType = "form") - }) - public Result setPassword(@RequestParam String id, @RequestParam String password) { - String pwd = null; - if (StringUtils.isNotBlank(password)) { - pwd = passwordEncoder.encode(CryptoUtil.encodeMD5(password)); - } - SysUser sysUser = new SysUser(); - sysUser.setId(CollectionUtil.strToLong(id, 0L)); - sysUser.setPassword(pwd); - return Result.condition(sysUserService.updateById(sysUser)); - } + /** + * 设置用户密码 + * + * @param user 用户信息 + * @return Result + */ + @PreAuth + @Log(value = "用户密码设置", exception = "用户密码设置请求异常") + @PostMapping("/set-password") + @ApiOperation(value = "用户密码设置", notes = "用户密码设置") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", required = true, value = "用户ID", paramType = "form"), + @ApiImplicitParam(name = "password", required = true, value = "密码", paramType = "form") + }) + public Result setPassword(@RequestBody SysUser user) { + String pwd = null; + if (StringUtils.isNotBlank(user.getPassword())) { + pwd = passwordEncoder.encode(CryptoUtil.encodeMD5(user.getPassword())); + } + user.setPassword(pwd); + if (user.getId() == null) { + throw new BaseException("请求ID不能为空"); + } + return Result.condition(sysUserService.updateById(user)); + } - /** - * 用户信息导出 - */ - @PreAuth - @Log(value = "用户导出", exception = "导出用户请求异常") - @PostMapping("/export") - @ApiOperation(value = "导出用户", notes = "导出用户") - public void export(@ApiIgnore HttpServletResponse response) { - List sysUserPOIS = sysUserService.export(); - //使用工具类导出excel - ExcelUtil.exportExcel(sysUserPOIS, null, "用户", SysUserPOI.class, "user", response); - } + /** + * 用户信息导出 + */ + @PreAuth + @Log(value = "用户导出", exception = "导出用户请求异常") + @PostMapping("/export") + @ApiOperation(value = "导出用户", notes = "导出用户") + public void export(@ApiIgnore HttpServletResponse response) { + List sysUserPOIS = sysUserService.export(); + //使用工具类导出excel + ExcelUtil.exportExcel(sysUserPOIS, null, "用户", SysUserPOI.class, "user", response); + } } diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/feign/SysUserProvider.java b/mate-platform/mate-system/src/main/java/vip/mate/system/feign/SysUserProvider.java index f34cb2bb..8b323762 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/feign/SysUserProvider.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/feign/SysUserProvider.java @@ -1,7 +1,7 @@ package vip.mate.system.feign; +import cn.hutool.core.collection.ListUtil; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; @@ -17,11 +17,9 @@ import vip.mate.system.service.ISysRolePermissionService; import vip.mate.system.service.ISysUserService; -import java.util.ArrayList; -import java.util.List; - /** * 远程调用获取用户信息 + * * @author xuzhanfu */ @Slf4j @@ -70,10 +68,8 @@ public UserInfo getUserInfo(SysUser sysUser) { } UserInfo userInfo = new UserInfo(); userInfo.setSysUser(sysUser); - userInfo.setPermissions(sysRolePermissionService.getMenuIdByRoleId(sysUser.getRoleId().toString())); - List longs = new ArrayList<>(); - longs.add(sysUser.getRoleId()); - userInfo.setRoleIds(longs); + userInfo.setPermissions(sysRolePermissionService.getMenuIdByRoleId(sysUser.getRoleId())); + userInfo.setRoleIds(ListUtil.toList(sysUser.getRoleId())); userInfo.setTenantId(sysUser.getTenantId()); log.debug("feign调用:userInfo:{}", userInfo); return userInfo; diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysDictService.java b/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysDictService.java index c9d1f0fe..cd1ca0ae 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysDictService.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysDictService.java @@ -21,12 +21,32 @@ */ public interface ISysDictService extends IService { - @Cached(name= SystemConstant.SYS_DICT_CACHE, expire = 3600) + /** + * 根据编码和键获取值 + * + * @param code + * @param dictKey + * @return + */ + @Cached(name = SystemConstant.SYS_DICT_CACHE, expire = 3600) Result getValue(String code, String dictKey); - @Cached(name= SystemConstant.SYS_DICT_CACHE, key="#code", expire = 3600) + /** + * 根据编码查询字典列表 + * + * @param code + * @return + */ + @Cached(name = SystemConstant.SYS_DICT_CACHE, key = "#code", expire = 3600) Result> getList(String code); + /** + * 字典分页查询 + * + * @param page + * @param search + * @return + */ IPage listPage(Page page, Search search); } diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysMenuService.java b/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysMenuService.java index 59d52673..1c7ac093 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysMenuService.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysMenuService.java @@ -18,44 +18,60 @@ */ public interface ISysMenuService extends IService { - /** - * 菜单路由 - * - * @param roleId 角色ID - * @return List - */ - List routes(String roleId); - - /** - * 查询列表 - * - * @param search 检索对象 - * @return List - */ - List searchList(Search search); - - /** - * 保存全部 - * - * @param sysMenu 菜单对象 - * @return boolean - */ - boolean saveAll(SysMenu sysMenu); - - /** - * 状态设置 - * - * @param ids id列表 - * @param status 状态 - * @return boolean - */ - boolean status(String ids, String status); - - /** - * 菜单导出 - * - * @return 菜单导出 - */ - List export(); + /** + * 菜单路由 + * + * @param roleId 角色ID + * @return List + */ + List routes(String roleId); + + /** + * 查询列表 + * + * @param search 检索对象 + * @return List + */ + List searchList(Search search); + + /** + * 保存全部 + * + * @param sysMenu 菜单对象 + * @return boolean + */ + boolean saveAll(SysMenu sysMenu); + + /** + * 状态设置 + * + * @param ids id列表 + * @param status 状态 + * @return boolean + */ + boolean status(String ids, String status); + + /** + * 菜单导出 + * + * @return 菜单导出 + */ + List export(); + + /** + * 检查是否存在菜单子节点 + * + * @param id 菜单ID + * @return 是否 + */ + boolean checkChild(Long id); + + /** + * 根据菜单ID查询父类ID + * + * @param menuId 菜单ID + * @return parentId + */ + int getMenuChild(Long menuId); } diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysRolePermissionService.java b/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysRolePermissionService.java index bf0b5f5c..35ba523e 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysRolePermissionService.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysRolePermissionService.java @@ -15,6 +15,12 @@ */ public interface ISysRolePermissionService extends IService { + /** + * 根据角色查询菜单ID列表 + * + * @param roleId 角色ID + * @return 菜单ID列表 + */ List getMenuIdByRoleId(String roleId); } diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysRoleService.java b/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysRoleService.java index a5e96b86..6814a038 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysRoleService.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysRoleService.java @@ -1,7 +1,9 @@ package vip.mate.system.service; -import vip.mate.system.entity.SysRole; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import vip.mate.core.database.entity.Search; +import vip.mate.system.entity.SysRole; import vip.mate.system.poi.SysRolePOI; import vip.mate.system.vo.SysRoleVO; @@ -18,12 +20,57 @@ */ public interface ISysRoleService extends IService { + /** + * 角色树 + * + * @return + */ List tree(); + /** + * 查询角色列表 + * + * @param search + * @return + */ List listSearch(Map search); + /** + * 查询权限集 + * + * @param id + * @return + */ List getPermission(String id); + /** + * 角色导出 + * + * @return + */ List export(); + /** + * 分页列表 + * + * @param search + * @return + */ + IPage listPage(Search search); + + /** + * 设置角色 + * + * @param sysRole 角色对象 + * @return 布尔 + */ + boolean set(SysRole sysRole); + + /** + * 根据ids批量删除角色 + * + * @param ids ID列表 + * @return boolean + */ + boolean batchDeleteByIds(String ids); } diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysUserService.java b/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysUserService.java index c0afd8d6..37354f7a 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysUserService.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/service/ISysUserService.java @@ -18,28 +18,38 @@ */ public interface ISysUserService extends IService { - boolean status(String ids, String status); - - /** - * 分页业务方法 - * - * @param search  搜索参数 - * @return IPage - */ - IPage listPage(Search search); - - - /** - * 忽略租户查询用户信息 - * @return - */ - SysUser getOneIgnoreTenant(SysUser sysUser); - - /** - * 导出列表 - * - * @return 导出POI数据 - */ - List export(); + /** + * 用户状态设置 + * + * @param ids id列表串 + * @param status 状态 + * @return boolean + */ + boolean status(String ids, String status); + + /** + * 业务分页 + * + * @param search 分页搜索 + * @param sysUser 部门参数 + * @return 分页列表 + */ + IPage listPage(Search search, SysUser sysUser); + + + /** + * 忽略租户查询用户信息 + * + * @param sysUser 用户对象 + * @return 用户对象 + */ + SysUser getOneIgnoreTenant(SysUser sysUser); + + /** + * 导出列表 + * + * @return 导出POI数据 + */ + List export(); } diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysApiServiceImpl.java b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysApiServiceImpl.java index e171d031..4bc7256e 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysApiServiceImpl.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysApiServiceImpl.java @@ -16,12 +16,12 @@ */ package vip.mate.system.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; -import vip.mate.core.common.util.StringUtil; import vip.mate.core.database.entity.Search; import vip.mate.core.web.util.CollectionUtil; import vip.mate.system.entity.SysApi; @@ -45,13 +45,13 @@ public class SysApiServiceImpl extends ServiceImpl impleme @Override public IPage listPage(Page page, Search search, String serviceId) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if (StringUtil.isNotBlank(search.getStartDate())) { + if (StrUtil.isNotBlank(search.getStartDate())) { queryWrapper.between(SysApi::getCreateTime, search.getStartDate(), search.getEndDate()); } - if (StringUtil.isNotBlank(search.getKeyword())) { - queryWrapper.like(SysApi::getCode, search.getKeyword()) - .or() - .like(SysApi::getPath, search.getKeyword()); + if (StrUtil.isNotBlank(search.getKeyword())) { + queryWrapper.and(i -> i + .or().like(SysApi::getCode, search.getKeyword()) + .or().like(SysApi::getPath, search.getKeyword())); } if (!serviceId.equals("-1")) { queryWrapper.eq(SysApi::getServiceId, serviceId); diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysBlacklistServiceImpl.java b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysBlacklistServiceImpl.java index c76b50c5..7b4a29f9 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysBlacklistServiceImpl.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysBlacklistServiceImpl.java @@ -32,33 +32,34 @@ @AllArgsConstructor public class SysBlacklistServiceImpl extends ServiceImpl implements ISysBlacklistService { - private final IRuleCacheService ruleCacheService; + private final IRuleCacheService ruleCacheService; - @Override - public IPage listPage(Search search) { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() - .between(StrUtil.isNotBlank(search.getStartDate()), SysBlacklist::getCreateTime, search.getStartDate(), search.getEndDate()); - boolean isKeyword = StrUtil.isNotBlank(search.getKeyword()); - queryWrapper.like(isKeyword, SysBlacklist::getId, search.getKeyword()); - queryWrapper.or(isKeyword); - queryWrapper.like(SysBlacklist::getRequestUri, search.getKeyword()); - return this.baseMapper.selectPage(PageUtil.getPage(search), queryWrapper); - } + @Override + public IPage listPage(Search search) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .between(StrUtil.isNotBlank(search.getStartDate()), SysBlacklist::getCreateTime, search.getStartDate(), search.getEndDate()); + if (StrUtil.isNotBlank(search.getKeyword())) { + queryWrapper.and(i -> i + .or().like(SysBlacklist::getId, search.getKeyword()) + .or().like(SysBlacklist::getRequestUri, search.getKeyword())); + } + return this.baseMapper.selectPage(PageUtil.getPage(search), queryWrapper); + } - @Override - public boolean status(String ids, String status) { - Collection collection = CollectionUtil.stringToCollection(ids); + @Override + public boolean status(String ids, String status) { + Collection collection = CollectionUtil.stringToCollection(ids); - for (Object id : collection) { - SysBlacklist sysBlacklist = this.baseMapper.selectById(CollectionUtil.objectToLong(id, 0L)); - sysBlacklist.setStatus(status); - this.baseMapper.updateById(sysBlacklist); - //缓存操作-----start - BlackList blackList = new BlackList(); - BeanUtils.copyProperties(sysBlacklist, blackList); - ruleCacheService.setBlackList(blackList); - //缓存操作----end - } - return true; - } + for (Object id : collection) { + SysBlacklist sysBlacklist = this.baseMapper.selectById(CollectionUtil.objectToLong(id, 0L)); + sysBlacklist.setStatus(status); + this.baseMapper.updateById(sysBlacklist); + //缓存操作-----start + BlackList blackList = new BlackList(); + BeanUtils.copyProperties(sysBlacklist, blackList); + ruleCacheService.setBlackList(blackList); + //缓存操作----end + } + return true; + } } diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysClientServiceImpl.java b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysClientServiceImpl.java index d8395e02..86d0bf52 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysClientServiceImpl.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysClientServiceImpl.java @@ -1,12 +1,12 @@ package vip.mate.system.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; -import vip.mate.core.common.util.StringUtil; import vip.mate.core.database.entity.Search; import vip.mate.core.database.util.PageUtil; import vip.mate.core.web.util.CollectionUtil; @@ -31,38 +31,39 @@ @Service public class SysClientServiceImpl extends ServiceImpl implements ISysClientService { - @Override - public IPage listPage(Search search) { - LambdaQueryWrapper queryWrapper = Wrappers.query().lambda() - .between(StringUtil.isNotBlank(search.getStartDate()), SysClient::getCreateTime, search.getStartDate(), search.getEndDate()); - boolean isKeyword = StringUtil.isNotBlank(search.getKeyword()); - queryWrapper.like(isKeyword, SysClient::getClientId, search.getKeyword()); - queryWrapper.or(isKeyword); - queryWrapper.like(isKeyword, SysClient::getId, search.getKeyword()); - return this.baseMapper.selectPage(PageUtil.getPage(search), queryWrapper); - } + @Override + public IPage listPage(Search search) { + LambdaQueryWrapper queryWrapper = Wrappers.query().lambda() + .between(StrUtil.isNotBlank(search.getStartDate()), SysClient::getCreateTime, search.getStartDate(), search.getEndDate()); + if (StrUtil.isNotBlank(search.getKeyword())) { + queryWrapper.and(i -> i + .or().like(SysClient::getClientId, search.getKeyword()) + .or().like(SysClient::getId, search.getKeyword())); + } + return this.baseMapper.selectPage(PageUtil.getPage(search), queryWrapper); + } - @Override - public boolean status(String ids, String status) { - Collection collection = CollectionUtil.stringToCollection(ids); + @Override + public boolean status(String ids, String status) { + Collection collection = CollectionUtil.stringToCollection(ids); - for (Object id : collection) { - SysClient sysClient = this.baseMapper.selectById(CollectionUtil.objectToLong(id, 0L)); - sysClient.setStatus(status); - this.baseMapper.updateById(sysClient); - } - return true; - } + for (Object id : collection) { + SysClient sysClient = this.baseMapper.selectById(CollectionUtil.objectToLong(id, 0L)); + sysClient.setStatus(status); + this.baseMapper.updateById(sysClient); + } + return true; + } - @Override - public List export() { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SysClient::getIsDeleted, 0); - List sysClients = this.baseMapper.selectList(queryWrapper); - return sysClients.stream().map(sysClient -> { - SysClientPOI sysClientPOI = new SysClientPOI(); - BeanUtils.copyProperties(sysClient, sysClientPOI); - return sysClientPOI; - }).collect(Collectors.toList()); - } + @Override + public List export() { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysClient::getIsDeleted, 0); + List sysClients = this.baseMapper.selectList(queryWrapper); + return sysClients.stream().map(sysClient -> { + SysClientPOI sysClientPOI = new SysClientPOI(); + BeanUtils.copyProperties(sysClient, sysClientPOI); + return sysClientPOI; + }).collect(Collectors.toList()); + } } diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysDepartServiceImpl.java b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysDepartServiceImpl.java index ebe58ff1..c2266896 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysDepartServiceImpl.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysDepartServiceImpl.java @@ -30,88 +30,89 @@ @Service public class SysDepartServiceImpl extends ServiceImpl implements ISysDepartService { - @Override - public List tree() { - return baseMapper.tree(); - } + private final static String NULL = "null"; + @Override + public List tree() { + return baseMapper.tree(); + } - @Override - public List searchList(Map search) { - String keyword = String.valueOf(search.get("keyword")); - String startDate = String.valueOf(search.get("startDate")); - String endDate = String.valueOf(search.get("endDate")); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - if (StrUtil.isNotBlank(startDate) && !startDate.equals("null")) { - lambdaQueryWrapper.between(SysDepart::getCreateTime, startDate, endDate); - } - if (StrUtil.isNotBlank(keyword) && !keyword.equals("null")) { - lambdaQueryWrapper.like(SysDepart::getName, keyword); - lambdaQueryWrapper.or(); - lambdaQueryWrapper.like(SysDepart::getId, keyword); - } - List sysDeparts = this.baseMapper.selectList(lambdaQueryWrapper); - List sysDepartVOS = sysDeparts.stream().map(sysDepart -> { - SysDepartVO sysDepartVO = new SysDepartVO(); - BeanUtils.copyProperties(sysDepart, sysDepartVO); - return sysDepartVO; - }).collect(Collectors.toList()); - return ForestNodeMerger.merge(sysDepartVOS); - } + @Override + public List searchList(Map search) { + String keyword = String.valueOf(search.get("keyword")); + String startDate = String.valueOf(search.get("startDate")); + String endDate = String.valueOf(search.get("endDate")); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (StrUtil.isNotBlank(startDate) && !startDate.equals(NULL)) { + lambdaQueryWrapper.between(SysDepart::getCreateTime, startDate, endDate); + } + if (StrUtil.isNotBlank(keyword) && !keyword.equals(NULL)) { + lambdaQueryWrapper.and(i -> i + .or().like(SysDepart::getName, keyword) + .or().like(SysDepart::getId, keyword)); + } + List sysDeparts = this.baseMapper.selectList(lambdaQueryWrapper); + List sysDepartVOS = sysDeparts.stream().map(sysDepart -> { + SysDepartVO sysDepartVO = new SysDepartVO(); + BeanUtils.copyProperties(sysDepart, sysDepartVO); + return sysDepartVO; + }).collect(Collectors.toList()); + return ForestNodeMerger.merge(sysDepartVOS); + } - @Override - public List export() { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SysDepart::getIsDeleted, 0); - List sysDeparts = this.baseMapper.selectList(queryWrapper); - return sysDeparts.stream().map(sysDepart -> { - SysDepartPOI sysDepartPOI = new SysDepartPOI(); - BeanUtils.copyProperties(sysDepart, sysDepartPOI); - return sysDepartPOI; - }).collect(Collectors.toList()); - } + @Override + public List export() { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysDepart::getIsDeleted, 0); + List sysDeparts = this.baseMapper.selectList(queryWrapper); + return sysDeparts.stream().map(sysDepart -> { + SysDepartPOI sysDepartPOI = new SysDepartPOI(); + BeanUtils.copyProperties(sysDepart, sysDepartPOI); + return sysDepartPOI; + }).collect(Collectors.toList()); + } - @Override - public List selectDeptIds(Long deptId) { - DepartDTO depart = this.getDepart(deptId); - List departIdList = new ArrayList<>(); - if (depart != null) { - departIdList.add(depart.getId()); - addDeptIdList(departIdList, depart); - } - return departIdList; - } + @Override + public List selectDeptIds(Long deptId) { + DepartDTO depart = this.getDepart(deptId); + List departIdList = new ArrayList<>(); + if (depart != null) { + departIdList.add(depart.getId()); + addDeptIdList(departIdList, depart); + } + return departIdList; + } - private DepartDTO getDepart(Long id) { - List departs = this.list(Wrappers.query().lambda() - .select(SysDepart::getId, SysDepart::getName, SysDepart::getParentId, - SysDepart::getSort, SysDepart::getCreateTime)); + private DepartDTO getDepart(Long id) { + List departs = this.list(Wrappers.query().lambda() + .select(SysDepart::getId, SysDepart::getName, SysDepart::getParentId, + SysDepart::getSort, SysDepart::getCreateTime)); - List sysDeparts = departs.stream().map(sysDepart -> { - DepartDTO departDTO = new DepartDTO(); - BeanUtils.copyProperties(sysDepart, departDTO); - return departDTO; - }).collect(Collectors.toList()); + List sysDeparts = departs.stream().map(sysDepart -> { + DepartDTO departDTO = new DepartDTO(); + BeanUtils.copyProperties(sysDepart, departDTO); + return departDTO; + }).collect(Collectors.toList()); - Map map = sysDeparts.stream().collect( - Collectors.toMap(SysDepart::getId, department -> department)); - for (DepartDTO dept : map.values()) { - DepartDTO parent = map.get(dept.getParentId()); - if (parent != null) { - List children = parent.getChildren() == null ? new ArrayList<>() : parent.getChildren(); - children.add(dept); - parent.setChildren(children); - } - } - return map.get(id); - } + Map map = sysDeparts.stream().collect( + Collectors.toMap(SysDepart::getId, department -> department)); + for (DepartDTO dept : map.values()) { + DepartDTO parent = map.get(dept.getParentId()); + if (parent != null) { + List children = parent.getChildren() == null ? new ArrayList<>() : parent.getChildren(); + children.add(dept); + parent.setChildren(children); + } + } + return map.get(id); + } - private void addDeptIdList(List deptIdList, DepartDTO department) { - List children = department.getChildren(); - if (children != null) { - for (DepartDTO d : children) { - deptIdList.add(d.getId()); - addDeptIdList(deptIdList, d); - } - } - } + private void addDeptIdList(List deptIdList, DepartDTO department) { + List children = department.getChildren(); + if (children != null) { + for (DepartDTO d : children) { + deptIdList.add(d.getId()); + addDeptIdList(deptIdList, d); + } + } + } } diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysDictServiceImpl.java b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysDictServiceImpl.java index 95649e80..ccb30527 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysDictServiceImpl.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysDictServiceImpl.java @@ -1,16 +1,17 @@ package vip.mate.system.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; import vip.mate.core.common.api.Result; -import vip.mate.core.common.util.StringUtil; import vip.mate.core.database.entity.Search; +import vip.mate.system.entity.SysBlacklist; import vip.mate.system.entity.SysDict; import vip.mate.system.mapper.SysDictMapper; import vip.mate.system.service.ISysDictService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; import java.util.List; @@ -43,13 +44,13 @@ public Result> getList(String code) { @Override public IPage listPage(Page page, Search search) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if (StringUtil.isNotBlank(search.getStartDate())) { + if (StrUtil.isNotBlank(search.getStartDate())) { queryWrapper.between(SysDict::getCreateTime, search.getStartDate(), search.getEndDate()); } - if (StringUtil.isNotBlank(search.getKeyword())) { - queryWrapper.like(SysDict::getId,search.getKeyword()); - queryWrapper.or(); - queryWrapper.like(SysDict::getCode,search.getKeyword()); + if (StrUtil.isNotBlank(search.getKeyword())) { + queryWrapper.and(i -> i + .or().like(SysDict::getId, search.getKeyword()) + .or().like(SysDict::getCode, search.getKeyword())); } queryWrapper.eq(SysDict::getParentId, 0); return this.page(page, queryWrapper); diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysLogServiceImpl.java b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysLogServiceImpl.java index 856febe8..140d81b4 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysLogServiceImpl.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysLogServiceImpl.java @@ -1,11 +1,11 @@ package vip.mate.system.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; -import vip.mate.core.common.util.StringUtil; import vip.mate.core.database.entity.Search; import vip.mate.core.database.util.PageUtil; import vip.mate.system.entity.SysLog; @@ -25,12 +25,15 @@ public class SysLogServiceImpl extends ServiceImpl impleme @Override public IPage listPage(Search search) { - boolean isKeyword = StringUtil.isNotBlank(search.getKeyword()); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); // 查询开始日期和结束日期 - queryWrapper.between(StringUtil.isNotBlank(search.getStartDate()), SysLog::getCreateTime, search.getStartDate(), search.getEndDate()); + queryWrapper.between(StrUtil.isNotBlank(search.getStartDate()), SysLog::getCreateTime, search.getStartDate(), search.getEndDate()); // 关键词查询 - queryWrapper.like(isKeyword, SysLog::getTitle, search.getKeyword()).or(isKeyword).like(isKeyword, SysLog::getTraceId, search.getKeyword()); + if (StrUtil.isNotBlank(search.getKeyword())) { + queryWrapper.and(i -> i + .or().like(SysLog::getTitle, search.getKeyword()) + .or().like(SysLog::getTraceId, search.getKeyword())); + } // 字段排序 queryWrapper.orderByDesc(SysLog::getCreateTime); return this.baseMapper.selectPage(PageUtil.getPage(search), queryWrapper); diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysMenuServiceImpl.java b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysMenuServiceImpl.java index 11ca537c..8c35a8b5 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysMenuServiceImpl.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysMenuServiceImpl.java @@ -1,11 +1,11 @@ package vip.mate.system.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; -import vip.mate.core.common.util.StringUtil; import vip.mate.core.database.entity.Search; import vip.mate.core.web.tree.ForestNodeMerger; import vip.mate.core.web.util.CollectionUtil; @@ -43,10 +43,10 @@ public List routes(String roleId) { @Override public List searchList(Search search) { LambdaQueryWrapper lambda = Wrappers.query().lambda(); - if (StringUtil.isNotBlank(search.getStartDate())) { + if (StrUtil.isNotBlank(search.getStartDate())) { lambda.between(SysMenu::getCreateTime, search.getStartDate(), search.getEndDate()); } - if (StringUtil.isNotBlank(search.getKeyword())) { + if (StrUtil.isNotBlank(search.getKeyword())) { lambda.like(SysMenu::getName, search.getKeyword()).or().like(SysMenu::getId, search.getKeyword()); } lambda.orderByAsc(SysMenu::getSort); @@ -60,14 +60,16 @@ public boolean saveAll(SysMenu sysMenu) { @Override public boolean status(String ids, String status) { + if (StrUtil.isNotBlank(ids)) { + return false; + } Collection collection = CollectionUtil.stringToCollection(ids); - - for (Object id: collection){ + for (Object id : collection) { SysMenu sysMenu = this.baseMapper.selectById(CollectionUtil.objectToLong(id, 0L)); sysMenu.setStatus(status); this.baseMapper.updateById(sysMenu); } - return true; + return Boolean.TRUE; } @Override @@ -82,4 +84,14 @@ public List export() { return sysMenuPOI; }).collect(Collectors.toList()); } + + @Override + public boolean checkChild(Long id) { + return this.getMenuChild(id) > 0 ? Boolean.TRUE : Boolean.FALSE; + } + + @Override + public int getMenuChild(Long menuId) { + return this.baseMapper.selectCount(Wrappers.lambdaQuery().select(SysMenu::getId).eq(SysMenu::getParentId, menuId)); + } } diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysRoleDepartServiceImpl.java b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysRoleDepartServiceImpl.java index d6183cdc..2b84424f 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysRoleDepartServiceImpl.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysRoleDepartServiceImpl.java @@ -16,16 +16,16 @@ */ package vip.mate.system.service.impl; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; import vip.mate.core.database.entity.Search; +import vip.mate.core.database.util.PageUtil; import vip.mate.system.entity.SysRoleDepart; import vip.mate.system.mapper.SysRoleDepartMapper; import vip.mate.system.service.ISysRoleDepartService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import vip.mate.core.common.util.StringUtil; -import vip.mate.core.database.util.PageUtil; /** *

@@ -41,10 +41,10 @@ public class SysRoleDepartServiceImpl extends ServiceImpl listPage(Search search) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if (StringUtil.isNotBlank(search.getStartDate())) { + if (StrUtil.isNotBlank(search.getStartDate())) { queryWrapper.between(SysRoleDepart::getCreateTime, search.getStartDate(), search.getEndDate()); } - if (StringUtil.isNotBlank(search.getKeyword())) { + if (StrUtil.isNotBlank(search.getKeyword())) { queryWrapper.like(SysRoleDepart::getId, search.getKeyword()); } queryWrapper.orderByDesc(SysRoleDepart::getCreateTime); diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysRoleServiceImpl.java b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysRoleServiceImpl.java index b8bf482a..00738dab 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysRoleServiceImpl.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysRoleServiceImpl.java @@ -1,19 +1,28 @@ package vip.mate.system.service.impl; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import vip.mate.core.database.entity.Search; +import vip.mate.core.database.util.PageUtil; import vip.mate.system.entity.SysRole; import vip.mate.system.entity.SysRolePermission; +import vip.mate.system.entity.SysUser; import vip.mate.system.mapper.SysRoleMapper; import vip.mate.system.poi.SysRolePOI; import vip.mate.system.service.ISysRolePermissionService; import vip.mate.system.service.ISysRoleService; +import vip.mate.system.service.ISysUserService; import vip.mate.system.vo.SysRoleVO; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -29,52 +38,115 @@ @Service public class SysRoleServiceImpl extends ServiceImpl implements ISysRoleService { - @Autowired - private ISysRolePermissionService sysRolePermissionService; + private final static String NULL = "null"; + @Autowired + private ISysRolePermissionService sysRolePermissionService; - @Override - public List tree() { - return this.baseMapper.tree(); - } + @Autowired + private ISysUserService sysUserService; - @Override - public List listSearch(Map search) { - String keyword = String.valueOf(search.get("keyword")); - String startDate = String.valueOf(search.get("startDate")); - String endDate = String.valueOf(search.get("endDate")); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - if (StrUtil.isNotBlank(startDate) && !startDate.equals("null")) { - lambdaQueryWrapper.between(SysRole::getCreateTime, startDate, endDate); - } - if (StrUtil.isNotBlank(keyword) && !keyword.equals("null")) { - lambdaQueryWrapper.like(SysRole::getRoleName, keyword); - lambdaQueryWrapper.or(); - lambdaQueryWrapper.like(SysRole::getId, keyword); - } - return this.baseMapper.selectList(lambdaQueryWrapper); - } + @Override + public List tree() { + return this.baseMapper.tree(); + } + + @Override + public IPage listPage(Search search) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (StrUtil.isNotBlank(search.getStartDate()) && !search.getStartDate().equals(NULL)) { + lambdaQueryWrapper.between(SysRole::getCreateTime, search.getStartDate(), search.getEndDate()); + } + if (StrUtil.isNotEmpty(search.getKeyword())) { + lambdaQueryWrapper.and(i -> i + .or().like(SysRole::getRoleName, search.getKeyword()) + .or().like(SysRole::getId, search.getKeyword())); + } + IPage sysRolePage = this.baseMapper.selectPage(PageUtil.getPage(search), lambdaQueryWrapper); + List records = sysRolePage.getRecords(); + // 将权限列表添加到分页列表中 + List collect = records.stream().map(sysRole -> sysRole.setMenu(this.getPermission(sysRole.getId().toString()))) + .collect(Collectors.toList()); + // 用新的List赋值分页对象 + sysRolePage.setRecords(collect); + return sysRolePage; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean set(SysRole sysRole) { + this.saveOrUpdate(sysRole); + if (ObjectUtil.isNotEmpty(sysRole.getMenu())) { + List collect = sysRole.getMenu().stream().map(s -> { + SysRolePermission sysRolePermission = new SysRolePermission(); + sysRolePermission.setMenuId(Long.valueOf(s)); + sysRolePermission.setRoleId(sysRole.getId()); + return sysRolePermission; + }).collect(Collectors.toList()); + // 根据角色ID删除所有菜单值 + sysRolePermissionService.remove(Wrappers.lambdaQuery().eq(SysRolePermission::getRoleId, sysRole.getId())); + // 重新写入角色对应的权限值 + sysRolePermissionService.saveBatch(collect); + } + return Boolean.TRUE; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean batchDeleteByIds(String ids) { + String[] idArray = null; + if (StrUtil.isNotBlank(ids)) { + idArray = ids.split(","); + Arrays.stream(idArray).forEach(s -> { + // 根据roleId清理掉此角色下面的所有菜单信息 + sysRolePermissionService.remove(Wrappers.lambdaQuery().eq(SysRolePermission::getRoleId, s)); + // 根据roleId清理掉用户里的角色信息,需要下次重新授权 + sysUserService.update(Wrappers.lambdaUpdate().set(SysUser::getRoleId, 0).eq(SysUser::getRoleId, s)); + this.removeById(s); + }); + } + return Boolean.TRUE; + } + + @Override + public List listSearch(Map search) { + String keyword = String.valueOf(search.get("keyword")); + String startDate = String.valueOf(search.get("startDate")); + String endDate = String.valueOf(search.get("endDate")); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (StrUtil.isNotBlank(startDate) && !startDate.equals(NULL)) { + lambdaQueryWrapper.between(SysRole::getCreateTime, startDate, endDate); + } + if (StrUtil.isNotEmpty(keyword) && !keyword.equals(NULL)) { + lambdaQueryWrapper.and(i -> i + .or().like(SysRole::getRoleName, keyword) + .or().like(SysRole::getId, keyword)); + } + return this.baseMapper.selectList(lambdaQueryWrapper); + } + + @Override + public List getPermission(String id) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SysRolePermission::getRoleId, id); + List sysRolePermissions = sysRolePermissionService.list(lambdaQueryWrapper); + List list = sysRolePermissions.stream().map(sysRolePermission -> { + String menuId = sysRolePermission.getMenuId().toString(); + return menuId; + }).collect(Collectors.toList()); + return list; + } + + @Override + public List export() { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysRole::getIsDeleted, 0); + List sysRoles = this.baseMapper.selectList(queryWrapper); + return sysRoles.stream().map(sysRole -> { + SysRolePOI sysRolePOI = new SysRolePOI(); + BeanUtils.copyProperties(sysRole, sysRolePOI); + return sysRolePOI; + }).collect(Collectors.toList()); + } - @Override - public List getPermission(String id) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(SysRolePermission::getRoleId, id); - List sysRolePermissions = sysRolePermissionService.list(lambdaQueryWrapper); - List list = sysRolePermissions.stream().map(sysRolePermission -> { - String menuId = sysRolePermission.getMenuId().toString(); - return menuId; - }).collect(Collectors.toList()); - return list; - } - @Override - public List export() { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SysRole::getIsDeleted, 0); - List sysRoles = this.baseMapper.selectList(queryWrapper); - return sysRoles.stream().map(sysRole -> { - SysRolePOI sysRolePOI = new SysRolePOI(); - BeanUtils.copyProperties(sysRole, sysRolePOI); - return sysRolePOI; - }).collect(Collectors.toList()); - } } diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysRouteServiceImpl.java b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysRouteServiceImpl.java index ef366310..b4f4fc9f 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysRouteServiceImpl.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysRouteServiceImpl.java @@ -16,12 +16,12 @@ */ package vip.mate.system.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; -import vip.mate.core.common.util.StringUtil; import vip.mate.core.database.entity.Search; import vip.mate.core.database.util.PageUtil; import vip.mate.system.entity.SysRoute; @@ -45,8 +45,8 @@ public class SysRouteServiceImpl extends ServiceImpl i @Override public IPage listPage(Search search) { LambdaQueryWrapper queryWrapper = Wrappers.query().lambda() - .between(StringUtil.isNotBlank(search.getStartDate()), SysRoute::getCreateTime, search.getStartDate(), search.getEndDate()); - boolean isKeyword = StringUtil.isNotBlank(search.getKeyword()); + .between(StrUtil.isNotBlank(search.getStartDate()), SysRoute::getCreateTime, search.getStartDate(), search.getEndDate()); + boolean isKeyword = StrUtil.isNotBlank(search.getKeyword()); queryWrapper.like(isKeyword, SysRoute::getServiceId, search.getKeyword()) .or(isKeyword) .like(isKeyword, SysRoute::getName, search.getKeyword()); diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysUserServiceImpl.java b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysUserServiceImpl.java index ce356b61..8431d146 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysUserServiceImpl.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/service/impl/SysUserServiceImpl.java @@ -1,16 +1,16 @@ package vip.mate.system.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import vip.mate.core.common.constant.SystemConstant; import vip.mate.core.common.exception.BaseException; -import vip.mate.core.common.util.StringUtil; import vip.mate.core.database.entity.Search; import vip.mate.core.database.enums.OrderTypeEnum; import vip.mate.core.database.util.PageUtil; @@ -40,73 +40,82 @@ @AllArgsConstructor public class SysUserServiceImpl extends ServiceImpl implements ISysUserService { - private final ISysDepartService sysDepartService; - private final ISysDictService dictService; - private final ISysRoleService sysRoleService; - - @Override - public boolean status(String ids, String status) { - Collection collection = CollectionUtil.stringToCollection(ids); - - if (ObjectUtils.isEmpty(collection)) { - throw new BaseException("传入的ID值不能为空!"); - } - - collection.forEach(id -> { - SysUser sysUser = this.baseMapper.selectById(CollectionUtil.objectToLong(id, 0L)); - sysUser.setStatus(status); - this.baseMapper.updateById(sysUser); - }); - return true; - } - - @Override - public IPage listPage(Search search) { - - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.between(StringUtil.isNotBlank(search.getStartDate()), SysUser::getCreateTime, search.getStartDate(), search.getEndDate()); - boolean isKeyword = StringUtil.isNotBlank(search.getKeyword()); - queryWrapper.like(isKeyword, SysUser::getName, search.getKeyword()).or(isKeyword) - .like(isKeyword, SysUser::getId, search.getKeyword()); - - // 根据排序字段进行排序 - if (StringUtil.isNotBlank(search.getProp())) { - if (OrderTypeEnum.ASC.getValue().equalsIgnoreCase(search.getOrder())) { - queryWrapper.orderByAsc(SysUser::getId); - } else { - queryWrapper.orderByDesc(SysUser::getId); - } - } - // 分页查询 - IPage sysUserPage = this.baseMapper.selectPage(PageUtil.getPage(search), queryWrapper); - - // 拼装转换为中文字段数据 - List sysUserList = sysUserPage.getRecords().stream().peek(sysUser -> { - sysUser.setDepartName(sysDepartService.getById(sysUser.getDepartId()).getName()); - sysUser.setStatusName(dictService.getValue("status", sysUser.getStatus()).getData()); - sysUser.setRoleName(sysRoleService.getById(sysUser.getRoleId()).getRoleName()); - }).collect(Collectors.toList()); - sysUserPage.setRecords(sysUserList); - return sysUserPage; - } - - @Override - public SysUser getOneIgnoreTenant(SysUser sysUser) { - return this.baseMapper.selectOneIgnoreTenant(sysUser); - } - - @Override - public List export() { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SysUser::getIsDeleted, "0"); - List sysUsers = this.baseMapper.selectList(queryWrapper); - return sysUsers.stream().map(sysUser -> { - SysUserPOI sysUserPOI = new SysUserPOI(); - BeanUtils.copyProperties(sysUser, sysUserPOI); - sysUserPOI.setDepartName(sysDepartService.getById(sysUser.getDepartId()).getName()); - sysUserPOI.setRoleName(sysRoleService.getById(sysUser.getRoleId()).getRoleName()); - sysUserPOI.setStatusName(dictService.getValue("status", sysUser.getStatus()).getData()); - return sysUserPOI; - }).collect(Collectors.toList()); - } + + + private final ISysDepartService sysDepartService; + private final ISysDictService dictService; + private final ISysRoleService sysRoleService; + + @Override + public boolean status(String ids, String status) { + Collection collection = CollectionUtil.stringToCollection(ids); + + if (ObjectUtils.isEmpty(collection)) { + throw new BaseException("传入的ID值不能为空!"); + } + + collection.forEach(id -> { + SysUser sysUser = this.baseMapper.selectById(CollectionUtil.objectToLong(id, 0L)); + sysUser.setStatus(status); + this.baseMapper.updateById(sysUser); + }); + return true; + } + + @Override + public IPage listPage(Search search, SysUser user) { + + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.between(StrUtil.isNotBlank(search.getStartDate()), SysUser::getCreateTime, search.getStartDate(), search.getEndDate()); + boolean isKeyword = StrUtil.isNotBlank(search.getKeyword()); + queryWrapper.like(isKeyword, SysUser::getName, search.getKeyword()).or(isKeyword) + .like(isKeyword, SysUser::getId, search.getKeyword()); + + queryWrapper.eq(user.getDepartId() != null, SysUser::getDepartId, user.getDepartId()); + + // 根据排序字段进行排序 + if (StrUtil.isNotBlank(search.getProp())) { + if (OrderTypeEnum.ASC.getValue().equalsIgnoreCase(search.getOrder())) { + queryWrapper.orderByAsc(SysUser::getId); + } else { + queryWrapper.orderByDesc(SysUser::getId); + } + } + // 分页查询 + IPage sysUserPage = this.baseMapper.selectPage(PageUtil.getPage(search), queryWrapper); + + // 拼装转换为中文字段数据 + List sysUserList = sysUserPage.getRecords().stream().peek(sysUser -> { + sysUser.setDepartName(sysDepartService.getById(sysUser.getDepartId()).getName()); + sysUser.setStatusName(dictService.getValue("status", sysUser.getStatus()).getData()); + // 判断如果roleId为0,则赋值一个默认值 + if (SystemConstant.ROLE_DEFAULT_ID.equals(sysUser.getRoleId())) { + sysUser.setRoleName(SystemConstant.ROLE_DEFAULT_VALUE); + } else { + sysUser.setRoleName(sysRoleService.getById(sysUser.getRoleId()).getRoleName()); + } + }).collect(Collectors.toList()); + sysUserPage.setRecords(sysUserList); + return sysUserPage; + } + + @Override + public SysUser getOneIgnoreTenant(SysUser sysUser) { + return this.baseMapper.selectOneIgnoreTenant(sysUser); + } + + @Override + public List export() { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysUser::getIsDeleted, "0"); + List sysUsers = this.baseMapper.selectList(queryWrapper); + return sysUsers.stream().map(sysUser -> { + SysUserPOI sysUserPoi = new SysUserPOI(); + BeanUtils.copyProperties(sysUser, sysUserPoi); + sysUserPoi.setDepartName(sysDepartService.getById(sysUser.getDepartId()).getName()); + sysUserPoi.setRoleName(sysRoleService.getById(sysUser.getRoleId()).getRoleName()); + sysUserPoi.setStatusName(dictService.getValue("status", sysUser.getStatus()).getData()); + return sysUserPoi; + }).collect(Collectors.toList()); + } } diff --git a/mate-platform/mate-system/src/main/java/vip/mate/system/util/TreeUtil.java b/mate-platform/mate-system/src/main/java/vip/mate/system/util/TreeUtil.java index 8e972f4e..012b8215 100644 --- a/mate-platform/mate-system/src/main/java/vip/mate/system/util/TreeUtil.java +++ b/mate-platform/mate-system/src/main/java/vip/mate/system/util/TreeUtil.java @@ -31,7 +31,6 @@ public static List buildTree(List sysMenus) { MenuMeta meta = new MenuMeta(); meta.setIcon(sysMenu.getIcon()); meta.setTitle(sysMenu.getName()); - tree.setComponent(sysMenu.getPath()); if (sysMenu.getParentId() == -1L) { tree.setComponent("Layout"); tree.setRedirect("noRedirect"); diff --git a/mate-platform/pom.xml b/mate-platform/pom.xml index 946528c6..c48967d0 100644 --- a/mate-platform/pom.xml +++ b/mate-platform/pom.xml @@ -5,7 +5,7 @@ matecloud vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-support/mate-admin/pom.xml b/mate-support/mate-admin/pom.xml index 3f3944d9..f70ca25e 100644 --- a/mate-support/mate-admin/pom.xml +++ b/mate-support/mate-admin/pom.xml @@ -5,7 +5,7 @@ mate-support vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-support/mate-admin/src/main/resources/application-dev.yml b/mate-support/mate-admin/src/main/resources/application-dev.yml new file mode 100644 index 00000000..94cad5eb --- /dev/null +++ b/mate-support/mate-admin/src/main/resources/application-dev.yml @@ -0,0 +1,31 @@ +server: + port: 30001 +spring: + application: + name: @artifactId@ + boot: + admin: + ui: + title: @artifactId@-server + client: + instance: + metadata: + tags: + environment: local + notify: + dingding: + enabled: false + token: AA***************BB + security: + user: + name: admin + password: matecloud + +management: + endpoints: + web: + exposure: + include: "*" + endpoint: + health: + show-details: always \ No newline at end of file diff --git a/mate-support/mate-code/pom.xml b/mate-support/mate-code/pom.xml index 9f320224..aeaff22d 100644 --- a/mate-support/mate-code/pom.xml +++ b/mate-support/mate-code/pom.xml @@ -5,7 +5,7 @@ mate-support vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-support/mate-job-admin/pom.xml b/mate-support/mate-job-admin/pom.xml index a22692c6..e823968e 100644 --- a/mate-support/mate-job-admin/pom.xml +++ b/mate-support/mate-job-admin/pom.xml @@ -5,7 +5,7 @@ mate-support vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-support/mate-job/pom.xml b/mate-support/mate-job/pom.xml index a3369e2c..cbefb5b0 100644 --- a/mate-support/mate-job/pom.xml +++ b/mate-support/mate-job/pom.xml @@ -5,7 +5,7 @@ mate-support vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-support/pom.xml b/mate-support/pom.xml index 8c95818a..bacb0d51 100644 --- a/mate-support/pom.xml +++ b/mate-support/pom.xml @@ -5,7 +5,7 @@ matecloud vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-uaa/pom.xml b/mate-uaa/pom.xml index bc44b17a..9f5eb626 100644 --- a/mate-uaa/pom.xml +++ b/mate-uaa/pom.xml @@ -5,7 +5,7 @@ matecloud vip.mate - 3.8.8 + 4.0.9 4.0.0 diff --git a/mate-uaa/src/main/java/vip/mate/uaa/controller/AuthController.java b/mate-uaa/src/main/java/vip/mate/uaa/controller/AuthController.java index dfcd8e54..b41c97e2 100644 --- a/mate-uaa/src/main/java/vip/mate/uaa/controller/AuthController.java +++ b/mate-uaa/src/main/java/vip/mate/uaa/controller/AuthController.java @@ -84,11 +84,13 @@ public Result getUser(HttpServletRequest request) { } Map data = new HashMap<>(7); - data.put("userName", loginUser.getAccount()); + data.put("username", loginUser.getAccount()); data.put("avatar", userInfo.getSysUser().getAvatar()); data.put("roleId", userInfo.getSysUser().getRoleId()); data.put("departId", userInfo.getSysUser().getDepartId()); data.put("tenantId", userInfo.getSysUser().getTenantId()); + data.put("realName", userInfo.getSysUser().getRealName()); + data.put("nickName", userInfo.getSysUser().getName()); List stringList = sysRolePermissionProvider.getMenuIdByRoleId(String.valueOf(userInfo.getSysUser().getRoleId())); data.put("permissions", stringList); // 存入redis,以用于mate-starter-auth的PreAuthAspect查询权限使用 diff --git a/mate-uaa/src/main/java/vip/mate/uaa/controller/OauthController.java b/mate-uaa/src/main/java/vip/mate/uaa/controller/OauthController.java index 473a5f99..a2b7f371 100644 --- a/mate-uaa/src/main/java/vip/mate/uaa/controller/OauthController.java +++ b/mate-uaa/src/main/java/vip/mate/uaa/controller/OauthController.java @@ -47,7 +47,7 @@ public Result getAccessToken(Principal principal, @RequestParam Map postAccessToken(Principal principal, @RequestParam Map parameters) throws HttpRequestMethodNotSupportedException { + public Result postAccessToken(Principal principal, @RequestBody Map parameters) throws HttpRequestMethodNotSupportedException { return custom(tokenEndpoint.postAccessToken(principal, parameters).getBody()); } diff --git a/mate-uaa/src/main/java/vip/mate/uaa/service/impl/UserDetailsServiceImpl.java b/mate-uaa/src/main/java/vip/mate/uaa/service/impl/UserDetailsServiceImpl.java index ca303469..f96e366d 100644 --- a/mate-uaa/src/main/java/vip/mate/uaa/service/impl/UserDetailsServiceImpl.java +++ b/mate-uaa/src/main/java/vip/mate/uaa/service/impl/UserDetailsServiceImpl.java @@ -81,7 +81,7 @@ private UserDetails getUserDetails(UserInfo userInfo) { SysUser user = userInfo.getSysUser(); log.info("用户名:{}", userInfo.getSysUser().getAccount()); Collection authorities - = AuthorityUtils.createAuthorityList(Convert.toStrArray(userInfo.getPermissions())); + = AuthorityUtils.createAuthorityList(Convert.toStrArray(userInfo.getRoleIds())); log.info("authorities: {}", authorities); return new MateUser(user.getId(), userInfo.getType(), user.getDepartId(), user.getRoleId(), user.getTelephone(), user.getAvatar(), user.getTenantId(), userInfo.getUserName(), user.getPassword(), ENABLE.equals(user.getStatus()), diff --git a/pom.xml b/pom.xml index eb0de0ff..490ecae5 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ vip.mate matecloud pom - 3.8.8 + 4.0.9 matecloud MateCloud - 基于Spring Cloud Alibaba实现的微服务架构 @@ -24,12 +24,12 @@ - 3.8.8 + 4.0.9 1.8 3.8.1 UTF-8 UTF-8 - 2.5.2 + 2.5.4 UTF-8 3.6.2