This is an automated email from the ASF dual-hosted git repository.
kerwin pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 95ccc0c855 [Fix-9516] [Statistics] Statistics Manager shows data
should belongs to current user (#9515)
95ccc0c855 is described below
commit 95ccc0c85534c099ba0a71f50d3ea762e005417c
Author: WangJPLeo <[email protected]>
AuthorDate: Fri Apr 15 18:25:25 2022 +0800
[Fix-9516] [Statistics] Statistics Manager shows data should belongs to
current user (#9515)
---
.../dolphinscheduler/api/service/impl/DataAnalysisServiceImpl.java | 7 +++++--
.../dolphinscheduler/api/service/DataAnalysisServiceTest.java | 6 +++---
.../org/apache/dolphinscheduler/dao/mapper/ErrorCommandMapper.java | 2 ++
.../org/apache/dolphinscheduler/dao/mapper/CommandMapper.xml | 3 +++
.../org/apache/dolphinscheduler/dao/mapper/ErrorCommandMapper.xml | 3 +++
.../apache/dolphinscheduler/dao/mapper/ErrorCommandMapperTest.java | 2 ++
6 files changed, 18 insertions(+), 5 deletions(-)
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/DataAnalysisServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/DataAnalysisServiceImpl.java
index b4cf3f8ae6..6617207a99 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/DataAnalysisServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/DataAnalysisServiceImpl.java
@@ -233,13 +233,16 @@ public class DataAnalysisServiceImpl extends
BaseServiceImpl implements DataAnal
Date end = null;
Long[] projectCodeArray = getProjectCodesArrays(loginUser);
+ // admin can view all
+ int userId = loginUser.getUserType() == UserType.ADMIN_USER ? 0 :
loginUser.getId();
+
// count normal command state
- Map<CommandType, Integer> normalCountCommandCounts =
commandMapper.countCommandState(loginUser.getId(), start, end, projectCodeArray)
+ Map<CommandType, Integer> normalCountCommandCounts =
commandMapper.countCommandState(userId, start, end, projectCodeArray)
.stream()
.collect(Collectors.toMap(CommandCount::getCommandType,
CommandCount::getCount));
// count error command state
- Map<CommandType, Integer> errorCommandCounts =
errorCommandMapper.countCommandState(start, end, projectCodeArray)
+ Map<CommandType, Integer> errorCommandCounts =
errorCommandMapper.countCommandState(userId, start, end, projectCodeArray)
.stream()
.collect(Collectors.toMap(CommandCount::getCommandType,
CommandCount::getCount));
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/DataAnalysisServiceTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/DataAnalysisServiceTest.java
index 040221fb6c..bb6994f800 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/DataAnalysisServiceTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/DataAnalysisServiceTest.java
@@ -260,14 +260,14 @@ public class DataAnalysisServiceTest {
commandCounts.add(commandCount);
Mockito.when(commandMapper.countCommandState(0, null, null, new
Long[]{1L})).thenReturn(commandCounts);
- Mockito.when(errorCommandMapper.countCommandState(null, null, new
Long[]{1L})).thenReturn(commandCounts);
+ Mockito.when(errorCommandMapper.countCommandState(0, null, null, new
Long[]{1L})).thenReturn(commandCounts);
Map<String, Object> result =
dataAnalysisServiceImpl.countCommandState(user);
Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS));
// when no command found then return all count are 0
Mockito.when(commandMapper.countCommandState(anyInt(), any(), any(),
any())).thenReturn(Collections.emptyList());
- Mockito.when(errorCommandMapper.countCommandState(any(), any(),
any())).thenReturn(Collections.emptyList());
+ Mockito.when(errorCommandMapper.countCommandState(anyInt(), any(),
any(), any())).thenReturn(Collections.emptyList());
Map<String, Object> result5 =
dataAnalysisServiceImpl.countCommandState(user);
assertThat(result5).containsEntry(Constants.STATUS, Status.SUCCESS);
assertThat(result5.get(Constants.DATA_LIST)).asList().extracting("errorCount").allMatch(count
-> count.equals(0));
@@ -281,7 +281,7 @@ public class DataAnalysisServiceTest {
errorCommandCount.setCommandType(CommandType.START_PROCESS);
errorCommandCount.setCount(5);
Mockito.when(commandMapper.countCommandState(anyInt(), any(), any(),
any())).thenReturn(Collections.singletonList(normalCommandCount));
- Mockito.when(errorCommandMapper.countCommandState(any(), any(),
any())).thenReturn(Collections.singletonList(errorCommandCount));
+ Mockito.when(errorCommandMapper.countCommandState(anyInt(), any(),
any(), any())).thenReturn(Collections.singletonList(errorCommandCount));
Map<String, Object> result6 =
dataAnalysisServiceImpl.countCommandState(user);
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ErrorCommandMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ErrorCommandMapper.java
index acd9ce79cb..f86ce27c67 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ErrorCommandMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ErrorCommandMapper.java
@@ -34,12 +34,14 @@ public interface ErrorCommandMapper extends
BaseMapper<ErrorCommand> {
/**
* count command state
+ * @param userId
* @param startTime startTime
* @param endTime endTime
* @param projectCodeArray projectCodeArray
* @return CommandCount list
*/
List<CommandCount> countCommandState(
+ @Param("userId") int userId,
@Param("startTime") Date startTime,
@Param("endTime") Date endTime,
@Param("projectCodeArray") Long[] projectCodeArray);
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/CommandMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/CommandMapper.xml
index aa2bf13bdc..46d9f2ef5b 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/CommandMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/CommandMapper.xml
@@ -22,6 +22,9 @@
select cmd.command_type as command_type, count(1) as count
from t_ds_command cmd, t_ds_process_definition process
where cmd.process_definition_code = process.code
+ <if test="userId != 0 ">
+ and process.user_id= #{userId}
+ </if>
<if test="projectCodeArray != null and projectCodeArray.length != 0">
and process.project_code in
<foreach collection="projectCodeArray" index="index" item="i"
open="(" close=")" separator=",">
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ErrorCommandMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ErrorCommandMapper.xml
index 8179ff44d1..cd096bb860 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ErrorCommandMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ErrorCommandMapper.xml
@@ -22,6 +22,9 @@
select cmd.command_type as command_type, count(1) as count
from t_ds_error_command cmd, t_ds_process_definition process
where cmd.process_definition_code = process.code
+ <if test="userId != 0 ">
+ and process.user_id= #{userId}
+ </if>
<if test="projectCodeArray != null and projectCodeArray.length != 0">
and process.project_code in
<foreach collection="projectCodeArray" index="index" item="i"
open="(" close=")" separator=",">
diff --git
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ErrorCommandMapperTest.java
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ErrorCommandMapperTest.java
index 27c9467109..42d811ad7c 100644
---
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ErrorCommandMapperTest.java
+++
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ErrorCommandMapperTest.java
@@ -77,6 +77,7 @@ public class ErrorCommandMapperTest extends BaseDaoTest {
errorCommandMapper.updateById(errorCommand);
List<CommandCount> commandCounts =
errorCommandMapper.countCommandState(
+ 0,
null,
null,
new Long[0]
@@ -86,6 +87,7 @@ public class ErrorCommandMapperTest extends BaseDaoTest {
projectCodeArray[0] = processDefinition.getProjectCode();
projectCodeArray[1] = 200L;
List<CommandCount> commandCounts2 =
errorCommandMapper.countCommandState(
+ 0,
null,
null,
projectCodeArray