From f52bad5e8c6aa177189627312e42ae1808b4abd7 Mon Sep 17 00:00:00 2001 From: lgcareer <18610854716@163.com> Date: Mon, 18 May 2020 11:05:12 +0800 Subject: [PATCH] fix #2449:It's should successful to cancel authorize a resource of a user if all the online process definitions created by this user didn't use this resource. (#2725) --- .../dolphinscheduler/api/service/UsersService.java | 2 +- .../dao/mapper/ProcessDefinitionMapper.java | 7 +++++++ .../dao/mapper/ProcessDefinitionMapper.xml | 6 ++++++ .../dao/mapper/ProcessDefinitionMapperTest.java | 9 +++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java index 220b4fc4d..f2bf4475c 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java @@ -511,7 +511,7 @@ public class UsersService extends BaseService { if (CollectionUtils.isNotEmpty(oldAuthorizedResIds)) { // get all resource id of process definitions those is released - List> list = processDefinitionMapper.listResources(); + List> list = processDefinitionMapper.listResourcesByUser(userId); Map> resourceProcessMap = ResourceProcessDefinitionUtils.getResourceProcessDefinitionMap(list); Set resourceIdSet = resourceProcessMap.keySet(); diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.java index b75bb58b7..4df93f2e9 100644 --- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.java +++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.java @@ -102,4 +102,11 @@ public interface ProcessDefinitionMapper extends BaseMapper { */ @MapKey("id") List> listResources(); + + /** + * list all resource ids by user id + * @return resource ids list + */ + @MapKey("id") + List> listResourcesByUser(@Param("userId") Integer userId); } diff --git a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml index 0cabf800c..3e538a23e 100644 --- a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml +++ b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml @@ -96,4 +96,10 @@ FROM t_ds_process_definition WHERE release_state = 1 and resource_ids is not null and resource_ids != '' + + \ No newline at end of file diff --git a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapperTest.java b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapperTest.java index e92ec5454..7f0cf977d 100644 --- a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapperTest.java +++ b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapperTest.java @@ -242,4 +242,13 @@ public class ProcessDefinitionMapperTest { List> maps = processDefinitionMapper.listResources(); Assert.assertNotNull(maps); } + + @Test + public void listResourcesByUserTest(){ + ProcessDefinition processDefinition = insertOne(); + processDefinition.setResourceIds("3,5"); + processDefinition.setReleaseState(ReleaseState.ONLINE); + List> maps = processDefinitionMapper.listResourcesByUser(processDefinition.getUserId()); + Assert.assertNotNull(maps); + } } \ No newline at end of file -- GitLab