This is an automated email from the ASF dual-hosted git repository.
lidongdai pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 8fd3932 [Fix][api] Add queryProjectCreatedAndAuthorizedByUser
function (#3658)
8fd3932 is described below
commit 8fd3932bff374a03ef159bd2a2f495728c8e5d4e
Author: zixi0825 <[email protected]>
AuthorDate: Tue Oct 20 20:25:33 2020 +0800
[Fix][api] Add queryProjectCreatedAndAuthorizedByUser function (#3658)
* fix getLoginUserCreated bug
* fix getLoginUserCreated bug 1
* fix checkstyle
* modify function name
* modify comment
* fix unit test error
* rollback sqoop task hive target file
Co-authored-by: sunchaohe <[email protected]>
Co-authored-by: dailidong <[email protected]>
---
.../api/controller/ProjectController.java | 17 ++++++++-------
.../apache/dolphinscheduler/api/enums/Status.java | 6 +++---
.../api/service/ProjectService.java | 7 +++++++
.../api/service/impl/ProjectServiceImpl.java | 22 ++++++++++++++++++++
.../src/main/resources/i18n/messages.properties | 1 +
.../main/resources/i18n/messages_en_US.properties | 1 +
.../main/resources/i18n/messages_zh_CN.properties | 1 +
.../api/service/ProjectServiceTest.java | 24 ++++++++++++++++++++--
.../dolphinscheduler/dao/mapper/ProjectMapper.java | 7 +++++++
.../dolphinscheduler/dao/mapper/ProjectMapper.xml | 4 ++++
.../src/js/conf/home/store/dag/actions.js | 2 +-
11 files changed, 77 insertions(+), 15 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 dac97bc..1bf5003 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
@@ -228,21 +228,20 @@ public class ProjectController extends BaseController {
}
/**
- * query user created project
+ * query authorized and user created project
*
* @param loginUser login user
- * @return projects which the user create
+ * @return projects which the user create and authorized
*/
- @ApiOperation(value = "queryProjectCreatedByUser", notes =
"QUERY_USER_CREATED_PROJECT_NOTES")
-
- @GetMapping(value = "/login-user-created-project")
+ @ApiOperation(value = "queryProjectCreatedAndAuthorizedByUser", notes =
"QUERY_AUTHORIZED_AND_USER_CREATED_PROJECT_NOTES")
+ @GetMapping(value = "/created-and-authorized-project")
@ResponseStatus(HttpStatus.OK)
- @ApiException(QUERY_USER_CREATED_PROJECT_ERROR)
- public Result queryProjectCreatedByUser(@ApiIgnore @RequestAttribute(value
= Constants.SESSION_USER) User loginUser) {
- logger.info("login user {}, query authorized project by user id: {}.",
+ @ApiException(QUERY_AUTHORIZED_AND_USER_CREATED_PROJECT_ERROR)
+ public Result queryProjectCreatedAndAuthorizedByUser(@ApiIgnore
@RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
+ logger.info("login user {}, query authorized and user created project
by user id: {}.",
StringUtils.replaceNRTtoUnderline(loginUser.getUserName()),
StringUtils.replaceNRTtoUnderline(String.valueOf(loginUser.getId())));
- Map<String, Object> result =
projectService.queryProjectCreatedByUser(loginUser);
+ Map<String, Object> result =
projectService.queryProjectCreatedAndAuthorizedByUser(loginUser);
return returnDataList(result);
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
index 6544787..c6ad1cf 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
@@ -193,9 +193,9 @@ public enum Status {
BATCH_COPY_PROCESS_DEFINITION_ERROR(10159, "batch copy process definition
error", "复制工作流错误"),
BATCH_MOVE_PROCESS_DEFINITION_ERROR(10160, "batch move process definition
error", "移动工作流错误"),
QUERY_WORKFLOW_LINEAGE_ERROR(10161, "query workflow lineage error",
"查询血缘失败"),
- DELETE_PROCESS_DEFINITION_BY_ID_FAIL(10162, "delete process definition by
id fail, for there are {0} process instances in executing using it",
"删除工作流定义失败,有[{0}]个运行中的工作流实例正在使用"),
- CHECK_TENANT_CODE_ERROR(10163, "Please enter the English tenant code",
"请输入英文租户编码"),
-
+ QUERY_AUTHORIZED_AND_USER_CREATED_PROJECT_ERROR(10162, "query authorized
and user created project error error", "查询授权的和用户创建的项目错误"),
+ DELETE_PROCESS_DEFINITION_BY_ID_FAIL(10163,"delete process definition by
id fail, for there are {0} process instances in executing using it",
"删除工作流定义失败,有[{0}]个运行中的工作流实例正在使用"),
+ CHECK_TENANT_CODE_ERROR(10164, "Please enter the English tenant code",
"请输入英文租户编码"),
UDF_FUNCTION_NOT_EXIST(20001, "UDF function not found", "UDF函数不存在"),
UDF_FUNCTION_EXISTS(20002, "UDF function already exists", "UDF函数已存在"),
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 ca0e1fc..4753725 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
@@ -120,4 +120,11 @@ public interface ProjectService {
*/
Map<String, Object> queryAllProjectList();
+ /**
+ * query authorized and user create project list by user id
+ * @param loginUser
+ * @return
+ */
+ Map<String, Object> queryProjectCreatedAndAuthorizedByUser(User loginUser);
+
}
\ No newline at end of file
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 395da60..fd47342 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
@@ -376,6 +376,28 @@ public class ProjectServiceImpl extends BaseService
implements ProjectService {
}
/**
+ * query authorized and user create project list by user
+ *
+ * @param loginUser login user
+ * @return
+ */
+ public Map<String, Object> queryProjectCreatedAndAuthorizedByUser(User
loginUser) {
+ Map<String, Object> result = new HashMap<>();
+
+ List<Project> projects = null;
+ if (loginUser.getUserType() == UserType.ADMIN_USER) {
+ projects = projectMapper.selectList(null);
+ } else {
+ projects =
projectMapper.queryProjectCreatedAndAuthorizedByUserId(loginUser.getId());
+ }
+
+ result.put(Constants.DATA_LIST, projects);
+ putMsg(result, Status.SUCCESS);
+
+ return result;
+ }
+
+ /**
* check whether have read permission
*
* @param user user
diff --git a/dolphinscheduler-api/src/main/resources/i18n/messages.properties
b/dolphinscheduler-api/src/main/resources/i18n/messages.properties
index d1da3e9..b2d601c 100644
--- a/dolphinscheduler-api/src/main/resources/i18n/messages.properties
+++ b/dolphinscheduler-api/src/main/resources/i18n/messages.properties
@@ -254,6 +254,7 @@ QUERY_ALERT_GROUP_LIST_PAGING_NOTES=query alert group list
paging
EXPORT_PROCESS_DEFINITION_BY_ID_NOTES=export process definition by id
BATCH_EXPORT_PROCESS_DEFINITION_BY_IDS_NOTES= batch export process definition
by ids
QUERY_USER_CREATED_PROJECT_NOTES= query user created project
+QUERY_AUTHORIZED_AND_USER_CREATED_PROJECT_NOTES= query authorized and user
created project
COPY_PROCESS_DEFINITION_NOTES= copy process definition notes
MOVE_PROCESS_DEFINITION_NOTES= move process definition notes
TARGET_PROJECT_ID= target project id
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 267f93b..db1fa25 100644
--- a/dolphinscheduler-api/src/main/resources/i18n/messages_en_US.properties
+++ b/dolphinscheduler-api/src/main/resources/i18n/messages_en_US.properties
@@ -254,6 +254,7 @@ QUERY_ALERT_GROUP_LIST_PAGING_NOTES=query alert group list
paging
EXPORT_PROCESS_DEFINITION_BY_ID_NOTES=export process definition by id
BATCH_EXPORT_PROCESS_DEFINITION_BY_IDS_NOTES= batch export process definition
by ids
QUERY_USER_CREATED_PROJECT_NOTES= query user created project
+QUERY_AUTHORIZED_AND_USER_CREATED_PROJECT_NOTES= query authorized and user
created project
COPY_PROCESS_DEFINITION_NOTES= copy process definition notes
MOVE_PROCESS_DEFINITION_NOTES= move process definition notes
TARGET_PROJECT_ID= target project id
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 16262e6..d32f9d6 100644
--- a/dolphinscheduler-api/src/main/resources/i18n/messages_zh_CN.properties
+++ b/dolphinscheduler-api/src/main/resources/i18n/messages_zh_CN.properties
@@ -252,6 +252,7 @@ QUERY_ALERT_GROUP_LIST_PAGING_NOTES=分页查询告警组列表
EXPORT_PROCESS_DEFINITION_BY_ID_NOTES=通过工作流ID导出工作流定义
BATCH_EXPORT_PROCESS_DEFINITION_BY_IDS_NOTES=批量导出工作流定义
QUERY_USER_CREATED_PROJECT_NOTES= 查询用户创建的项目
+QUERY_AUTHORIZED_AND_USER_CREATED_PROJECT_NOTES= 查询授权和用户创建的项目
COPY_PROCESS_DEFINITION_NOTES= 复制工作流定义
MOVE_PROCESS_DEFINITION_NOTES= 移动工作流定义
TARGET_PROJECT_ID= 目标项目ID
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 85b23b3..cc39925 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
@@ -296,6 +296,28 @@ public class ProjectServiceTest {
}
@Test
+ public void testQueryProjectCreatedAndAuthorizedByUser() {
+
+ Map<String, Object> result = null;
+ User loginUser = getLoginUser();
+
+ // not admin user
+
Mockito.when(projectMapper.queryProjectCreatedAndAuthorizedByUserId(1)).thenReturn(getList());
+ result =
projectService.queryProjectCreatedAndAuthorizedByUser(loginUser);
+ List<Project> notAdminUserResult = (List<Project>)
result.get(Constants.DATA_LIST);
+ Assert.assertTrue(CollectionUtils.isNotEmpty(notAdminUserResult));
+
+ //admin user
+ loginUser.setUserType(UserType.ADMIN_USER);
+ Mockito.when(projectMapper.selectList(null)).thenReturn(getList());
+ result =
projectService.queryProjectCreatedAndAuthorizedByUser(loginUser);
+ List<Project> projects = (List<Project>)
result.get(Constants.DATA_LIST);
+
+ Assert.assertTrue(CollectionUtils.isNotEmpty(projects));
+
+ }
+
+ @Test
public void testQueryAllProjectList() {
Mockito.when(projectMapper.selectList(null)).thenReturn(getList());
@@ -340,13 +362,11 @@ public class ProjectServiceTest {
* create admin user
*/
private User getLoginUser() {
-
User loginUser = new User();
loginUser.setUserType(UserType.GENERAL_USER);
loginUser.setUserName(userName);
loginUser.setId(1);
return loginUser;
-
}
/**
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 424cb8e..b24fd2e 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
@@ -74,4 +74,11 @@ public interface ProjectMapper extends BaseMapper<Project> {
*/
List<Project> queryProjectExceptUserId(@Param("userId") int userId);
+ /**
+ * query project list by userId
+ * @param userId
+ * @return
+ */
+ List<Project> queryProjectCreatedAndAuthorizedByUserId(@Param("userId")
int userId);
+
}
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 5ab0756..17a57c8 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
@@ -64,5 +64,9 @@
from t_ds_project
where user_id = #{userId}
</select>
+ <select id="queryProjectCreatedAndAuthorizedByUserId"
resultType="org.apache.dolphinscheduler.dao.entity.Project">
+ select * from t_ds_project where id in (select project_id from
t_ds_relation_project_user where user_id=#{userId}
+ union select id as project_id from t_ds_project where
user_id=#{userId})
+ </select>
</mapper>
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js
b/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js
index b35d070..15caf5a 100644
--- a/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js
+++ b/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js
@@ -227,7 +227,7 @@ export default {
*/
getAllItems ({ state }, payload) {
return new Promise((resolve, reject) => {
- io.get(`projects/login-user-created-project`, {}, res => {
+ io.get(`projects/created-and-authorized-project`, {}, res => {
resolve(res)
}).catch(e => {
reject(e)