You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by jo...@apache.org on 2020/05/18 03:05:19 UTC

[incubator-dolphinscheduler] branch dev-1.3.0 updated: 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)

This is an automated email from the ASF dual-hosted git repository.

journey pushed a commit to branch dev-1.3.0
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git


The following commit(s) were added to refs/heads/dev-1.3.0 by this push:
     new f52bad5  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)
f52bad5 is described below

commit f52bad5e8c6aa177189627312e42ae1808b4abd7
Author: lgcareer <18...@163.com>
AuthorDate: Mon May 18 11:05:12 2020 +0800

    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)
---
 .../org/apache/dolphinscheduler/api/service/UsersService.java    | 2 +-
 .../dolphinscheduler/dao/mapper/ProcessDefinitionMapper.java     | 7 +++++++
 .../dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml      | 6 ++++++
 .../dolphinscheduler/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 220b4fc..f2bf447 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<Map<String, Object>> list = processDefinitionMapper.listResources();
+            List<Map<String, Object>> list = processDefinitionMapper.listResourcesByUser(userId);
             Map<Integer, Set<Integer>> resourceProcessMap = ResourceProcessDefinitionUtils.getResourceProcessDefinitionMap(list);
             Set<Integer> 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 b75bb58..4df93f2 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<ProcessDefinition> {
      */
     @MapKey("id")
     List<Map<String, Object>> listResources();
+
+    /**
+     * list all resource ids by user id
+     * @return resource ids list
+     */
+    @MapKey("id")
+    List<Map<String, Object>> 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 0cabf80..3e538a2 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 != ''
     </select>
+
+    <select id="listResourcesByUser" resultType="java.util.HashMap">
+        SELECT id,resource_ids
+        FROM t_ds_process_definition
+        WHERE user_id = #{userId} and release_state = 1 and resource_ids is not null and resource_ids != ''
+    </select>
 </mapper>
\ 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 e92ec54..7f0cf97 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<Map<String, Object>> maps = processDefinitionMapper.listResources();
         Assert.assertNotNull(maps);
     }
+
+    @Test
+    public void listResourcesByUserTest(){
+        ProcessDefinition processDefinition = insertOne();
+        processDefinition.setResourceIds("3,5");
+        processDefinition.setReleaseState(ReleaseState.ONLINE);
+        List<Map<String, Object>> maps = processDefinitionMapper.listResourcesByUser(processDefinition.getUserId());
+        Assert.assertNotNull(maps);
+    }
 }
\ No newline at end of file