From 7fa84549062277b3dbf38246a9dc40c10a9da02c Mon Sep 17 00:00:00 2001 From: calvin Date: Fri, 23 Dec 2022 19:22:08 +0800 Subject: [PATCH] cherry-pick [Fix-13260][API] Ironed out the issue with lacking the value of user's name when querying the list of workflow definitions. #13261 --- .../api/service/impl/ProcessDefinitionServiceImpl.java | 8 ++++++-- .../api/service/ProcessDefinitionServiceTest.java | 8 +++++++- .../dolphinscheduler/dao/entity/ProcessDefinition.java | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java index 7d276ef209..26410f9a56 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java @@ -156,6 +156,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.databind.JsonNode; @@ -491,12 +492,15 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro .stream() .collect(Collectors.toMap(Schedule::getProcessDefinitionCode, Function.identity())); + Map userMap = userMapper.selectList(new QueryWrapper<>()).stream() + .collect(Collectors.toMap(User::getId, User::getUserName)); + for (ProcessDefinition pd : processDefinitions) { // todo: use batch query ProcessDefinitionLog processDefinitionLog = processDefinitionLogMapper.queryByDefinitionCodeAndVersion(pd.getCode(), pd.getVersion()); - User user = userMapper.selectById(processDefinitionLog.getOperator()); - pd.setModifyBy(user.getUserName()); + pd.setModifyBy(userMap.get(processDefinitionLog.getOperator())); + pd.setUserName(userMap.get(pd.getUserId())); Schedule schedule = scheduleMap.get(pd.getCode()); pd.setScheduleReleaseState(schedule == null ? null : schedule.getReleaseState()); } diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java index 9eae1a6536..171dbbc8c6 100644 --- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java +++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java @@ -63,6 +63,7 @@ import org.apache.dolphinscheduler.dao.mapper.ProjectMapper; import org.apache.dolphinscheduler.dao.mapper.ScheduleMapper; import org.apache.dolphinscheduler.dao.mapper.TaskDefinitionMapper; import org.apache.dolphinscheduler.dao.mapper.TenantMapper; +import org.apache.dolphinscheduler.dao.mapper.UserMapper; import org.apache.dolphinscheduler.dao.model.PageListingResult; import org.apache.dolphinscheduler.dao.repository.ProcessDefinitionDao; import org.apache.dolphinscheduler.service.process.ProcessService; @@ -164,6 +165,9 @@ public class ProcessDefinitionServiceTest { @Mock private WorkFlowLineageService workFlowLineageService; + @Mock + private UserMapper userMapper; + protected User user; protected Exception exception; protected final static long projectCode = 1L; @@ -221,7 +225,9 @@ public class ProcessDefinitionServiceTest { @Test @SuppressWarnings("unchecked") public void testQueryProcessDefinitionListPaging() { - long projectCode = 1L; + Mockito.when(projectMapper.queryByCode(projectCode)).thenReturn(getProject(projectCode)); + Mockito.when(userMapper.selectList(Mockito.any())).thenReturn(Lists.newArrayList()); + Project project = getProject(projectCode); User loginUser = new User(); diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinition.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinition.java index 6e7414c286..6f05feb77a 100644 --- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinition.java +++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinition.java @@ -121,7 +121,7 @@ public class ProcessDefinition { private int userId; /** - * user name + * create user name */ @TableField(exist = false) private String userName;