From ed1d1e885622f2fe45957998d475b7b6dcfb6328 Mon Sep 17 00:00:00 2001 From: limaiwang Date: Wed, 21 Sep 2022 09:28:22 +0800 Subject: [PATCH] add(dependent node's add unprivileged project list): dependent node's add unprivileged project list (#12073) --- .../api/controller/ProjectController.java | 15 +++++++++++++++ .../api/controller/ProjectV2Controller.java | 16 ++++++++++++++++ .../api/service/ProjectService.java | 6 ++++++ .../api/service/impl/ProjectServiceImpl.java | 15 +++++++++++++++ .../src/main/resources/i18n/messages.properties | 1 + .../resources/i18n/messages_en_US.properties | 1 + .../resources/i18n/messages_zh_CN.properties | 1 + .../api/controller/ProjectControllerTest.java | 11 ++++++++++- .../api/controller/ProjectV2ControllerTest.java | 10 ++++++++++ .../api/service/ProjectServiceTest.java | 10 ++++++++++ .../dao/mapper/ProjectMapper.java | 6 ++++++ .../dao/mapper/ProjectMapper.xml | 5 +++++ .../src/service/modules/projects/index.ts | 7 +++++++ .../task/components/node/fields/use-dependent.ts | 4 ++-- 14 files changed, 105 insertions(+), 3 deletions(-) diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProjectController.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProjectController.java index e957a379f5..a53bdcc550 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProjectController.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProjectController.java @@ -284,4 +284,19 @@ public class ProjectController extends BaseController { public Result queryAllProjectList(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser) { return projectService.queryAllProjectList(loginUser); } + + /** + * query all project list for dependent + * + * @param loginUser login user + * @return all project list + */ + @ApiOperation(value = "queryAllProjectListForDependent", notes = "QUERY_ALL_PROJECT_LIST_FOR_DEPENDENT_NOTES") + @GetMapping(value = "/list-dependent") + @ResponseStatus(HttpStatus.OK) + @ApiException(LOGIN_USER_QUERY_PROJECT_LIST_PAGING_ERROR) + @AccessLogAnnotation(ignoreRequestArgs = "loginUser") + public Result queryAllProjectListForDependent(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser) { + return projectService.queryAllProjectListForDependent(); + } } diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProjectV2Controller.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProjectV2Controller.java index a0e2488e90..035bfcc67e 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProjectV2Controller.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProjectV2Controller.java @@ -288,4 +288,20 @@ public class ProjectV2Controller extends BaseController { Result result = projectService.queryAllProjectList(loginUser); return new ProjectListResponse(result); } + + /** + * query all project list for dependent + * + * @param loginUser login user + * @return all project list + */ + @ApiOperation(value = "queryAllProjectListForDependent", notes = "QUERY_ALL_PROJECT_LIST_FOR_DEPENDENT_NOTES") + @GetMapping(value = "/list-dependent") + @ResponseStatus(HttpStatus.OK) + @ApiException(LOGIN_USER_QUERY_PROJECT_LIST_PAGING_ERROR) + @AccessLogAnnotation(ignoreRequestArgs = "loginUser") + public ProjectListResponse queryAllProjectListForDependent(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser) { + Result result = projectService.queryAllProjectListForDependent(); + return new ProjectListResponse(result); + } } diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProjectService.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProjectService.java index bec972868d..a0d7217766 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProjectService.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProjectService.java @@ -174,4 +174,10 @@ public interface ProjectService { */ void checkProjectAndAuth(Result result, User loginUser, Project project, long projectCode, String perm); + /** + * the project list in dependent node's permissions should not be restricted + * @return project list + */ + Result queryAllProjectListForDependent(); + } diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java index 59d4329047..bd43e549b4 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java @@ -626,4 +626,19 @@ public class ProjectServiceImpl extends BaseServiceImpl implements ProjectServic } } + /** + * query all project for dependent node + * + * @return project list + */ + @Override + public Result queryAllProjectListForDependent() { + Result result = new Result<>(); + List projects = + projectMapper.queryAllProjectForDependent(); + result.setData(projects); + putMsg(result, Status.SUCCESS); + return result; + } + } diff --git a/dolphinscheduler-api/src/main/resources/i18n/messages.properties b/dolphinscheduler-api/src/main/resources/i18n/messages.properties index 53a0ca0fda..59669f9e2e 100644 --- a/dolphinscheduler-api/src/main/resources/i18n/messages.properties +++ b/dolphinscheduler-api/src/main/resources/i18n/messages.properties @@ -302,3 +302,4 @@ PROCESS_TASK_RELATION_TAG=process task relation related operation ENVIRONMENT_TAG=environment related operation GET_PROCESS_LIST_BY_PROCESS_CODE_NOTES=query process definition list by project code GET_TASK_LIST_BY_PROCESS_CODE_NOTES=query task definition list by process definition code +QUERY_ALL_PROJECT_LIST_FOR_DEPENDENT_NOTES=query all project list for dependent diff --git a/dolphinscheduler-api/src/main/resources/i18n/messages_en_US.properties b/dolphinscheduler-api/src/main/resources/i18n/messages_en_US.properties index 3905de7e04..7f825464d9 100644 --- a/dolphinscheduler-api/src/main/resources/i18n/messages_en_US.properties +++ b/dolphinscheduler-api/src/main/resources/i18n/messages_en_US.properties @@ -361,3 +361,4 @@ PROCESS_TASK_RELATION_TAG=process task relation related operation ENVIRONMENT_TAG=environment related operation GET_PROCESS_LIST_BY_PROCESS_CODE_NOTES=query process definition list by project code GET_TASK_LIST_BY_PROCESS_CODE_NOTES=query task definition list by process definition code +QUERY_ALL_PROJECT_LIST_FOR_DEPENDENT_NOTES=query all project list for dependent diff --git a/dolphinscheduler-api/src/main/resources/i18n/messages_zh_CN.properties b/dolphinscheduler-api/src/main/resources/i18n/messages_zh_CN.properties index 64cec045cb..3ab39b13c9 100644 --- a/dolphinscheduler-api/src/main/resources/i18n/messages_zh_CN.properties +++ b/dolphinscheduler-api/src/main/resources/i18n/messages_zh_CN.properties @@ -358,3 +358,4 @@ PROCESS_TASK_RELATION_TAG=工作流关系相关操作 ENVIRONMENT_TAG=环境相关操作 GET_PROCESS_LIST_BY_PROCESS_CODE_NOTES=通过项目代码查询工作流定义 GET_TASK_LIST_BY_PROCESS_CODE_NOTES=通过工作流定义代码查询任务定义 +QUERY_ALL_PROJECT_LIST_FOR_DEPENDENT_NOTES=查询Dependent节点所有项目 diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProjectControllerTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProjectControllerTest.java index b13ed89878..650ca2a3fc 100644 --- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProjectControllerTest.java +++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProjectControllerTest.java @@ -141,7 +141,16 @@ public class ProjectControllerTest { Result response = projectController.queryAllProjectList(user); Assert.assertEquals(Status.SUCCESS.getCode(), response.getCode().intValue()); } - + @Test + public void testQueryAllProjectListForDependent() { + User user = new User(); + user.setId(0); + Result result = new Result(); + putMsg(result, Status.SUCCESS); + Mockito.when(projectService.queryAllProjectListForDependent()).thenReturn(result); + Result response = projectController.queryAllProjectListForDependent(user); + Assert.assertEquals(Status.SUCCESS.getCode(), response.getCode().intValue()); + } private Project getProject() { Project project = new Project(); project.setCode(1L); diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProjectV2ControllerTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProjectV2ControllerTest.java index 3a9c69da3c..eafc3794a4 100644 --- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProjectV2ControllerTest.java +++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProjectV2ControllerTest.java @@ -144,6 +144,16 @@ public class ProjectV2ControllerTest { Result response = projectV2Controller.queryAllProjectList(user); Assert.assertEquals(Status.SUCCESS.getCode(), response.getCode().intValue()); } + @Test + public void testQueryAllProjectListForDependent() { + User user = new User(); + user.setId(0); + Result result = new Result(); + putMsg(result, Status.SUCCESS); + Mockito.when(projectService.queryAllProjectListForDependent()).thenReturn(result); + Result response = projectV2Controller.queryAllProjectListForDependent(user); + Assert.assertEquals(Status.SUCCESS.getCode(), response.getCode().intValue()); + } private Project getProject() { Project project = new Project(); diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectServiceTest.java index c35a31ec60..eaf8d6cff3 100644 --- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectServiceTest.java +++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectServiceTest.java @@ -403,6 +403,16 @@ public class ProjectServiceTest { List projects = (List) result.getData(); Assert.assertTrue(CollectionUtils.isNotEmpty(projects)); + } + @Test + public void queryAllProjectListForDependent() { + Mockito.when(projectMapper.queryAllProjectForDependent()).thenReturn(getList()); + + Result result = projectService.queryAllProjectListForDependent(); + logger.info(result.toString()); + List projects = (List) result.getData(); + Assert.assertTrue(CollectionUtils.isNotEmpty(projects)); + } @Test diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProjectMapper.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProjectMapper.java index 6bd4c4be5f..3a3c314b36 100644 --- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProjectMapper.java +++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProjectMapper.java @@ -137,4 +137,10 @@ public interface ProjectMapper extends BaseMapper { * @return */ List listAuthorizedProjects(@Param("userId") int userId, @Param("projectsIds")List projectsIds); + + /** + * query all project for dependent node + * @return projectList + */ + List queryAllProjectForDependent(); } diff --git a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProjectMapper.xml b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProjectMapper.xml index 96a095d186..d01d970ee1 100644 --- a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProjectMapper.xml +++ b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProjectMapper.xml @@ -180,4 +180,9 @@ union select id as project_id from t_ds_project where user_id=#{userId}) + + diff --git a/dolphinscheduler-ui/src/service/modules/projects/index.ts b/dolphinscheduler-ui/src/service/modules/projects/index.ts index 555fec1ab6..69e097c7b8 100644 --- a/dolphinscheduler-ui/src/service/modules/projects/index.ts +++ b/dolphinscheduler-ui/src/service/modules/projects/index.ts @@ -85,3 +85,10 @@ export function deleteProject(code: number): any { method: 'delete' }) } + +export function queryAllProjectListForDependent(): any { + return axios({ + url: '/projects/list-dependent', + method: 'get' + }) +} diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-dependent.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-dependent.ts index 9589a38f08..1e714a1475 100644 --- a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-dependent.ts +++ b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-dependent.ts @@ -20,7 +20,7 @@ import { useI18n } from 'vue-i18n' import { NEllipsis, NIcon } from 'naive-ui' import { useRelationCustomParams, useDependentTimeout } from '.' import { useTaskNodeStore } from '@/store/project/task-node' -import { queryAllProjectList } from '@/service/modules/projects' +import { queryAllProjectListForDependent } from '@/service/modules/projects' import { tasksState } from '@/common/common' import { queryProcessDefinitionList, @@ -176,7 +176,7 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] { } as { [key in IDateType]: { value: string; label: string }[] } const getProjectList = async () => { - const result = await queryAllProjectList() + const result = await queryAllProjectListForDependent() projectList.value = result.map((item: { code: number; name: string }) => ({ value: item.code, label: () => h(NEllipsis, null, item.name)