From 0170b22f98154c32345e8c08a5af9a3cfddb8528 Mon Sep 17 00:00:00 2001
From: byteblogs168 <598092184@qq.com>
Date: Wed, 22 Nov 2023 18:43:06 +0800
Subject: [PATCH] =?UTF-8?q?feat:=202.5.0=201.=20namespace=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E7=94=A8=E6=88=B7=E9=A1=B5=E9=9D=A2=E5=BC=80=E5=8F=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 9 +-
doc/sql/easy_retry_mysql.sql | 39 +++---
.../persistence/po/GroupConfig.java | 2 +-
.../persistence/po/SystemUserPermission.java | 2 +
.../web/controller/GroupConfigController.java | 6 +-
.../web/controller/NamespaceController.java | 6 +-
.../web/model/request/NamespaceRequestVO.java | 5 +
.../model/request/SystemUserRequestVO.java | 2 +-
.../request/UserPermissionRequestVO.java | 15 +++
.../model/response/SystemUserResponseVO.java | 3 +
.../web/service/GroupConfigService.java | 2 +-
.../server/web/service/NamespaceService.java | 5 +-
.../service/impl/GroupConfigServiceImpl.java | 12 +-
.../service/impl/NamespaceServiceImpl.java | 23 ++--
.../service/impl/SystemUserServiceImpl.java | 115 +++++++++++-------
frontend/src/api/manage.js | 16 ++-
frontend/src/store/modules/app.js | 17 ++-
frontend/src/store/mutation-types.js | 1 +
frontend/src/views/user/UserForm.vue | 42 +++++--
19 files changed, 215 insertions(+), 107 deletions(-)
create mode 100644 easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/UserPermissionRequestVO.java
diff --git a/README.md b/README.md
index 53e19bbf2..23aad7779 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,14 @@
- 🔥🔥🔥 致力提高分布式业务系统一致性的分布式重试平台
+ 🔥🔥🔥 灵活,可靠和快速的分布式任务重试和分布式任务调度平台
+
+
+
+
+> ✅️ 可重放,可管控、为提高分布式业务系统一致性的分布式任务重试平台
+> ✅️ 支持秒级、可中断、可编排的高性能分布式任务调度平台
+
# 🌸 简介
diff --git a/doc/sql/easy_retry_mysql.sql b/doc/sql/easy_retry_mysql.sql
index 8f20440bc..1a3c5ed5b 100644
--- a/doc/sql/easy_retry_mysql.sql
+++ b/doc/sql/easy_retry_mysql.sql
@@ -7,26 +7,27 @@ USE
CREATE TABLE `namespace`
(
- `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
- `name` varchar(64) NOT NULL COMMENT '名称',
- `unique_id` varchar(64) NOT NULL COMMENT '唯一id',
- `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
- `deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '逻辑删除 1、删除',
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `name` varchar(64) NOT NULL COMMENT '名称',
+ `unique_id` varchar(64) NOT NULL COMMENT '唯一id',
+ `description` varchar(256) NOT NULL DEFAULT '' COMMENT '描述',
+ `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
+ `deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '逻辑删除 1、删除',
PRIMARY KEY (`id`),
- KEY `idx_name` (`name`),
+ KEY `idx_name` (`name`),
UNIQUE KEY `uk_unique_id` (`unique_id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='命名空间';
INSERT INTO `namespace` (`id`, `name`, `unique_id`, `create_dt`, `update_dt`, `deleted`)
-VALUES (1, 'default', '764d604ec6fc45f68cd92514c40e9e1a', now(), now(), 0);
+VALUES (1, 'Default', '764d604ec6fc45f68cd92514c40e9e1a', now(), now(), 0);
CREATE TABLE `group_config`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
- `namespace_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '命名空间id',
+ `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`group_name` varchar(64) NOT NULL DEFAULT '' COMMENT '组名称',
`description` varchar(256) NOT NULL DEFAULT '' COMMENT '组描述',
`group_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '组状态 0、未启用 1、启用',
@@ -46,8 +47,8 @@ CREATE TABLE `group_config`
CREATE TABLE `notify_config`
(
- `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
- `namespace_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '命名空间id',
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
`scene_name` varchar(64) NOT NULL COMMENT '场景名称',
`notify_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '通知状态 0、未启用 1、启用',
@@ -70,7 +71,7 @@ CREATE TABLE `notify_config`
CREATE TABLE `retry_dead_letter_0`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
- `namespace_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '命名空间id',
+ `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
`scene_name` varchar(64) NOT NULL COMMENT '场景名称',
@@ -95,7 +96,7 @@ CREATE TABLE `retry_dead_letter_0`
CREATE TABLE `retry_task_0`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
- `namespace_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '命名空间id',
+ `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
`scene_name` varchar(64) NOT NULL COMMENT '场景名称',
@@ -125,7 +126,7 @@ CREATE TABLE `retry_task_0`
CREATE TABLE `retry_task_log`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
- `namespace_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '命名空间id',
+ `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
`scene_name` varchar(64) NOT NULL COMMENT '场景名称',
@@ -168,7 +169,7 @@ CREATE TABLE `retry_task_log_message`
CREATE TABLE `scene_config`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
- `namespace_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '命名空间id',
+ `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`scene_name` varchar(64) NOT NULL COMMENT '场景名称',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
`scene_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '组状态 0、未启用 1、启用',
@@ -246,7 +247,7 @@ CREATE TABLE `system_user_permission`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
- `namespace_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '命名空间id',
+ `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`system_user_id` bigint(20) NOT NULL COMMENT '系统用户id',
`create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
@@ -271,7 +272,7 @@ CREATE TABLE `sequence_alloc`
CREATE TABLE `job`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
- `namespace_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '命名空间id',
+ `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
`job_name` varchar(64) NOT NULL COMMENT '名称',
`args_str` text DEFAULT NULL COMMENT '执行方法参数',
@@ -307,7 +308,7 @@ CREATE TABLE `job`
CREATE TABLE `job_log_message`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
- `namespace_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '命名空间id',
+ `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
`job_id` bigint(20) NOT NULL COMMENT '任务信息id',
`task_batch_id` bigint(20) NOT NULL COMMENT '任务批次id',
@@ -350,7 +351,7 @@ CREATE TABLE `job_task`
CREATE TABLE `job_task_batch`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
- `namespace_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '命名空间id',
+ `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
`job_id` bigint(20) NOT NULL COMMENT '任务id',
`task_batch_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '任务批次状态 0、失败 1、成功',
diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/GroupConfig.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/GroupConfig.java
index 53f6901ce..5b37bc815 100644
--- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/GroupConfig.java
+++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/GroupConfig.java
@@ -14,7 +14,7 @@ public class GroupConfig implements Serializable {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
- private Long namespaceId;
+ private String namespaceId;
private String groupName;
diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/SystemUserPermission.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/SystemUserPermission.java
index 2b07343f0..20ce64104 100644
--- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/SystemUserPermission.java
+++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/SystemUserPermission.java
@@ -25,6 +25,8 @@ public class SystemUserPermission implements Serializable {
private String groupName;
+ private String namespaceId;
+
private Long systemUserId;
private LocalDateTime createDt;
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/GroupConfigController.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/GroupConfigController.java
index 6f5604f7f..d8d850b6a 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/GroupConfigController.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/GroupConfigController.java
@@ -68,9 +68,9 @@ public class GroupConfigController {
}
@LoginRequired
- @GetMapping("/all/group-name/list")
- public List getAllGroupNameList(@RequestParam("namespaceId") Long namespaceId) {
- return groupConfigService.getAllGroupNameList(namespaceId);
+ @PostMapping("/all/group-name/list")
+ public List getAllGroupNameList(@RequestBody List namespaceIds) {
+ return groupConfigService.getAllGroupNameList(namespaceIds);
}
@Deprecated
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/NamespaceController.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/NamespaceController.java
index 5d550a45c..2dc0e648d 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/NamespaceController.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/NamespaceController.java
@@ -45,8 +45,8 @@ public class NamespaceController {
return namespaceService.deleteNamespace(id);
}
-// @PutMapping
- public List getNamespaceByUserId(@LoginUser SystemUser systemUser) {
- return namespaceService.getNamespaceByUserId(systemUser);
+ @GetMapping("/all")
+ public List getAllNamespace() {
+ return namespaceService.getAllNamespace();
}
}
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NamespaceRequestVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NamespaceRequestVO.java
index c7162527f..19db29b2f 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NamespaceRequestVO.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NamespaceRequestVO.java
@@ -14,6 +14,11 @@ public class NamespaceRequestVO {
private Long id;
+ /**
+ * 命名空间唯一标识
+ */
+ String uniqueId;
+
/**
* 名称
*/
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/SystemUserRequestVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/SystemUserRequestVO.java
index 71d9f78a5..1d681d7c3 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/SystemUserRequestVO.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/SystemUserRequestVO.java
@@ -29,5 +29,5 @@ public class SystemUserRequestVO {
@NotNull(groups = {PutMapping.class, PostMapping.class})
private Integer role;
- private List groupNameList;
+ private List permissions;
}
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/UserPermissionRequestVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/UserPermissionRequestVO.java
new file mode 100644
index 000000000..63ca22644
--- /dev/null
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/UserPermissionRequestVO.java
@@ -0,0 +1,15 @@
+package com.aizuda.easy.retry.server.web.model.request;
+
+import lombok.Data;
+
+/**
+ * @author: xiaowoniu
+ * @date : 2023-11-22 09:15
+ * @since : 2.5.0
+ */
+@Data
+public class UserPermissionRequestVO {
+
+ private String groupName;
+ private String namespaceId;
+}
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/response/SystemUserResponseVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/response/SystemUserResponseVO.java
index 9012d2873..b032f5007 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/response/SystemUserResponseVO.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/response/SystemUserResponseVO.java
@@ -19,8 +19,11 @@ public class SystemUserResponseVO {
private Integer role;
+ @Deprecated
private List groupNameList;
+ private List namespaceIdList;
+
private String token;
private LocalDateTime createDt;
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/GroupConfigService.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/GroupConfigService.java
index fc3952df8..b7e42c9c2 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/GroupConfigService.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/GroupConfigService.java
@@ -23,5 +23,5 @@ public interface GroupConfigService {
GroupConfigResponseVO getGroupConfigByGroupName(String groupName);
- List getAllGroupNameList(final Long namespaceId);
+ List getAllGroupNameList(final List namespaceId);
}
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/NamespaceService.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/NamespaceService.java
index e817c3aac..7acbc1d60 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/NamespaceService.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/NamespaceService.java
@@ -21,7 +21,8 @@ public interface NamespaceService {
PageResult> getNamespacePage(NamespaceQueryVO queryVO);
- List getNamespaceByUserId(SystemUser systemUser);
-
Boolean deleteNamespace(Long id);
+
+ List getAllNamespace();
+
}
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/GroupConfigServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/GroupConfigServiceImpl.java
index b0fee7a11..60fd4873b 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/GroupConfigServiceImpl.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/GroupConfigServiceImpl.java
@@ -236,14 +236,14 @@ public class GroupConfigServiceImpl implements GroupConfigService {
}
@Override
- public List getAllGroupNameList(final Long namespaceId) {
+ public List getAllGroupNameList(final List namespaceId) {
ConfigAccess groupConfigAccess = accessTemplate.getGroupConfigAccess();
- return groupConfigAccess.list(new LambdaQueryWrapper()
- .eq(GroupConfig::getNamespaceId, namespaceId)
- .select(GroupConfig::getGroupName)).stream()
- .map(GroupConfig::getGroupName)
- .collect(Collectors.toList());
+ List groupConfigs = groupConfigAccess.list(new LambdaQueryWrapper()
+ .in(GroupConfig::getNamespaceId, namespaceId)
+ .select(GroupConfig::getGroupName, GroupConfig::getNamespaceId)).stream()
+ .collect(Collectors.toList());
+ return GroupConfigResponseVOConverter.INSTANCE.toGroupConfigResponseVO(groupConfigs);
}
}
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/NamespaceServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/NamespaceServiceImpl.java
index 3f0f3dae5..59c61a564 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/NamespaceServiceImpl.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/NamespaceServiceImpl.java
@@ -37,7 +37,9 @@ public class NamespaceServiceImpl implements NamespaceService {
public Boolean saveNamespace(final NamespaceRequestVO namespaceRequestVO) {
Namespace namespace = new Namespace();
namespace.setName(namespaceRequestVO.getName());
- namespace.setUniqueId(IdUtil.simpleUUID());
+ if (StrUtil.isBlank(namespaceRequestVO.getUniqueId())) {
+ namespace.setUniqueId(IdUtil.simpleUUID());
+ }
return 1 == namespaceMapper.insert(namespace);
}
@@ -59,22 +61,27 @@ public class NamespaceServiceImpl implements NamespaceService {
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
if (StrUtil.isNotBlank(queryVO.getName())) {
- queryWrapper.like(Namespace::getName,queryVO.getName() + "%");
+ queryWrapper.like(Namespace::getName, queryVO.getName() + "%");
}
queryWrapper.eq(Namespace::getDeleted, StatusEnum.NO);
queryWrapper.orderByDesc(Namespace::getId);
PageDTO selectPage = namespaceMapper.selectPage(pageDTO, queryWrapper);
- return new PageResult<>(pageDTO, NamespaceResponseVOConverter.INSTANCE.toNamespaceResponseVOs(selectPage.getRecords()));
- }
-
- @Override
- public List getNamespaceByUserId(final SystemUser systemUser) {
- return null;
+ return new PageResult<>(pageDTO,
+ NamespaceResponseVOConverter.INSTANCE.toNamespaceResponseVOs(selectPage.getRecords()));
}
@Override
public Boolean deleteNamespace(Long id) {
return 1 == namespaceMapper.deleteById(id);
}
+
+ @Override
+ public List getAllNamespace() {
+ List namespaces = namespaceMapper.selectList(
+ new LambdaQueryWrapper()
+ .select(Namespace::getName, Namespace::getUniqueId)
+ );
+ return NamespaceResponseVOConverter.INSTANCE.toNamespaceResponseVOs(namespaces);
+ }
}
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/SystemUserServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/SystemUserServiceImpl.java
index 30bd34474..b847bc66d 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/SystemUserServiceImpl.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/SystemUserServiceImpl.java
@@ -5,8 +5,12 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import com.aizuda.easy.retry.server.common.config.SystemProperties;
import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException;
+import com.aizuda.easy.retry.server.web.model.request.UserPermissionRequestVO;
+import com.aizuda.easy.retry.server.web.service.convert.NamespaceResponseVOConverter;
+import com.aizuda.easy.retry.template.datasource.persistence.mapper.NamespaceMapper;
import com.aizuda.easy.retry.template.datasource.persistence.mapper.SystemUserMapper;
import com.aizuda.easy.retry.template.datasource.persistence.mapper.SystemUserPermissionMapper;
+import com.aizuda.easy.retry.template.datasource.persistence.po.Namespace;
import com.aizuda.easy.retry.template.datasource.persistence.po.SystemUser;
import com.aizuda.easy.retry.template.datasource.persistence.po.SystemUserPermission;
import com.aizuda.easy.retry.server.web.service.SystemUserService;
@@ -49,12 +53,15 @@ public class SystemUserServiceImpl implements SystemUserService {
@Autowired
private SystemUserPermissionMapper systemUserPermissionMapper;
@Autowired
+ private NamespaceMapper namespaceMapper;
+ @Autowired
private SystemProperties systemProperties;
@Override
public SystemUserResponseVO login(SystemUserRequestVO requestVO) {
- SystemUser systemUser = systemUserMapper.selectOne(new LambdaQueryWrapper().eq(SystemUser::getUsername, requestVO.getUsername()));
+ SystemUser systemUser = systemUserMapper.selectOne(
+ new LambdaQueryWrapper().eq(SystemUser::getUsername, requestVO.getUsername()));
if (Objects.isNull(systemUser)) {
throw new EasyRetryServerException("用户名或密码错误");
}
@@ -69,32 +76,36 @@ public class SystemUserServiceImpl implements SystemUserService {
systemUserResponseVO.setToken(token);
systemUserResponseVO.setMode(systemProperties.getMode().name());
- if (RoleEnum.ADMIN.getRoleId().equals(systemUser.getRole())) {
- return systemUserResponseVO;
- }
-
- List systemUserPermissions = systemUserPermissionMapper.selectList(new LambdaQueryWrapper()
- .eq(SystemUserPermission::getSystemUserId, systemUser.getId()));
- systemUserResponseVO.setGroupNameList(systemUserPermissions.stream()
- .map(SystemUserPermission::getGroupName).collect(Collectors.toList()));
+ getPermission(systemUser, systemUserResponseVO);
return systemUserResponseVO;
}
+ private void getPermission(final SystemUser systemUser, final SystemUserResponseVO systemUserResponseVO) {
+
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.select(Namespace::getId, Namespace::getUniqueId, Namespace::getName);
+ if (RoleEnum.USER.getRoleId().equals(systemUser.getRole())) {
+ List systemUserPermissions = systemUserPermissionMapper.selectList(
+ new LambdaQueryWrapper()
+ .select(SystemUserPermission::getNamespaceId)
+ .eq(SystemUserPermission::getSystemUserId, systemUser.getId())
+ .groupBy(SystemUserPermission::getNamespaceId));
+ queryWrapper.in(Namespace::getId, systemUserPermissions.stream()
+ .map(SystemUserPermission::getNamespaceId).collect(Collectors.toList()));
+ }
+
+ List namespaces = namespaceMapper.selectList(queryWrapper);
+ systemUserResponseVO.setNamespaceIdList(
+ NamespaceResponseVOConverter.INSTANCE.toNamespaceResponseVOs(namespaces));
+ }
+
@Override
public SystemUserResponseVO getUserInfo(SystemUser systemUser) {
SystemUserResponseVO systemUserResponseVO = SystemUserResponseVOConverter.INSTANCE.convert(systemUser);
systemUserResponseVO.setMode(systemProperties.getMode().name());
- if (RoleEnum.ADMIN.getRoleId().equals(systemUser.getRole())) {
- return systemUserResponseVO;
- }
-
- List systemUserPermissions = systemUserPermissionMapper.selectList(new LambdaQueryWrapper()
- .eq(SystemUserPermission::getSystemUserId, systemUser.getId()));
- systemUserResponseVO.setGroupNameList(systemUserPermissions.stream()
- .map(SystemUserPermission::getGroupName).collect(Collectors.toList()));
-
+ getPermission(systemUser, systemUserResponseVO);
return systemUserResponseVO;
}
@@ -102,7 +113,8 @@ public class SystemUserServiceImpl implements SystemUserService {
@Override
@Transactional
public void addUser(SystemUserRequestVO requestVO) {
- long count = systemUserMapper.selectCount(new LambdaQueryWrapper().eq(SystemUser::getUsername, requestVO.getUsername()));
+ long count = systemUserMapper.selectCount(
+ new LambdaQueryWrapper().eq(SystemUser::getUsername, requestVO.getUsername()));
if (count > 0) {
throw new EasyRetryServerException("该用户已存在");
}
@@ -112,19 +124,21 @@ public class SystemUserServiceImpl implements SystemUserService {
systemUser.setPassword(SecureUtil.sha256(requestVO.getPassword()));
systemUser.setRole(requestVO.getRole());
- Assert.isTrue(1 == systemUserMapper.insert(systemUser), () -> new EasyRetryServerException("新增用户失败"));
+ Assert.isTrue(1 == systemUserMapper.insert(systemUser), () -> new EasyRetryServerException("新增用户失败"));
// 只添加为普通用户添加权限
- List groupNameList = requestVO.getGroupNameList();
+ List groupNameList = requestVO.getPermissions();
if (CollectionUtils.isEmpty(groupNameList) || RoleEnum.ADMIN.getRoleId().equals(requestVO.getRole())) {
return;
}
- for (String groupName : groupNameList) {
+ for (UserPermissionRequestVO permission : groupNameList) {
SystemUserPermission systemUserPermission = new SystemUserPermission();
systemUserPermission.setSystemUserId(systemUser.getId());
- systemUserPermission.setGroupName(groupName);
- Assert.isTrue(1 == systemUserPermissionMapper.insert(systemUserPermission), () -> new EasyRetryServerException("新增用户权限失败"));
+ systemUserPermission.setGroupName(permission.getGroupName());
+ systemUserPermission.setNamespaceId(permission.getNamespaceId());
+ Assert.isTrue(1 == systemUserPermissionMapper.insert(systemUserPermission),
+ () -> new EasyRetryServerException("新增用户权限失败"));
}
}
@@ -132,13 +146,15 @@ public class SystemUserServiceImpl implements SystemUserService {
@Override
@Transactional
public void update(SystemUserRequestVO requestVO) {
- SystemUser systemUser = systemUserMapper.selectOne(new LambdaQueryWrapper().eq(SystemUser::getId, requestVO.getId()));
+ SystemUser systemUser = systemUserMapper.selectOne(
+ new LambdaQueryWrapper().eq(SystemUser::getId, requestVO.getId()));
if (Objects.isNull(systemUser)) {
throw new EasyRetryServerException("该用户不存在");
}
if (!systemUser.getUsername().equals(requestVO.getUsername())) {
- long count = systemUserMapper.selectCount(new LambdaQueryWrapper().eq(SystemUser::getUsername, requestVO.getUsername()));
+ long count = systemUserMapper.selectCount(
+ new LambdaQueryWrapper().eq(SystemUser::getUsername, requestVO.getUsername()));
if (count > 0) {
throw new EasyRetryServerException("该用户已存在");
}
@@ -151,22 +167,24 @@ public class SystemUserServiceImpl implements SystemUserService {
systemUser.setRole(requestVO.getRole());
- Assert.isTrue(1 == systemUserMapper.updateById(systemUser), () -> new EasyRetryServerException("更新用户失败"));
+ Assert.isTrue(1 == systemUserMapper.updateById(systemUser), () -> new EasyRetryServerException("更新用户失败"));
// 只添加为普通用户添加权限
- List groupNameList = requestVO.getGroupNameList();
- if (CollectionUtils.isEmpty(groupNameList) || RoleEnum.ADMIN.getRoleId().equals(requestVO.getRole())) {
+ List permissions = requestVO.getPermissions();
+ if (CollectionUtils.isEmpty(permissions) || RoleEnum.ADMIN.getRoleId().equals(requestVO.getRole())) {
return;
}
systemUserPermissionMapper.delete(new LambdaQueryWrapper()
- .eq(SystemUserPermission::getSystemUserId, systemUser.getId()));
+ .eq(SystemUserPermission::getSystemUserId, systemUser.getId()));
- for (String groupName : groupNameList) {
+ for (UserPermissionRequestVO permission : permissions) {
SystemUserPermission systemUserPermission = new SystemUserPermission();
systemUserPermission.setSystemUserId(systemUser.getId());
- systemUserPermission.setGroupName(groupName);
- Assert.isTrue(1 == systemUserPermissionMapper.insert(systemUserPermission), () -> new EasyRetryServerException("更新用户权限失败"));
+ systemUserPermission.setGroupName(permission.getGroupName());
+ systemUserPermission.setNamespaceId(permission.getNamespaceId());
+ Assert.isTrue(1 == systemUserPermissionMapper.insert(systemUserPermission),
+ () -> new EasyRetryServerException("更新用户权限失败"));
}
}
@@ -180,28 +198,31 @@ public class SystemUserServiceImpl implements SystemUserService {
systemUserLambdaQueryWrapper.like(SystemUser::getUsername, "%" + queryVO.getUsername() + "%");
}
- userPageDTO = systemUserMapper.selectPage(userPageDTO, systemUserLambdaQueryWrapper.orderByDesc(SystemUser::getId));
+ userPageDTO = systemUserMapper.selectPage(userPageDTO,
+ systemUserLambdaQueryWrapper.orderByDesc(SystemUser::getId));
- List userResponseVOList = SystemUserResponseVOConverter.INSTANCE.batchConvert(userPageDTO.getRecords());
+ List userResponseVOList = SystemUserResponseVOConverter.INSTANCE.batchConvert(
+ userPageDTO.getRecords());
userResponseVOList.stream()
- .filter(systemUserResponseVO -> systemUserResponseVO.getRole().equals(RoleEnum.USER.getRoleId()))
- .forEach(systemUserResponseVO -> {
- List systemUserPermissionList = systemUserPermissionMapper.selectList(
- new LambdaQueryWrapper()
- .select(SystemUserPermission::getGroupName)
- .eq(SystemUserPermission::getSystemUserId, systemUserResponseVO.getId()));
+ .filter(systemUserResponseVO -> systemUserResponseVO.getRole().equals(RoleEnum.USER.getRoleId()))
+ .forEach(systemUserResponseVO -> {
+ List systemUserPermissionList = systemUserPermissionMapper.selectList(
+ new LambdaQueryWrapper()
+ .select(SystemUserPermission::getGroupName)
+ .eq(SystemUserPermission::getSystemUserId, systemUserResponseVO.getId()));
- systemUserResponseVO.setGroupNameList(systemUserPermissionList.stream()
- .map(SystemUserPermission::getGroupName).collect(Collectors.toList()));
- });
+ systemUserResponseVO.setGroupNameList(systemUserPermissionList.stream()
+ .map(SystemUserPermission::getGroupName).collect(Collectors.toList()));
+ });
return new PageResult<>(userPageDTO, userResponseVOList);
}
@Override
public SystemUserResponseVO getSystemUserByUserName(String username) {
- SystemUser systemUser = systemUserMapper.selectOne(new LambdaQueryWrapper().eq(SystemUser::getUsername, username));
+ SystemUser systemUser = systemUserMapper.selectOne(
+ new LambdaQueryWrapper().eq(SystemUser::getUsername, username));
if (Objects.isNull(systemUser)) {
throw new EasyRetryServerException("用户不存在");
}
@@ -220,7 +241,7 @@ public class SystemUserServiceImpl implements SystemUserService {
private String getToken(SystemUser systemUser) {
String sign = systemUser.getPassword();
return JWT.create().withExpiresAt(new Date(System.currentTimeMillis() + EXPIRE_TIME))
- .withAudience(JsonUtil.toJsonString(SystemUserResponseVOConverter.INSTANCE.convert(systemUser)))
- .sign(Algorithm.HMAC256(sign));
+ .withAudience(JsonUtil.toJsonString(SystemUserResponseVOConverter.INSTANCE.convert(systemUser)))
+ .sign(Algorithm.HMAC256(sign));
}
}
diff --git a/frontend/src/api/manage.js b/frontend/src/api/manage.js
index 7ab1c6edb..5b2811af5 100644
--- a/frontend/src/api/manage.js
+++ b/frontend/src/api/manage.js
@@ -50,11 +50,19 @@ const api = {
addNamespace: '/namespace',
updateNamespace: '/namespace',
namespaceList: '/namespace/list',
- delNamespace: '/namespace/'
+ delNamespace: '/namespace/',
+ allNamespace: '/namespace/all'
}
export default api
+export function getAllNamespace () {
+ return request({
+ url: api.allNamespace,
+ method: 'get'
+ })
+}
+
export function delNamespace (id) {
return request({
url: api.delNamespace + id,
@@ -215,11 +223,11 @@ export function getGroupConfigForPage (parameter) {
})
}
-export function getAllGroupNameList (parameter) {
+export function getAllGroupNameList (data) {
return request({
url: api.allGroupNameList,
- method: 'get',
- params: parameter
+ method: 'post',
+ data
})
}
diff --git a/frontend/src/store/modules/app.js b/frontend/src/store/modules/app.js
index a3ec7613d..8aa75db4c 100644
--- a/frontend/src/store/modules/app.js
+++ b/frontend/src/store/modules/app.js
@@ -12,7 +12,7 @@ import {
TOGGLE_WEAK,
TOGGLE_MULTI_TAB,
// i18n
- APP_LANGUAGE
+ APP_LANGUAGE, APP_NAMESPACE
} from '@/store/mutation-types'
import { loadLanguageAsync } from '@/locales'
@@ -29,6 +29,7 @@ const app = {
color: '',
weak: false,
multiTab: true,
+ namespace: '',
lang: 'zh-CN',
_antLocale: {}
},
@@ -80,6 +81,10 @@ const app = {
[TOGGLE_MULTI_TAB]: (state, bool) => {
storage.set(TOGGLE_MULTI_TAB, bool)
state.multiTab = bool
+ },
+ [APP_NAMESPACE]: (state, namespace) => {
+ storage.set(APP_NAMESPACE, namespace)
+ state.namespace = namespace
}
},
actions: {
@@ -92,6 +97,16 @@ const app = {
reject(e)
})
})
+ },
+ setNamespace ({ commit }, namespaceId) {
+ return new Promise((resolve, reject) => {
+ commit(APP_NAMESPACE, namespaceId)
+ // loadLanguageAsync(lang).then(() => {
+ // resolve()
+ // }).catch((e) => {
+ // reject(e)
+ // })
+ })
}
}
}
diff --git a/frontend/src/store/mutation-types.js b/frontend/src/store/mutation-types.js
index 4439479f3..e0a9a487a 100644
--- a/frontend/src/store/mutation-types.js
+++ b/frontend/src/store/mutation-types.js
@@ -12,6 +12,7 @@ export const TOGGLE_COLOR = 'color'
export const TOGGLE_WEAK = 'weak'
export const TOGGLE_MULTI_TAB = 'multi_tab'
export const APP_LANGUAGE = 'app_language'
+export const APP_NAMESPACE = 'app_namespace'
export const CONTENT_WIDTH_TYPE = {
Fluid: 'Fluid',
diff --git a/frontend/src/views/user/UserForm.vue b/frontend/src/views/user/UserForm.vue
index 2e8f99f19..45b9f3fc2 100644
--- a/frontend/src/views/user/UserForm.vue
+++ b/frontend/src/views/user/UserForm.vue
@@ -38,19 +38,35 @@
+ handleNamespacesIdChange(value)"
+ v-decorator="[
+ 'namespacesIds',
+ {rules: [{ required: true, message: '请分配命名空间'}]}
+ ]">
+
+ {{ item.name }} ({{ item.uniqueId }})
+
+
+
+
-
- {{ item }}
+
+ {{ item.name }} ({{ item.namespaceId }})
@@ -69,7 +85,7 @@