diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/config/EasyRetryProperties.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/config/EasyRetryProperties.java
index 383a139a5..37792db48 100644
--- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/config/EasyRetryProperties.java
+++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/config/EasyRetryProperties.java
@@ -24,7 +24,8 @@ import java.util.Objects;
public class EasyRetryProperties {
/**
- * 服务端对应的group
+ * 命名空间ID
+ * 若不填则默认为 SystemConstants::DEFAULT_NAMESPACE
*/
private String namespace;
diff --git a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/AbstractRetryStrategies.java b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/AbstractRetryStrategies.java
index 87c1c7a36..4dd29be4f 100644
--- a/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/AbstractRetryStrategies.java
+++ b/easy-retry-client/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/strategy/AbstractRetryStrategies.java
@@ -41,7 +41,7 @@ import java.util.function.Consumer;
public abstract class AbstractRetryStrategies implements RetryStrategy {
private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
private static String retryErrorMoreThresholdTextMessageFormatter =
- "{}环境 重试期间发生非预期异常 \n" +
+ "{}环境 重试组件异常 \n" +
"> IP:{} \n" +
"> 空间ID:{} \n" +
"> 名称:{} \n" +
diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/dataobject/JobBatchQueryDO.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/dataobject/JobBatchQueryDO.java
index 42369d41a..7d47624b9 100644
--- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/dataobject/JobBatchQueryDO.java
+++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/dataobject/JobBatchQueryDO.java
@@ -2,6 +2,8 @@ package com.aizuda.easy.retry.template.datasource.persistence.dataobject;
import lombok.Data;
+import java.util.List;
+
/**
* @author www.byteblogs.com
* @date 2023-10-15 23:03:01
@@ -10,7 +12,7 @@ import lombok.Data;
@Data
public class JobBatchQueryDO {
- private String groupName;
+ private List groupNames;
private Integer taskBatchStatus;
private String jobName;
private Long jobId;
diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/dataobject/JobNotifyConfigQueryDO.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/dataobject/JobNotifyConfigQueryDO.java
index 4f8af07d1..6455c5e8b 100644
--- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/dataobject/JobNotifyConfigQueryDO.java
+++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/dataobject/JobNotifyConfigQueryDO.java
@@ -2,6 +2,8 @@ package com.aizuda.easy.retry.template.datasource.persistence.dataobject;
import lombok.Data;
+import java.util.List;
+
/**
* @author zuoJunLin
* @date 2023-12-02 23:03:01
@@ -10,7 +12,7 @@ import lombok.Data;
@Data
public class JobNotifyConfigQueryDO {
- private String groupName;
+ private List groupNames;
private Long jobId;
/**
diff --git a/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobNotifyConfigMapper.xml b/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobNotifyConfigMapper.xml
index 9fe0f18b5..5efeb6f1b 100644
--- a/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobNotifyConfigMapper.xml
+++ b/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobNotifyConfigMapper.xml
@@ -30,8 +30,11 @@
and a.job_id = #{queryDO.jobId}
-
- and a.group_name = #{queryDO.groupName}
+
+ and a.group_name IN
+
+ #{groupName}
+
order by a.id desc
diff --git a/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobSummaryMapper.xml b/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobSummaryMapper.xml
new file mode 100644
index 000000000..ebfee3b87
--- /dev/null
+++ b/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobSummaryMapper.xml
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO
+ job_summary (namespace_id, group_name, job_id, trigger_at,
+ success_num,fail_num,fail_reason,stop_num,stop_reason, cancel_num,cancel_reason)
+ VALUES
+
+ (
+ #{item.namespaceId},
+ #{item.groupName},
+ #{item.jobId},
+ #{item.triggerAt},
+ #{item.successNum},
+ #{item.failNum},
+ #{item.failReason},
+ #{item.stopNum},
+ #{item.stopReason},
+ #{item.cancelNum},
+ #{item.cancelReason}
+ )
+
+ ON DUPLICATE KEY UPDATE
+ success_num = values(`success_num`),
+ fail_num = values(`fail_num`),
+ fail_reason = values(`fail_reason`),
+ stop_num = values(`stop_num`),
+ stop_reason = values(`stop_reason`),
+ cancel_num = values(`cancel_num`),
+ cancel_reason = values(`cancel_reason`)
+
+
+
+
+
+
+
+
+
+
diff --git a/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobTaskBatchMapper.xml b/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobTaskBatchMapper.xml
index dbaf44106..b5f38ab1d 100644
--- a/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobTaskBatchMapper.xml
+++ b/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobTaskBatchMapper.xml
@@ -23,8 +23,11 @@
and a.job_id = #{queryDO.jobId}
-
- and a.group_name = #{queryDO.groupName}
+
+ and a.group_name IN
+
+ #{groupName}
+
and task_batch_status = #{queryDO.taskBatchStatus}
diff --git a/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/RetrySummaryMapper.xml b/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/RetrySummaryMapper.xml
new file mode 100644
index 000000000..b85f03ada
--- /dev/null
+++ b/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/RetrySummaryMapper.xml
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO
+ retry_summary (namespace_id, group_name, scene_name, trigger_at, running_num, finish_num, max_count_num,
+ suspend_num)
+ VALUES
+
+ (
+ #{item.namespaceId},
+ #{item.groupName},
+ #{item.sceneName},
+ #{item.triggerAt},
+ #{item.runningNum},
+ #{item.finishNum},
+ #{item.maxCountNum},
+ #{item.suspendNum}
+ )
+
+ ON DUPLICATE KEY UPDATE
+ running_num = values(`running_num`),
+ finish_num = values(`finish_num`),
+ max_count_num = values(`max_count_num`),
+ suspend_num = values(`suspend_num`)
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobNotifyConfigMapper.xml b/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobNotifyConfigMapper.xml
index 9fe0f18b5..5efeb6f1b 100644
--- a/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobNotifyConfigMapper.xml
+++ b/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobNotifyConfigMapper.xml
@@ -30,8 +30,11 @@
and a.job_id = #{queryDO.jobId}
-
- and a.group_name = #{queryDO.groupName}
+
+ and a.group_name IN
+
+ #{groupName}
+
order by a.id desc
diff --git a/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobTaskBatchMapper.xml b/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobTaskBatchMapper.xml
index 5467639ea..5c73d437c 100644
--- a/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobTaskBatchMapper.xml
+++ b/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobTaskBatchMapper.xml
@@ -23,8 +23,11 @@
and a.job_id = #{queryDO.jobId}
-
- and a.group_name = #{queryDO.groupName}
+
+ and a.group_name IN
+
+ #{groupName}
+
and task_batch_status = #{queryDO.taskBatchStatus}
diff --git a/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobNotifyConfigMapper.xml b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobNotifyConfigMapper.xml
index 77a2ed700..751e37b8e 100644
--- a/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobNotifyConfigMapper.xml
+++ b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobNotifyConfigMapper.xml
@@ -31,8 +31,11 @@
and a.job_id = #{queryDO.jobId}
-
- and a.group_name = #{queryDO.groupName}
+
+ and a.group_name IN
+
+ #{groupName}
+
order by a.id desc
diff --git a/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobSummaryMapper.xml b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobSummaryMapper.xml
new file mode 100644
index 000000000..8f76ea971
--- /dev/null
+++ b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobSummaryMapper.xml
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO
+ job_summary (namespace_id, group_name, job_id, trigger_at,
+ success_num,fail_num,fail_reason,stop_num,stop_reason, cancel_num,cancel_reason)
+ VALUES
+
+ (
+ #{item.namespaceId},
+ #{item.groupName},
+ #{item.jobId},
+ #{item.triggerAt},
+ #{item.successNum},
+ #{item.failNum},
+ #{item.failReason},
+ #{item.stopNum},
+ #{item.stopReason},
+ #{item.cancelNum},
+ #{item.cancelReason}
+ )
+
+ ON CONFLICT (job_id, trigger_at) DO UPDATE
+ SET success_num = EXCLUDED.success_num,
+ fail_num = EXCLUDED.fail_num,
+ fail_reason = EXCLUDED.fail_reason,
+ stop_num = EXCLUDED.stop_num,
+ stop_reason = EXCLUDED.stop_reason,
+ cancel_num = EXCLUDED.cancel_num,
+ cancel_reason = EXCLUDED.cancel_reason
+
+
+
+
+
+
+
+
+
+
diff --git a/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobTaskBatchMapper.xml b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobTaskBatchMapper.xml
index 8a9d4bf49..1364b0475 100644
--- a/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobTaskBatchMapper.xml
+++ b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobTaskBatchMapper.xml
@@ -23,8 +23,11 @@
and a.job_id = #{queryDO.jobId}
-
- and a.group_name = #{queryDO.groupName}
+
+ and a.group_name IN
+
+ #{groupName}
+
and task_batch_status = #{queryDO.taskBatchStatus}
diff --git a/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/RetrySummaryMapper.xml b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/RetrySummaryMapper.xml
new file mode 100644
index 000000000..303f1d043
--- /dev/null
+++ b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/RetrySummaryMapper.xml
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO
+ retry_summary (namespace_id, group_name, scene_name, trigger_at, running_num, finish_num, max_count_num,
+ suspend_num)
+ VALUES
+
+ (
+ #{item.namespaceId},
+ #{item.groupName},
+ #{item.sceneName},
+ #{item.triggerAt},
+ #{item.runningNum},
+ #{item.finishNum},
+ #{item.maxCountNum},
+ #{item.suspendNum}
+ )
+
+ ON CONFLICT (namespace_id, group_name, scene_name, trigger_at) DO UPDATE
+ SET running_num = EXCLUDED.running_num,
+ finish_num = EXCLUDED.finish_num,
+ max_count_num = EXCLUDED.max_count_num,
+ suspend_num = EXCLUDED.suspend_num
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/ServerNodeMapper.xml b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/ServerNodeMapper.xml
index 9c3ca252e..052d36318 100644
--- a/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/ServerNodeMapper.xml
+++ b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/ServerNodeMapper.xml
@@ -21,8 +21,12 @@
useGeneratedKeys="true" keyProperty="id">
INSERT INTO server_node (group_name, host_id, host_ip, host_port,
expire_at, node_type, ext_attrs, context_path, create_dt)
- VALUES (#{groupName}, #{hostId}, #{hostIp}, #{hostPort},
- #{expireAt}, #{nodeType}, #{extAttrs}, #{contextPath}, #{createDt})
+ VALUES
+
+ (#{item.namespaceId,jdbcType=VARCHAR}, #{item.groupName,jdbcType=VARCHAR}, #{item.hostId,jdbcType=VARCHAR}, #{item.hostIp,jdbcType=VARCHAR},
+ #{item.hostPort,jdbcType=INTEGER}, #{item.expireAt,jdbcType=TIMESTAMP}, #{item.nodeType,jdbcType=TINYINT},
+ #{item.extAttrs,jdbcType=VARCHAR}, #{item.contextPath,jdbcType=VARCHAR}, #{item.createDt,jdbcType=TIMESTAMP})
+
ON CONFLICT (host_id, host_ip) DO UPDATE SET expire_at = EXCLUDED.expire_at
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/interceptor/AuthenticationInterceptor.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/interceptor/AuthenticationInterceptor.java
index d5f05930e..ead16702f 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/interceptor/AuthenticationInterceptor.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/interceptor/AuthenticationInterceptor.java
@@ -6,8 +6,10 @@ import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException;
import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
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.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
@@ -26,7 +28,9 @@ import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
+import java.util.List;
import java.util.Objects;
+import java.util.stream.Collectors;
/**
* 系统登陆认证
@@ -44,6 +48,8 @@ public class AuthenticationInterceptor implements HandlerInterceptor {
private SystemUserMapper systemUserMapper;
@Autowired
private NamespaceMapper namespaceMapper;
+ @Autowired
+ private SystemUserPermissionMapper systemUserPermissionMapper;
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object object) throws Exception {
@@ -82,20 +88,31 @@ public class AuthenticationInterceptor implements HandlerInterceptor {
throw new EasyRetryServerException("登陆过期,请重新登陆");
}
- systemUser = systemUserMapper.selectOne(new LambdaQueryWrapper().eq(SystemUser::getUsername, systemUser.getUsername()));
+ systemUser = systemUserMapper.selectById(systemUser.getId());
if (Objects.isNull(systemUser)) {
- throw new EasyRetryServerException("{} 用户不存在", systemUser.getUsername());
+ throw new EasyRetryServerException("用户不存在");
}
Long count = namespaceMapper.selectCount(
- new LambdaQueryWrapper().eq(Namespace::getUniqueId, namespaceId));
- Assert.isTrue(count > 0, ()->new EasyRetryServerException("[{}] 命名空间不存在", namespaceId));
+ new LambdaQueryWrapper().eq(Namespace::getUniqueId, namespaceId));
+ Assert.isTrue(count > 0, () -> new EasyRetryServerException("[{}] 命名空间不存在", namespaceId));
UserSessionVO userSessionVO = new UserSessionVO();
userSessionVO.setId(systemUser.getId());
userSessionVO.setUsername(systemUser.getUsername());
userSessionVO.setRole(systemUser.getRole());
userSessionVO.setNamespaceId(namespaceId);
+ // 普通用户才获取权限
+ if (userSessionVO.isUser()) {
+ List systemUserPermissions = systemUserPermissionMapper.selectList(
+ new LambdaQueryWrapper()
+ .select(SystemUserPermission::getGroupName)
+ .eq(SystemUserPermission::getSystemUserId, systemUser.getId())
+ .eq(SystemUserPermission::getNamespaceId, namespaceId)
+ );
+ userSessionVO.setGroupNames(systemUserPermissions.stream().map(SystemUserPermission::getGroupName).collect(Collectors.toList()));
+ }
+
httpServletRequest.setAttribute("currentUser", userSessionVO);
// 验证 token
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/UserSessionVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/UserSessionVO.java
index e25559456..2bf34ffb1 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/UserSessionVO.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/UserSessionVO.java
@@ -1,7 +1,11 @@
package com.aizuda.easy.retry.server.web.model.request;
+import com.aizuda.easy.retry.server.web.annotation.RoleEnum;
import lombok.Data;
+import java.util.List;
+import java.util.Objects;
+
/**
* @author xiaowoniu
* @date 2023-11-22 22:42:26
@@ -18,4 +22,14 @@ public final class UserSessionVO {
private String namespaceId;
+ private List groupNames;
+
+ /**
+ * 是否是普通用户
+ */
+ public boolean isUser() {
+ return Objects.equals(this.role, RoleEnum.USER.getRoleId());
+ }
+
+
}
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 491e75242..32e0a9544 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
@@ -160,18 +160,24 @@ public class GroupConfigServiceImpl implements GroupConfigService {
@Override
public PageResult> getGroupConfigForPage(GroupConfigQueryVO queryVO) {
- LambdaQueryWrapper groupConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
- groupConfigLambdaQueryWrapper.eq(GroupConfig::getNamespaceId,
- UserSessionUtils.currentUserSession().getNamespaceId());
+ UserSessionVO userSessionVO = UserSessionUtils.currentUserSession();
+ String namespaceId = userSessionVO.getNamespaceId();
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(GroupConfig::getNamespaceId, namespaceId);
+
+ if (userSessionVO.isUser()) {
+ queryWrapper.in(GroupConfig::getGroupName, userSessionVO.getGroupNames());
+ }
+
if (StrUtil.isNotBlank(queryVO.getGroupName())) {
- groupConfigLambdaQueryWrapper.like(GroupConfig::getGroupName, queryVO.getGroupName() + "%");
+ queryWrapper.like(GroupConfig::getGroupName, queryVO.getGroupName() + "%");
}
ConfigAccess groupConfigAccess = accessTemplate.getGroupConfigAccess();
- groupConfigLambdaQueryWrapper.orderByDesc(GroupConfig::getId);
+ queryWrapper.orderByDesc(GroupConfig::getId);
PageDTO groupConfigPageDTO = groupConfigAccess.listPage(
- new PageDTO<>(queryVO.getPage(), queryVO.getSize()), groupConfigLambdaQueryWrapper);
+ new PageDTO<>(queryVO.getPage(), queryVO.getSize()), queryWrapper);
List records = groupConfigPageDTO.getRecords();
if (CollectionUtils.isEmpty(records)) {
return new PageResult<>(groupConfigPageDTO.getCurrent(), groupConfigPageDTO.getSize(),
@@ -289,10 +295,15 @@ public class GroupConfigServiceImpl implements GroupConfigService {
@Override
public List getAllGroupNameList() {
- ConfigAccess groupConfigAccess = accessTemplate.getGroupConfigAccess();
+ UserSessionVO userSessionVO = UserSessionUtils.currentUserSession();
+ if (userSessionVO.isUser()) {
+ return userSessionVO.getGroupNames();
+ }
+
+ ConfigAccess groupConfigAccess = accessTemplate.getGroupConfigAccess();
List groupConfigs = groupConfigAccess.list(new LambdaQueryWrapper()
- .in(GroupConfig::getNamespaceId, UserSessionUtils.currentUserSession().getNamespaceId())
+ .eq(GroupConfig::getNamespaceId, userSessionVO.getNamespaceId())
.select(GroupConfig::getGroupName))
.stream()
.collect(Collectors.toList());
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobBatchServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobBatchServiceImpl.java
index 9e795a39a..c985122dd 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobBatchServiceImpl.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobBatchServiceImpl.java
@@ -14,6 +14,7 @@ import com.aizuda.easy.retry.server.job.task.support.stop.JobTaskStopFactory;
import com.aizuda.easy.retry.server.job.task.support.stop.TaskStopJobContext;
import com.aizuda.easy.retry.server.web.model.base.PageResult;
import com.aizuda.easy.retry.server.web.model.request.JobBatchQueryVO;
+import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
import com.aizuda.easy.retry.server.web.model.response.JobBatchResponseVO;
import com.aizuda.easy.retry.server.web.service.JobBatchService;
import com.aizuda.easy.retry.server.web.service.convert.JobBatchResponseVOConverter;
@@ -26,9 +27,11 @@ import com.aizuda.easy.retry.template.datasource.persistence.po.Job;
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTaskBatch;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
+import com.google.common.collect.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
@@ -51,6 +54,21 @@ public class JobBatchServiceImpl implements JobBatchService {
PageDTO pageDTO = new PageDTO<>(queryVO.getPage(), queryVO.getSize());
+ UserSessionVO userSessionVO = UserSessionUtils.currentUserSession();
+ List groupNames = Lists.newArrayList();
+ if (userSessionVO.isUser()) {
+ groupNames = userSessionVO.getGroupNames();
+ }
+
+ if (StrUtil.isNotBlank(queryVO.getGroupName())) {
+ // 说明当前组不在用户配置的权限中
+ if (!CollectionUtils.isEmpty(groupNames) && !groupNames.contains(queryVO.getGroupName())) {
+ return new PageResult<>(pageDTO, Lists.newArrayList());
+ } else {
+ groupNames = Lists.newArrayList(queryVO.getGroupName());
+ }
+ }
+
JobBatchQueryDO jobBatchQueryDO = new JobBatchQueryDO();
if (StrUtil.isNotBlank(queryVO.getJobName())) {
jobBatchQueryDO.setJobName(queryVO.getJobName() + "%");
@@ -58,8 +76,8 @@ public class JobBatchServiceImpl implements JobBatchService {
jobBatchQueryDO.setJobId(queryVO.getJobId());
jobBatchQueryDO.setTaskBatchStatus(queryVO.getTaskBatchStatus());
- jobBatchQueryDO.setGroupName(queryVO.getGroupName());
- jobBatchQueryDO.setNamespaceId(UserSessionUtils.currentUserSession().getNamespaceId());
+ jobBatchQueryDO.setGroupNames(groupNames);
+ jobBatchQueryDO.setNamespaceId(userSessionVO.getNamespaceId());
List batchResponseDOList = jobTaskBatchMapper.selectJobBatchPageList(pageDTO, jobBatchQueryDO);
List batchResponseVOList = JobBatchResponseVOConverter.INSTANCE.toJobBatchResponseVOs(
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobNotifyConfigServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobNotifyConfigServiceImpl.java
index 106da7062..0813906f1 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobNotifyConfigServiceImpl.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobNotifyConfigServiceImpl.java
@@ -7,6 +7,7 @@ import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException;
import com.aizuda.easy.retry.server.web.model.base.PageResult;
import com.aizuda.easy.retry.server.web.model.request.JobNotifyConfigQueryVO;
import com.aizuda.easy.retry.server.web.model.request.JobNotifyConfigRequestVO;
+import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
import com.aizuda.easy.retry.server.web.model.response.JobNotifyConfigResponseVO;
import com.aizuda.easy.retry.server.web.service.JobNotifyConfigService;
import com.aizuda.easy.retry.server.web.service.convert.JobNotifyConfigConverter;
@@ -17,11 +18,14 @@ import com.aizuda.easy.retry.template.datasource.persistence.dataobject.JobBatch
import com.aizuda.easy.retry.template.datasource.persistence.dataobject.JobNotifyConfigQueryDO;
import com.aizuda.easy.retry.template.datasource.persistence.dataobject.JobNotifyConfigResponseDO;
import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobNotifyConfigMapper;
+import com.aizuda.easy.retry.template.datasource.persistence.po.Job;
import com.aizuda.easy.retry.template.datasource.persistence.po.JobNotifyConfig;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
+import com.google.common.collect.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime;
import java.util.List;
@@ -41,11 +45,25 @@ public class JobNotifyConfigServiceImpl implements JobNotifyConfigService {
@Override
public PageResult> getJobNotifyConfigList(JobNotifyConfigQueryVO queryVO) {
PageDTO pageDTO = new PageDTO<>();
+ UserSessionVO userSessionVO = UserSessionUtils.currentUserSession();
JobNotifyConfigQueryDO jobNotifyConfigQueryDO = new JobNotifyConfigQueryDO();
- jobNotifyConfigQueryDO.setNamespaceId(UserSessionUtils.currentUserSession().getNamespaceId());
- if (StrUtil.isNotBlank(queryVO.getGroupName())) {
- jobNotifyConfigQueryDO.setGroupName(queryVO.getGroupName());
+ jobNotifyConfigQueryDO.setNamespaceId(userSessionVO.getNamespaceId());
+
+ List groupNames = Lists.newArrayList();
+ if (userSessionVO.isUser()) {
+ groupNames = userSessionVO.getGroupNames();
}
+
+ if (StrUtil.isNotBlank(queryVO.getGroupName())) {
+ // 说明当前组不在用户配置的权限中
+ if (!CollectionUtils.isEmpty(groupNames) && !groupNames.contains(queryVO.getGroupName())) {
+ return new PageResult<>(pageDTO, Lists.newArrayList());
+ } else {
+ groupNames = Lists.newArrayList(queryVO.getGroupName());
+ }
+ }
+
+ jobNotifyConfigQueryDO.setGroupNames(groupNames);
if (Objects.nonNull(queryVO.getJobId())) {
jobNotifyConfigQueryDO.setJobId(queryVO.getJobId());
}
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java
index 7d0ca62c2..632ac8078 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java
@@ -19,12 +19,14 @@ import com.aizuda.easy.retry.server.web.model.base.PageResult;
import com.aizuda.easy.retry.server.web.model.request.JobQueryVO;
import com.aizuda.easy.retry.server.web.model.request.JobRequestVO;
import com.aizuda.easy.retry.server.web.model.request.JobUpdateJobStatusRequestVO;
+import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
import com.aizuda.easy.retry.server.web.model.response.JobResponseVO;
import com.aizuda.easy.retry.server.web.service.JobService;
import com.aizuda.easy.retry.server.web.service.convert.JobConverter;
import com.aizuda.easy.retry.server.web.service.convert.JobResponseVOConverter;
import com.aizuda.easy.retry.server.web.util.UserSessionUtils;
import com.aizuda.easy.retry.template.datasource.persistence.mapper.JobMapper;
+import com.aizuda.easy.retry.template.datasource.persistence.po.GroupConfig;
import com.aizuda.easy.retry.template.datasource.persistence.po.Job;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
@@ -58,10 +60,15 @@ public class JobServiceImpl implements JobService {
public PageResult> getJobPage(JobQueryVO queryVO) {
PageDTO pageDTO = new PageDTO<>(queryVO.getPage(), queryVO.getSize());
-
+ UserSessionVO userSessionVO = UserSessionUtils.currentUserSession();
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Job::getDeleted, StatusEnum.NO.getStatus());
- queryWrapper.eq(Job::getNamespaceId, UserSessionUtils.currentUserSession().getNamespaceId());
+ queryWrapper.eq(Job::getNamespaceId, userSessionVO.getNamespaceId());
+
+ if (userSessionVO.isUser()) {
+ queryWrapper.in(Job::getGroupName, userSessionVO.getGroupNames());
+ }
+
if (StrUtil.isNotBlank(queryVO.getGroupName())) {
queryWrapper.eq(Job::getGroupName, queryVO.getGroupName());
}
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/NotifyConfigServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/NotifyConfigServiceImpl.java
index c00e5c776..17a43da0b 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/NotifyConfigServiceImpl.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/NotifyConfigServiceImpl.java
@@ -7,6 +7,7 @@ import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException;
import com.aizuda.easy.retry.server.web.model.base.PageResult;
import com.aizuda.easy.retry.server.web.model.request.NotifyConfigQueryVO;
import com.aizuda.easy.retry.server.web.model.request.NotifyConfigRequestVO;
+import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
import com.aizuda.easy.retry.server.web.model.response.NotifyConfigResponseVO;
import com.aizuda.easy.retry.server.web.service.NotifyConfigService;
import com.aizuda.easy.retry.server.web.service.convert.NotifyConfigConverter;
@@ -14,6 +15,7 @@ import com.aizuda.easy.retry.server.web.service.convert.NotifyConfigResponseVOCo
import com.aizuda.easy.retry.server.web.util.UserSessionUtils;
import com.aizuda.easy.retry.template.datasource.access.AccessTemplate;
import com.aizuda.easy.retry.template.datasource.access.ConfigAccess;
+import com.aizuda.easy.retry.template.datasource.persistence.po.GroupConfig;
import com.aizuda.easy.retry.template.datasource.persistence.po.NotifyConfig;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
@@ -37,14 +39,22 @@ public class NotifyConfigServiceImpl implements NotifyConfigService {
public PageResult> getNotifyConfigList(NotifyConfigQueryVO queryVO) {
PageDTO pageDTO = new PageDTO<>();
+ UserSessionVO userSessionVO = UserSessionUtils.currentUserSession();
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(NotifyConfig::getNamespaceId, UserSessionUtils.currentUserSession().getNamespaceId());
+ queryWrapper.eq(NotifyConfig::getNamespaceId, userSessionVO.getNamespaceId());
+
+ if (userSessionVO.isUser()) {
+ queryWrapper.in(NotifyConfig::getGroupName, userSessionVO.getGroupNames());
+ }
+
if (StrUtil.isNotBlank(queryVO.getGroupName())) {
queryWrapper.eq(NotifyConfig::getGroupName, queryVO.getGroupName());
}
if (StrUtil.isNotBlank(queryVO.getSceneName())) {
queryWrapper.eq(NotifyConfig::getSceneName, queryVO.getSceneName());
}
+
+ queryWrapper.orderByDesc(NotifyConfig::getId);
List notifyConfigs = accessTemplate.getNotifyConfigAccess().listPage(pageDTO, queryWrapper).getRecords();
return new PageResult<>(pageDTO, NotifyConfigResponseVOConverter.INSTANCE.batchConvert(notifyConfigs));
}
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/RetryTaskLogServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/RetryTaskLogServiceImpl.java
index 01851d517..7a7103797 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/RetryTaskLogServiceImpl.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/RetryTaskLogServiceImpl.java
@@ -1,6 +1,7 @@
package com.aizuda.easy.retry.server.web.service.impl;
import cn.hutool.core.util.StrUtil;
+import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
import com.aizuda.easy.retry.server.web.util.UserSessionUtils;
import com.aizuda.easy.retry.template.datasource.persistence.mapper.RetryTaskLogMapper;
import com.aizuda.easy.retry.template.datasource.persistence.mapper.RetryTaskLogMessageMapper;
@@ -8,6 +9,7 @@ import com.aizuda.easy.retry.template.datasource.persistence.po.RetryTaskLog;
import com.aizuda.easy.retry.template.datasource.persistence.po.RetryTaskLogMessage;
import com.aizuda.easy.retry.server.web.model.request.RetryTaskLogMessageQueryVO;
import com.aizuda.easy.retry.server.web.model.response.RetryTaskLogMessageResponseVO;
+import com.aizuda.easy.retry.template.datasource.persistence.po.SceneConfig;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.aizuda.easy.retry.server.web.model.base.PageResult;
@@ -35,11 +37,16 @@ public class RetryTaskLogServiceImpl implements RetryTaskLogService {
@Override
public PageResult> getRetryTaskLogPage(RetryTaskLogQueryVO queryVO) {
- String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
+ UserSessionVO userSessionVO = UserSessionUtils.currentUserSession();
+ String namespaceId = userSessionVO.getNamespaceId();
PageDTO pageDTO = new PageDTO<>(queryVO.getPage(), queryVO.getSize());
LambdaQueryWrapper retryTaskLogLambdaQueryWrapper = new LambdaQueryWrapper<>();
retryTaskLogLambdaQueryWrapper.eq(RetryTaskLog::getNamespaceId, namespaceId);
+ if (userSessionVO.isUser()) {
+ retryTaskLogLambdaQueryWrapper.in(RetryTaskLog::getGroupName, userSessionVO.getGroupNames());
+ }
+
if (StrUtil.isNotBlank(queryVO.getGroupName())) {
retryTaskLogLambdaQueryWrapper.eq(RetryTaskLog::getGroupName, queryVO.getGroupName());
}
diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/SceneConfigServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/SceneConfigServiceImpl.java
index 0974c77fb..997fb919f 100644
--- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/SceneConfigServiceImpl.java
+++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/SceneConfigServiceImpl.java
@@ -9,6 +9,7 @@ import com.aizuda.easy.retry.server.common.strategy.WaitStrategies;
import com.aizuda.easy.retry.server.web.model.base.PageResult;
import com.aizuda.easy.retry.server.web.model.request.SceneConfigQueryVO;
import com.aizuda.easy.retry.server.web.model.request.SceneConfigRequestVO;
+import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
import com.aizuda.easy.retry.server.web.model.response.SceneConfigResponseVO;
import com.aizuda.easy.retry.server.web.service.SceneConfigService;
import com.aizuda.easy.retry.server.web.service.convert.SceneConfigConverter;
@@ -16,6 +17,7 @@ import com.aizuda.easy.retry.server.web.service.convert.SceneConfigResponseVOCon
import com.aizuda.easy.retry.server.web.util.UserSessionUtils;
import com.aizuda.easy.retry.template.datasource.access.AccessTemplate;
import com.aizuda.easy.retry.template.datasource.access.ConfigAccess;
+import com.aizuda.easy.retry.template.datasource.persistence.po.NotifyConfig;
import com.aizuda.easy.retry.template.datasource.persistence.po.SceneConfig;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -42,9 +44,15 @@ public class SceneConfigServiceImpl implements SceneConfigService {
public PageResult> getSceneConfigPageList(SceneConfigQueryVO queryVO) {
PageDTO pageDTO = new PageDTO<>(queryVO.getPage(), queryVO.getSize());
- String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
+ UserSessionVO userSessionVO = UserSessionUtils.currentUserSession();
+ String namespaceId = userSessionVO.getNamespaceId();
LambdaQueryWrapper sceneConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
sceneConfigLambdaQueryWrapper.eq(SceneConfig::getNamespaceId, namespaceId);
+
+ if (userSessionVO.isUser()) {
+ sceneConfigLambdaQueryWrapper.in(SceneConfig::getGroupName, userSessionVO.getGroupNames());
+ }
+
if (StrUtil.isNotBlank(queryVO.getGroupName())) {
sceneConfigLambdaQueryWrapper.eq(SceneConfig::getGroupName, queryVO.getGroupName().trim());
}
diff --git a/frontend/src/views/job/form/JobNotifyForm.vue b/frontend/src/views/job/form/JobNotifyForm.vue
index a6d41ef7a..6636e86c3 100644
--- a/frontend/src/views/job/form/JobNotifyForm.vue
+++ b/frontend/src/views/job/form/JobNotifyForm.vue
@@ -12,7 +12,8 @@
hidden
v-decorator="['id']" />
-
+
+ 通知场景
-
+
+ 通知类型
- 被@人手机号或钉钉号
+ 被@人手机号或钉钉号 
- 被@负责人用户id
+ 被@负责人用户id
-
$router.go(-1)" style="margin: -24px -1px 0">
+ $router.go(-1)" style="margin: -24px -1px 0">
@@ -12,7 +12,8 @@
hidden
v-decorator="['id']" />
-
+
+ 通知场景
-
+
+ 通知类型
- 被@人手机号或钉钉号
+ 被@人手机号或钉钉号
- 被@人用户id
+ 被@人用户id