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

jave 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 fe9967b  [Improvement-3369][api] Introduce ProjectService interface 
for more clear code (#3384)
fe9967b is described below

commit fe9967b00566f88c68993a290a54d2b991840527
Author: Yichao Yang <[email protected]>
AuthorDate: Sun Aug 16 12:36:25 2020 +0800

    [Improvement-3369][api] Introduce ProjectService interface for more clear 
code (#3384)
    
    * [Improvement][api] Introduce ProjectService interface for more clear code
    
    * Fix ci e2e
    
    * Update ProcessDefinitionServiceTest.java
---
 docker/build/Dockerfile                            |   2 +-
 .../api/service/ProjectService.java                | 342 +--------------------
 .../ProjectServiceImpl.java}                       |  92 +++---
 .../api/service/DataAnalysisServiceTest.java       |   3 +-
 .../api/service/ExecutorService2Test.java          |  63 ++--
 .../api/service/ProcessDefinitionServiceTest.java  | 102 +++---
 .../api/service/ProcessInstanceServiceTest.java    |   8 +-
 .../api/service/ProjectServiceTest.java            | 159 +++++-----
 .../api/service/SchedulerServiceTest.java          |  34 +-
 .../api/service/TaskInstanceServiceTest.java       |  35 ++-
 .../dolphinscheduler/dao/entity/Project.java       | 101 +++++-
 11 files changed, 371 insertions(+), 570 deletions(-)

diff --git a/docker/build/Dockerfile b/docker/build/Dockerfile
index d0f16d5..ceb94ea 100644
--- a/docker/build/Dockerfile
+++ b/docker/build/Dockerfile
@@ -27,7 +27,7 @@ ENV DEBIAN_FRONTEND noninteractive
 #If install slowly, you can replcae alpine's mirror with aliyun's mirror, 
Example:
 #RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" 
/etc/apk/repositories
 RUN apk update && \
-    apk add dos2unix shadow bash openrc python python3 sudo vim wget iputils 
net-tools openssh-server py2-pip tini && \
+    apk --update add --no-cache dos2unix shadow bash openrc python2 python3 
sudo vim wget iputils net-tools openssh-server py-pip tini && \
     apk add --update procps && \
     openrc boot && \
     pip install kazoo
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 36c5c10..ca0e1fc 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
@@ -16,43 +16,15 @@
  */
 package org.apache.dolphinscheduler.api.service;
 
-import org.apache.dolphinscheduler.api.enums.Status;
-import org.apache.dolphinscheduler.api.utils.PageInfo;
-import org.apache.dolphinscheduler.common.Constants;
-import org.apache.dolphinscheduler.common.enums.UserType;
-import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
 import org.apache.dolphinscheduler.dao.entity.Project;
-import org.apache.dolphinscheduler.dao.entity.ProjectUser;
 import org.apache.dolphinscheduler.dao.entity.User;
-import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionMapper;
-import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
-import org.apache.dolphinscheduler.dao.mapper.ProjectUserMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import java.util.*;
-import static org.apache.dolphinscheduler.api.utils.CheckUtils.checkDesc;
+
+import java.util.Map;
 
 /**
  * project service
- *HttpTask./
  **/
-@Service
-public class ProjectService extends BaseService {
-
-    private static final Logger logger = 
LoggerFactory.getLogger(ProjectService.class);
-
-    @Autowired
-    private ProjectMapper projectMapper;
-
-    @Autowired
-    private ProjectUserMapper projectUserMapper;
-
-    @Autowired
-    private ProcessDefinitionMapper processDefinitionMapper;
+public interface ProjectService {
 
     /**
      * create project
@@ -62,38 +34,7 @@ public class ProjectService extends BaseService {
      * @param desc description
      * @return returns an error if it exists
      */
-    public Map<String, Object> createProject(User loginUser, String name, 
String desc) {
-
-        Map<String, Object> result = new HashMap<>();
-        Map<String, Object> descCheck = checkDesc(desc);
-        if (descCheck.get(Constants.STATUS) != Status.SUCCESS) {
-            return descCheck;
-        }
-
-        Project project = projectMapper.queryByName(name);
-        if (project != null) {
-            putMsg(result, Status.PROJECT_ALREADY_EXISTS, name);
-            return result;
-        }
-        project = new Project();
-        Date now = new Date();
-
-        project.setName(name);
-        project.setDescription(desc);
-        project.setUserId(loginUser.getId());
-        project.setUserName(loginUser.getUserName());
-        project.setCreateTime(now);
-        project.setUpdateTime(now);
-
-        if (projectMapper.insert(project) > 0) {
-            Project insertedProject = projectMapper.queryByName(name);
-            result.put(Constants.DATA_LIST, insertedProject);
-            putMsg(result, Status.SUCCESS);
-        } else {
-            putMsg(result, Status.CREATE_PROJECT_ERROR);
-        }
-        return result;
-    }
+    Map<String, Object> createProject(User loginUser, String name, String 
desc);
 
     /**
      * query project details by id
@@ -101,19 +42,7 @@ public class ProjectService extends BaseService {
      * @param projectId project id
      * @return project detail information
      */
-    public Map<String, Object> queryById(Integer projectId) {
-
-        Map<String, Object> result = new HashMap<>();
-        Project project = projectMapper.selectById(projectId);
-
-        if (project != null) {
-            result.put(Constants.DATA_LIST, project);
-            putMsg(result, Status.SUCCESS);
-        } else {
-            putMsg(result, Status.PROJECT_NOT_FOUNT, projectId);
-        }
-        return result;
-    }
+    Map<String, Object> queryById(Integer projectId);
 
     /**
      * check project and authorization
@@ -123,30 +52,9 @@ public class ProjectService extends BaseService {
      * @param projectName project name
      * @return true if the login user have permission to see the project
      */
-    public Map<String, Object> checkProjectAndAuth(User loginUser, Project 
project, String projectName) {
-        Map<String, Object> result = new HashMap<>();
-        if (project == null) {
-            putMsg(result, Status.PROJECT_NOT_FOUNT, projectName);
-        } else if (!checkReadPermission(loginUser, project)) {
-            // check read permission
-            putMsg(result, Status.USER_NO_OPERATION_PROJECT_PERM, 
loginUser.getUserName(), projectName);
-        }else {
-            putMsg(result, Status.SUCCESS);
-        }
-        return result;
-    }
+    Map<String, Object> checkProjectAndAuth(User loginUser, Project project, 
String projectName);
 
-    public boolean hasProjectAndPerm(User loginUser, Project project, 
Map<String, Object> result) {
-        boolean checkResult = false;
-        if (project == null) {
-            putMsg(result, Status.PROJECT_NOT_FOUNT, "");
-        } else if (!checkReadPermission(loginUser, project)) {
-            putMsg(result, Status.USER_NO_OPERATION_PROJECT_PERM, 
loginUser.getUserName(), project.getName());
-        } else {
-            checkResult = true;
-        }
-        return checkResult;
-    }
+    boolean hasProjectAndPerm(User loginUser, Project project, Map<String, 
Object> result);
 
     /**
      * admin can view all projects
@@ -157,29 +65,7 @@ public class ProjectService extends BaseService {
      * @param pageNo page number
      * @return project list which the login user have permission to see
      */
-    public Map<String, Object> queryProjectListPaging(User loginUser, Integer 
pageSize, Integer pageNo, String searchVal) {
-        Map<String, Object> result = new HashMap<>();
-        PageInfo pageInfo = new PageInfo<Project>(pageNo, pageSize);
-
-        Page<Project> page = new Page(pageNo, pageSize);
-
-        int userId = loginUser.getUserType() == UserType.ADMIN_USER ? 0 : 
loginUser.getId();
-        IPage<Project> projectIPage = 
projectMapper.queryProjectListPaging(page, userId, searchVal);
-
-        List<Project> projectList = projectIPage.getRecords();
-        if(userId != 0){
-            for (Project project : projectList) {
-                
project.setPerm(org.apache.dolphinscheduler.common.Constants.DEFAULT_ADMIN_PERMISSION);
-            }
-        }
-        pageInfo.setTotalCount((int)projectIPage.getTotal());
-        pageInfo.setLists(projectList);
-        result.put(Constants.COUNT, (int)projectIPage.getTotal());
-        result.put(Constants.DATA_LIST, pageInfo);
-        putMsg(result, Status.SUCCESS);
-
-        return result;
-    }
+    Map<String, Object> queryProjectListPaging(User loginUser, Integer 
pageSize, Integer pageNo, String searchVal);
 
     /**
      * delete project by id
@@ -188,50 +74,7 @@ public class ProjectService extends BaseService {
      * @param projectId project id
      * @return delete result code
      */
-    public Map<String, Object> deleteProject(User loginUser, Integer 
projectId) {
-        Map<String, Object> result = new HashMap<>();
-        Project project = projectMapper.selectById(projectId);
-        Map<String, Object> checkResult = getCheckResult(loginUser, project);
-        if (checkResult != null) {
-            return checkResult;
-        }
-
-        if (!hasPerm(loginUser, project.getUserId())) {
-            putMsg(result, Status.USER_NO_OPERATION_PERM);
-            return result;
-        }
-
-        List<ProcessDefinition> processDefinitionList = 
processDefinitionMapper.queryAllDefinitionList(projectId);
-
-        if(processDefinitionList.size() > 0){
-            putMsg(result, Status.DELETE_PROJECT_ERROR_DEFINES_NOT_NULL);
-            return result;
-        }
-        int delete = projectMapper.deleteById(projectId);
-        if (delete > 0) {
-            putMsg(result, Status.SUCCESS);
-        } else {
-            putMsg(result, Status.DELETE_PROJECT_ERROR);
-        }
-        return result;
-    }
-
-    /**
-     * get check result
-     *
-     * @param loginUser login user
-     * @param project project
-     * @return check result
-     */
-    private Map<String, Object> getCheckResult(User loginUser, Project 
project) {
-        String projectName = project == null ? null:project.getName();
-        Map<String, Object> checkResult = checkProjectAndAuth(loginUser, 
project, projectName);
-        Status status = (Status) checkResult.get(Constants.STATUS);
-        if (status != Status.SUCCESS) {
-            return checkResult;
-        }
-        return null;
-    }
+    Map<String, Object> deleteProject(User loginUser, Integer projectId);
 
     /**
      * updateProcessInstance project
@@ -242,37 +85,7 @@ public class ProjectService extends BaseService {
      * @param desc description
      * @return update result code
      */
-    public Map<String, Object> update(User loginUser, Integer projectId, 
String projectName, String desc) {
-        Map<String, Object> result = new HashMap<>();
-
-        Map<String, Object> descCheck = checkDesc(desc);
-        if (descCheck.get(Constants.STATUS) != Status.SUCCESS) {
-            return descCheck;
-        }
-
-        Project project = projectMapper.selectById(projectId);
-        boolean hasProjectAndPerm = hasProjectAndPerm(loginUser, project, 
result);
-        if (!hasProjectAndPerm) {
-            return result;
-        }
-        Project tempProject = projectMapper.queryByName(projectName);
-        if (tempProject != null && tempProject.getId() != projectId) {
-            putMsg(result, Status.PROJECT_ALREADY_EXISTS, projectName);
-            return result;
-        }
-        project.setName(projectName);
-        project.setDescription(desc);
-        project.setUpdateTime(new Date());
-
-        int update = projectMapper.updateById(project);
-        if (update > 0) {
-            putMsg(result, Status.SUCCESS);
-        } else {
-            putMsg(result, Status.UPDATE_PROJECT_ERROR);
-        }
-        return result;
-    }
-
+    Map<String, Object> update(User loginUser, Integer projectId, String 
projectName, String desc);
 
     /**
      * query unauthorized project
@@ -281,48 +94,7 @@ public class ProjectService extends BaseService {
      * @param userId user id
      * @return the projects which user have not permission to see
      */
-    public Map<String, Object> queryUnauthorizedProject(User loginUser, 
Integer userId) {
-        Map<String, Object> result = new HashMap<>();
-        if (checkAdmin(loginUser, result)) {
-            return result;
-        }
-        /**
-         * query all project list except specified userId
-         */
-        List<Project> projectList = 
projectMapper.queryProjectExceptUserId(userId);
-        List<Project> resultList = new ArrayList<>();
-        Set<Project> projectSet = null;
-        if (projectList != null && projectList.size() > 0) {
-            projectSet = new HashSet<>(projectList);
-
-            List<Project> authedProjectList = 
projectMapper.queryAuthedProjectListByUserId(userId);
-
-            resultList = getUnauthorizedProjects(projectSet, 
authedProjectList);
-        }
-        result.put(Constants.DATA_LIST, resultList);
-        putMsg(result,Status.SUCCESS);
-        return result;
-    }
-
-    /**
-     * get unauthorized project
-     *
-     * @param projectSet project set
-     * @param authedProjectList authed project list
-     * @return project list that authorization
-     */
-    private List<Project> getUnauthorizedProjects(Set<Project> projectSet, 
List<Project> authedProjectList) {
-        List<Project> resultList;
-        Set<Project> authedProjectSet = null;
-        if (authedProjectList != null && authedProjectList.size() > 0) {
-            authedProjectSet = new HashSet<>(authedProjectList);
-            projectSet.removeAll(authedProjectSet);
-
-        }
-        resultList = new ArrayList<>(projectSet);
-        return resultList;
-    }
-
+    Map<String, Object> queryUnauthorizedProject(User loginUser, Integer 
userId);
 
     /**
      * query authorized project
@@ -331,19 +103,7 @@ public class ProjectService extends BaseService {
      * @param userId user id
      * @return projects which the user have permission to see, Except for 
items created by this user
      */
-    public Map<String, Object> queryAuthorizedProject(User loginUser, Integer 
userId) {
-        Map<String, Object> result = new HashMap<>();
-
-        if (checkAdmin(loginUser, result)) {
-            return result;
-        }
-
-        List<Project> projects = 
projectMapper.queryAuthedProjectListByUserId(userId);
-        result.put(Constants.DATA_LIST, projects);
-        putMsg(result,Status.SUCCESS);
-
-        return result;
-    }
+    Map<String, Object> queryAuthorizedProject(User loginUser, Integer userId);
 
     /**
      * query authorized project
@@ -351,83 +111,13 @@ public class ProjectService extends BaseService {
      * @param loginUser login user
      * @return projects which the user have permission to see, Except for 
items created by this user
      */
-    public Map<String, Object> queryProjectCreatedByUser(User loginUser) {
-        Map<String, Object> result = new HashMap<>();
-
-        if (checkAdmin(loginUser, result)) {
-            return result;
-        }
-
-        List<Project> projects = 
projectMapper.queryProjectCreatedByUser(loginUser.getId());
-        result.put(Constants.DATA_LIST, projects);
-        putMsg(result,Status.SUCCESS);
-
-        return result;
-    }
-
-
-    /**
-     * check whether have read permission
-     *
-     * @param user user
-     * @param project project
-     * @return true if the user have permission to see the project, otherwise 
return false
-     */
-    private boolean checkReadPermission(User user, Project project) {
-        int permissionId = queryPermission(user, project);
-        return (permissionId & Constants.READ_PERMISSION) != 0;
-    }
-
-    /**
-     * query permission id
-     *
-     * @param user user
-     * @param project project
-     * @return permission
-     */
-    private int queryPermission(User user, Project project) {
-        if (user.getUserType() == UserType.ADMIN_USER) {
-            return Constants.READ_PERMISSION;
-        }
-
-        if (project.getUserId() == user.getId()) {
-            return Constants.ALL_PERMISSIONS;
-        }
-
-        ProjectUser projectUser = 
projectUserMapper.queryProjectRelation(project.getId(), user.getId());
-
-        if (projectUser == null) {
-            return 0;
-        }
-
-        return projectUser.getPerm();
-
-    }
+    Map<String, Object> queryProjectCreatedByUser(User loginUser);
 
     /**
      * query all project list that have one or more process definitions.
+     *
      * @return project list
      */
-    public Map<String, Object> queryAllProjectList() {
-        Map<String, Object> result = new HashMap<>();
-        List<Project> projects = projectMapper.selectList(null);
-        List<ProcessDefinition>  processDefinitions = 
processDefinitionMapper.selectList(null);
-        if(projects != null){
-            Set set = new HashSet<>();
-            for (ProcessDefinition processDefinition : processDefinitions){
-                set.add(processDefinition.getProjectId());
-            }
-            List<Project> tempDeletelist = new ArrayList<Project>();
-            for (Project project : projects) {
-                if(!set.contains(project.getId())){
-                    tempDeletelist.add(project);
-                }
-            }
-            projects.removeAll(tempDeletelist);
-        }
-        result.put(Constants.DATA_LIST, projects);
-        putMsg(result,Status.SUCCESS);
-        return result;
-    }
+    Map<String, Object> queryAllProjectList();
 
-}
+}
\ No newline at end of file
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/impl/ProjectServiceImpl.java
similarity index 87%
copy from 
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProjectService.java
copy to 
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java
index 36c5c10..395da60 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/impl/ProjectServiceImpl.java
@@ -14,9 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dolphinscheduler.api.service;
+package org.apache.dolphinscheduler.api.service.impl;
+
+import static org.apache.dolphinscheduler.api.utils.CheckUtils.checkDesc;
 
 import org.apache.dolphinscheduler.api.enums.Status;
+import org.apache.dolphinscheduler.api.service.BaseService;
+import org.apache.dolphinscheduler.api.service.ProjectService;
 import org.apache.dolphinscheduler.api.utils.PageInfo;
 import org.apache.dolphinscheduler.common.Constants;
 import org.apache.dolphinscheduler.common.enums.UserType;
@@ -27,23 +31,26 @@ import org.apache.dolphinscheduler.dao.entity.User;
 import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionMapper;
 import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
 import org.apache.dolphinscheduler.dao.mapper.ProjectUserMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import java.util.*;
-import static org.apache.dolphinscheduler.api.utils.CheckUtils.checkDesc;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 /**
- * project service
- *HttpTask./
+ * project service implement
  **/
 @Service
-public class ProjectService extends BaseService {
-
-    private static final Logger logger = 
LoggerFactory.getLogger(ProjectService.class);
+public class ProjectServiceImpl extends BaseService implements ProjectService {
 
     @Autowired
     private ProjectMapper projectMapper;
@@ -75,15 +82,18 @@ public class ProjectService extends BaseService {
             putMsg(result, Status.PROJECT_ALREADY_EXISTS, name);
             return result;
         }
-        project = new Project();
+
         Date now = new Date();
 
-        project.setName(name);
-        project.setDescription(desc);
-        project.setUserId(loginUser.getId());
-        project.setUserName(loginUser.getUserName());
-        project.setCreateTime(now);
-        project.setUpdateTime(now);
+        project = Project
+                .newBuilder()
+                .name(name)
+                .description(desc)
+                .userId(loginUser.getId())
+                .userName(loginUser.getUserName())
+                .createTime(now)
+                .updateTime(now)
+                .build();
 
         if (projectMapper.insert(project) > 0) {
             Project insertedProject = projectMapper.queryByName(name);
@@ -130,7 +140,7 @@ public class ProjectService extends BaseService {
         } else if (!checkReadPermission(loginUser, project)) {
             // check read permission
             putMsg(result, Status.USER_NO_OPERATION_PROJECT_PERM, 
loginUser.getUserName(), projectName);
-        }else {
+        } else {
             putMsg(result, Status.SUCCESS);
         }
         return result;
@@ -159,22 +169,22 @@ public class ProjectService extends BaseService {
      */
     public Map<String, Object> queryProjectListPaging(User loginUser, Integer 
pageSize, Integer pageNo, String searchVal) {
         Map<String, Object> result = new HashMap<>();
-        PageInfo pageInfo = new PageInfo<Project>(pageNo, pageSize);
+        PageInfo<Project> pageInfo = new PageInfo<>(pageNo, pageSize);
 
-        Page<Project> page = new Page(pageNo, pageSize);
+        Page<Project> page = new Page<>(pageNo, pageSize);
 
         int userId = loginUser.getUserType() == UserType.ADMIN_USER ? 0 : 
loginUser.getId();
         IPage<Project> projectIPage = 
projectMapper.queryProjectListPaging(page, userId, searchVal);
 
         List<Project> projectList = projectIPage.getRecords();
-        if(userId != 0){
+        if (userId != 0) {
             for (Project project : projectList) {
-                
project.setPerm(org.apache.dolphinscheduler.common.Constants.DEFAULT_ADMIN_PERMISSION);
+                project.setPerm(Constants.DEFAULT_ADMIN_PERMISSION);
             }
         }
-        pageInfo.setTotalCount((int)projectIPage.getTotal());
+        pageInfo.setTotalCount((int) projectIPage.getTotal());
         pageInfo.setLists(projectList);
-        result.put(Constants.COUNT, (int)projectIPage.getTotal());
+        result.put(Constants.COUNT, (int) projectIPage.getTotal());
         result.put(Constants.DATA_LIST, pageInfo);
         putMsg(result, Status.SUCCESS);
 
@@ -203,7 +213,7 @@ public class ProjectService extends BaseService {
 
         List<ProcessDefinition> processDefinitionList = 
processDefinitionMapper.queryAllDefinitionList(projectId);
 
-        if(processDefinitionList.size() > 0){
+        if (!processDefinitionList.isEmpty()) {
             putMsg(result, Status.DELETE_PROJECT_ERROR_DEFINES_NOT_NULL);
             return result;
         }
@@ -224,7 +234,7 @@ public class ProjectService extends BaseService {
      * @return check result
      */
     private Map<String, Object> getCheckResult(User loginUser, Project 
project) {
-        String projectName = project == null ? null:project.getName();
+        String projectName = project == null ? null : project.getName();
         Map<String, Object> checkResult = checkProjectAndAuth(loginUser, 
project, projectName);
         Status status = (Status) checkResult.get(Constants.STATUS);
         if (status != Status.SUCCESS) {
@@ -292,7 +302,7 @@ public class ProjectService extends BaseService {
         List<Project> projectList = 
projectMapper.queryProjectExceptUserId(userId);
         List<Project> resultList = new ArrayList<>();
         Set<Project> projectSet = null;
-        if (projectList != null && projectList.size() > 0) {
+        if (projectList != null && !projectList.isEmpty()) {
             projectSet = new HashSet<>(projectList);
 
             List<Project> authedProjectList = 
projectMapper.queryAuthedProjectListByUserId(userId);
@@ -300,7 +310,7 @@ public class ProjectService extends BaseService {
             resultList = getUnauthorizedProjects(projectSet, 
authedProjectList);
         }
         result.put(Constants.DATA_LIST, resultList);
-        putMsg(result,Status.SUCCESS);
+        putMsg(result, Status.SUCCESS);
         return result;
     }
 
@@ -314,7 +324,7 @@ public class ProjectService extends BaseService {
     private List<Project> getUnauthorizedProjects(Set<Project> projectSet, 
List<Project> authedProjectList) {
         List<Project> resultList;
         Set<Project> authedProjectSet = null;
-        if (authedProjectList != null && authedProjectList.size() > 0) {
+        if (authedProjectList != null && !authedProjectList.isEmpty()) {
             authedProjectSet = new HashSet<>(authedProjectList);
             projectSet.removeAll(authedProjectSet);
 
@@ -340,7 +350,7 @@ public class ProjectService extends BaseService {
 
         List<Project> projects = 
projectMapper.queryAuthedProjectListByUserId(userId);
         result.put(Constants.DATA_LIST, projects);
-        putMsg(result,Status.SUCCESS);
+        putMsg(result, Status.SUCCESS);
 
         return result;
     }
@@ -360,12 +370,11 @@ public class ProjectService extends BaseService {
 
         List<Project> projects = 
projectMapper.queryProjectCreatedByUser(loginUser.getId());
         result.put(Constants.DATA_LIST, projects);
-        putMsg(result,Status.SUCCESS);
+        putMsg(result, Status.SUCCESS);
 
         return result;
     }
 
-
     /**
      * check whether have read permission
      *
@@ -406,27 +415,28 @@ public class ProjectService extends BaseService {
 
     /**
      * query all project list that have one or more process definitions.
+     *
      * @return project list
      */
     public Map<String, Object> queryAllProjectList() {
         Map<String, Object> result = new HashMap<>();
         List<Project> projects = projectMapper.selectList(null);
-        List<ProcessDefinition>  processDefinitions = 
processDefinitionMapper.selectList(null);
-        if(projects != null){
-            Set set = new HashSet<>();
-            for (ProcessDefinition processDefinition : processDefinitions){
+        List<ProcessDefinition> processDefinitions = 
processDefinitionMapper.selectList(null);
+        if (projects != null) {
+            Set<Integer> set = new HashSet<>();
+            for (ProcessDefinition processDefinition : processDefinitions) {
                 set.add(processDefinition.getProjectId());
             }
-            List<Project> tempDeletelist = new ArrayList<Project>();
+            List<Project> tempDeletelist = new ArrayList<>();
             for (Project project : projects) {
-                if(!set.contains(project.getId())){
+                if (!set.contains(project.getId())) {
                     tempDeletelist.add(project);
                 }
             }
             projects.removeAll(tempDeletelist);
         }
         result.put(Constants.DATA_LIST, projects);
-        putMsg(result,Status.SUCCESS);
+        putMsg(result, Status.SUCCESS);
         return result;
     }
 
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 ee127d6..3d8ae91 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
@@ -18,6 +18,7 @@ package org.apache.dolphinscheduler.api.service;
 
 import org.apache.dolphinscheduler.api.enums.Status;
 import org.apache.dolphinscheduler.api.service.impl.DataAnalysisServiceImpl;
+import org.apache.dolphinscheduler.api.service.impl.ProjectServiceImpl;
 import org.apache.dolphinscheduler.common.Constants;
 import org.apache.dolphinscheduler.common.enums.CommandType;
 import org.apache.dolphinscheduler.common.enums.ExecutionStatus;
@@ -59,7 +60,7 @@ public class DataAnalysisServiceTest {
     ProjectMapper projectMapper;
 
     @Mock
-    ProjectService projectService;
+    ProjectServiceImpl projectService;
 
     @Mock
     ProcessInstanceMapper processInstanceMapper;
diff --git 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ExecutorService2Test.java
 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ExecutorService2Test.java
index 59523bd..a4c0c6b 100644
--- 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ExecutorService2Test.java
+++ 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ExecutorService2Test.java
@@ -16,17 +16,36 @@
  */
 package org.apache.dolphinscheduler.api.service;
 
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
 import org.apache.dolphinscheduler.api.enums.Status;
+import org.apache.dolphinscheduler.api.service.impl.ProjectServiceImpl;
 import org.apache.dolphinscheduler.common.Constants;
 import org.apache.dolphinscheduler.common.enums.CommandType;
 import org.apache.dolphinscheduler.common.enums.Priority;
 import org.apache.dolphinscheduler.common.enums.ReleaseState;
 import org.apache.dolphinscheduler.common.enums.RunMode;
 import org.apache.dolphinscheduler.common.model.Server;
-import org.apache.dolphinscheduler.dao.entity.*;
+import org.apache.dolphinscheduler.dao.entity.Command;
+import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
+import org.apache.dolphinscheduler.dao.entity.Project;
+import org.apache.dolphinscheduler.dao.entity.Schedule;
+import org.apache.dolphinscheduler.dao.entity.Tenant;
+import org.apache.dolphinscheduler.dao.entity.User;
 import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionMapper;
 import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
 import org.apache.dolphinscheduler.service.process.ProcessService;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -36,13 +55,6 @@ import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.junit.MockitoJUnitRunner;
 
-import java.text.ParseException;
-import java.util.*;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.times;
-
 /**
  * test for ExecutorService
  */
@@ -62,7 +74,7 @@ public class ExecutorService2Test {
     private ProjectMapper projectMapper;
 
     @Mock
-    private ProjectService projectService;
+    private ProjectServiceImpl projectService;
 
     @Mock
     private MonitorService monitorService;
@@ -84,7 +96,7 @@ public class ExecutorService2Test {
     private String cronTime;
 
     @Before
-    public void init(){
+    public void init() {
         // user
         loginUser.setId(userId);
 
@@ -111,7 +123,6 @@ public class ExecutorService2Test {
 
     /**
      * not complement
-     * @throws ParseException
      */
     @Test
     public void testNoComplement() throws ParseException {
@@ -125,13 +136,12 @@ public class ExecutorService2Test {
                     Priority.LOW, Constants.DEFAULT_WORKER_GROUP, 110);
             Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS));
             verify(processService, times(1)).createCommand(any(Command.class));
-        }catch (Exception e){
+        } catch (Exception e) {
         }
     }
 
     /**
      * date error
-     * @throws ParseException
      */
     @Test
     public void testDateError() throws ParseException {
@@ -145,13 +155,12 @@ public class ExecutorService2Test {
                     Priority.LOW, Constants.DEFAULT_WORKER_GROUP, 110);
             Assert.assertEquals(Status.START_PROCESS_INSTANCE_ERROR, 
result.get(Constants.STATUS));
             verify(processService, times(0)).createCommand(any(Command.class));
-        }catch (Exception e){
+        } catch (Exception e) {
         }
     }
 
     /**
      * serial
-     * @throws ParseException
      */
     @Test
     public void testSerial() throws ParseException {
@@ -165,17 +174,16 @@ public class ExecutorService2Test {
                     Priority.LOW, Constants.DEFAULT_WORKER_GROUP, 110);
             Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS));
             verify(processService, times(1)).createCommand(any(Command.class));
-        }catch (Exception e){
+        } catch (Exception e) {
         }
     }
 
     /**
      * without schedule
-     * @throws ParseException
      */
     @Test
     public void testParallelWithOutSchedule() throws ParseException {
-        try{
+        try {
             
Mockito.when(processService.queryReleaseSchedulerListByProcessDefinitionId(processDefinitionId)).thenReturn(zeroSchedulerList());
             Map<String, Object> result = 
executorService.execProcessInstance(loginUser, projectName,
                     processDefinitionId, cronTime, CommandType.COMPLEMENT_DATA,
@@ -185,17 +193,16 @@ public class ExecutorService2Test {
                     Priority.LOW, Constants.DEFAULT_WORKER_GROUP, 110);
             Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS));
             verify(processService, 
times(31)).createCommand(any(Command.class));
-        }catch (Exception e){
+        } catch (Exception e) {
         }
     }
 
     /**
      * with schedule
-     * @throws ParseException
      */
     @Test
     public void testParallelWithSchedule() throws ParseException {
-        try{
+        try {
             
Mockito.when(processService.queryReleaseSchedulerListByProcessDefinitionId(processDefinitionId)).thenReturn(oneSchedulerList());
             Map<String, Object> result = 
executorService.execProcessInstance(loginUser, projectName,
                     processDefinitionId, cronTime, CommandType.COMPLEMENT_DATA,
@@ -205,13 +212,13 @@ public class ExecutorService2Test {
                     Priority.LOW, Constants.DEFAULT_WORKER_GROUP, 110);
             Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS));
             verify(processService, 
times(15)).createCommand(any(Command.class));
-        }catch (Exception e){
+        } catch (Exception e) {
         }
     }
 
 
     @Test
-    public void testNoMsterServers() throws ParseException{
+    public void testNoMsterServers() throws ParseException {
         Mockito.when(monitorService.getServerListFromZK(true)).thenReturn(new 
ArrayList<Server>());
 
         Map<String, Object> result = 
executorService.execProcessInstance(loginUser, projectName,
@@ -220,11 +227,11 @@ public class ExecutorService2Test {
                 null, null, 0,
                 "", "", RunMode.RUN_MODE_PARALLEL,
                 Priority.LOW, Constants.DEFAULT_WORKER_GROUP, 110);
-        
Assert.assertEquals(result.get(Constants.STATUS),Status.MASTER_NOT_EXISTS);
+        Assert.assertEquals(result.get(Constants.STATUS), 
Status.MASTER_NOT_EXISTS);
 
     }
 
-    private List<Server> getMasterServersList(){
+    private List<Server> getMasterServersList() {
         List<Server> masterServerList = new ArrayList<>();
         Server masterServer1 = new Server();
         masterServer1.setId(1);
@@ -242,11 +249,11 @@ public class ExecutorService2Test {
 
     }
 
-    private List<Schedule> zeroSchedulerList(){
+    private List<Schedule> zeroSchedulerList() {
         return Collections.EMPTY_LIST;
     }
 
-    private List<Schedule> oneSchedulerList(){
+    private List<Schedule> oneSchedulerList() {
         List<Schedule> schedulerList = new LinkedList<>();
         Schedule schedule = new Schedule();
         schedule.setCrontab("0 0 0 1/2 * ?");
@@ -254,7 +261,7 @@ public class ExecutorService2Test {
         return schedulerList;
     }
 
-    private Map<String, Object> checkProjectAndAuth(){
+    private Map<String, Object> checkProjectAndAuth() {
         Map<String, Object> result = new HashMap<>();
         result.put(Constants.STATUS, Status.SUCCESS);
         return result;
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 67221c5..38dbdf4 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
@@ -16,19 +16,10 @@
  */
 package org.apache.dolphinscheduler.api.service;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.dolphinscheduler.api.dto.ProcessMeta;
 import org.apache.dolphinscheduler.api.enums.Status;
 import 
org.apache.dolphinscheduler.api.service.impl.ProcessDefinitionServiceImpl;
+import org.apache.dolphinscheduler.api.service.impl.ProjectServiceImpl;
 import org.apache.dolphinscheduler.common.Constants;
 import org.apache.dolphinscheduler.common.enums.ExecutionStatus;
 import org.apache.dolphinscheduler.common.enums.FailureStrategy;
@@ -54,7 +45,19 @@ import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
 import org.apache.dolphinscheduler.dao.mapper.ScheduleMapper;
 import org.apache.dolphinscheduler.dao.mapper.TaskInstanceMapper;
 import org.apache.dolphinscheduler.service.process.ProcessService;
+
 import org.apache.http.entity.ContentType;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -81,7 +84,7 @@ public class ProcessDefinitionServiceTest {
     private ProjectMapper projectMapper;
 
     @Mock
-    private ProjectService projectService;
+    private ProjectServiceImpl projectService;
 
     @Mock
     private ScheduleMapper scheduleMapper;
@@ -132,17 +135,17 @@ public class ProcessDefinitionServiceTest {
         putMsg(result, Status.PROJECT_NOT_FOUNT, projectName);
 
         //project not found
-        
Mockito.when(projectService.checkProjectAndAuth(loginUser,project,projectName)).thenReturn(result);
-        Map<String, Object> map = 
processDefinitionService.queryProcessDefinitionList(loginUser,"project_test1");
+        Mockito.when(projectService.checkProjectAndAuth(loginUser, project, 
projectName)).thenReturn(result);
+        Map<String, Object> map = 
processDefinitionService.queryProcessDefinitionList(loginUser, "project_test1");
         Assert.assertEquals(Status.PROJECT_NOT_FOUNT, 
map.get(Constants.STATUS));
 
         //project check auth success
         putMsg(result, Status.SUCCESS, projectName);
-        
Mockito.when(projectService.checkProjectAndAuth(loginUser,project,projectName)).thenReturn(result);
+        Mockito.when(projectService.checkProjectAndAuth(loginUser, project, 
projectName)).thenReturn(result);
         List<ProcessDefinition> resourceList = new ArrayList<>();
         resourceList.add(getProcessDefinition());
         
Mockito.when(processDefineMapper.queryAllDefinitionList(project.getId())).thenReturn(resourceList);
-        Map<String, Object> checkSuccessRes = 
processDefinitionService.queryProcessDefinitionList(loginUser,"project_test1");
+        Map<String, Object> checkSuccessRes = 
processDefinitionService.queryProcessDefinitionList(loginUser, "project_test1");
         Assert.assertEquals(Status.SUCCESS, 
checkSuccessRes.get(Constants.STATUS));
     }
 
@@ -161,8 +164,8 @@ public class ProcessDefinitionServiceTest {
         putMsg(result, Status.PROJECT_NOT_FOUNT, projectName);
 
         //project not found
-        
Mockito.when(projectService.checkProjectAndAuth(loginUser,project,projectName)).thenReturn(result);
-        Map<String, Object> map = 
processDefinitionService.queryProcessDefinitionListPaging(loginUser, 
"project_test1", "",1, 5,0);
+        Mockito.when(projectService.checkProjectAndAuth(loginUser, project, 
projectName)).thenReturn(result);
+        Map<String, Object> map = 
processDefinitionService.queryProcessDefinitionListPaging(loginUser, 
"project_test1", "", 1, 5, 0);
         Assert.assertEquals(Status.PROJECT_NOT_FOUNT, 
map.get(Constants.STATUS));
 
     }
@@ -182,14 +185,14 @@ public class ProcessDefinitionServiceTest {
         putMsg(result, Status.PROJECT_NOT_FOUNT, projectName);
 
         //project check auth fail
-        
Mockito.when(projectService.checkProjectAndAuth(loginUser,project,projectName)).thenReturn(result);
+        Mockito.when(projectService.checkProjectAndAuth(loginUser, project, 
projectName)).thenReturn(result);
         Map<String, Object> map = 
processDefinitionService.queryProcessDefinitionById(loginUser,
                 "project_test1", 1);
         Assert.assertEquals(Status.PROJECT_NOT_FOUNT, 
map.get(Constants.STATUS));
 
         //project check auth success, instance not exist
         putMsg(result, Status.SUCCESS, projectName);
-        
Mockito.when(projectService.checkProjectAndAuth(loginUser,project,projectName)).thenReturn(result);
+        Mockito.when(projectService.checkProjectAndAuth(loginUser, project, 
projectName)).thenReturn(result);
         Mockito.when(processDefineMapper.selectById(1)).thenReturn(null);
         Map<String, Object> instanceNotexitRes = 
processDefinitionService.queryProcessDefinitionById(loginUser,
                 "project_test1", 1);
@@ -203,7 +206,7 @@ public class ProcessDefinitionServiceTest {
     }
 
     @Test
-    public void testCopyProcessDefinition()  throws Exception{
+    public void testCopyProcessDefinition() throws Exception {
         String projectName = "project_test1";
         
Mockito.when(projectMapper.queryByName(projectName)).thenReturn(getProject(projectName));
 
@@ -218,7 +221,7 @@ public class ProcessDefinitionServiceTest {
         Map<String, Object> result = new HashMap<>();
         //project check auth success, instance not exist
         putMsg(result, Status.SUCCESS, projectName);
-        
Mockito.when(projectService.checkProjectAndAuth(loginUser,project,projectName)).thenReturn(result);
+        Mockito.when(projectService.checkProjectAndAuth(loginUser, project, 
projectName)).thenReturn(result);
 
         ProcessDefinition definition = getProcessDefinition();
         
definition.setLocations("{\"tasks-36196\":{\"name\":\"ssh_test1\",\"targetarr\":\"\",\"x\":141,\"y\":70}}");
@@ -239,13 +242,14 @@ public class ProcessDefinitionServiceTest {
                 definition.getLocations(),
                 definition.getConnects())).thenReturn(createProcessResult);
 
-        Map<String, Object> successRes = 
processDefinitionService.batchCopyProcessDefinition(loginUser,"project_test1",
-                 "46",1);
+        Map<String, Object> successRes = 
processDefinitionService.batchCopyProcessDefinition(loginUser, "project_test1",
+                "46", 1);
+
         Assert.assertEquals(Status.SUCCESS, successRes.get(Constants.STATUS));
     }
 
     @Test
-    public void testBatchMoveProcessDefinition()  throws Exception{
+    public void testBatchMoveProcessDefinition() throws Exception {
         String projectName = "project_test1";
         
Mockito.when(projectMapper.queryByName(projectName)).thenReturn(getProject(projectName));
 
@@ -268,8 +272,8 @@ public class ProcessDefinitionServiceTest {
         Map<String, Object> result2 = new HashMap<>();
         putMsg(result2, Status.SUCCESS, targetProject.getName());
 
-        
Mockito.when(projectService.checkProjectAndAuth(loginUser,project,projectName)).thenReturn(result);
-        
Mockito.when(projectService.checkProjectAndAuth(loginUser,targetProject,targetProject.getName())).thenReturn(result2);
+        Mockito.when(projectService.checkProjectAndAuth(loginUser, project, 
projectName)).thenReturn(result);
+        Mockito.when(projectService.checkProjectAndAuth(loginUser, 
targetProject, targetProject.getName())).thenReturn(result2);
 
         ProcessDefinition definition = getProcessDefinition();
         
definition.setLocations("{\"tasks-36196\":{\"name\":\"ssh_test1\",\"targetarr\":\"\",\"x\":141,\"y\":70}}");
@@ -282,8 +286,8 @@ public class ProcessDefinitionServiceTest {
         putMsg(result, Status.SUCCESS);
 
 
-        Map<String, Object> successRes = 
processDefinitionService.batchMoveProcessDefinition(loginUser,"project_test1",
-                "46",2);
+        Map<String, Object> successRes = 
processDefinitionService.batchMoveProcessDefinition(loginUser, "project_test1",
+                "46", 2);
 
         Assert.assertEquals(Status.SUCCESS, successRes.get(Constants.STATUS));
     }
@@ -301,13 +305,13 @@ public class ProcessDefinitionServiceTest {
         //project check auth fail
         Map<String, Object> result = new HashMap<>();
         putMsg(result, Status.PROJECT_NOT_FOUNT, projectName);
-        
Mockito.when(projectService.checkProjectAndAuth(loginUser,project,projectName)).thenReturn(result);
+        Mockito.when(projectService.checkProjectAndAuth(loginUser, project, 
projectName)).thenReturn(result);
         Map<String, Object> map = 
processDefinitionService.deleteProcessDefinitionById(loginUser, 
"project_test1", 6);
         Assert.assertEquals(Status.PROJECT_NOT_FOUNT, 
map.get(Constants.STATUS));
 
         //project check auth success, instance not exist
         putMsg(result, Status.SUCCESS, projectName);
-        
Mockito.when(projectService.checkProjectAndAuth(loginUser,project,projectName)).thenReturn(result);
+        Mockito.when(projectService.checkProjectAndAuth(loginUser, project, 
projectName)).thenReturn(result);
         Mockito.when(processDefineMapper.selectById(1)).thenReturn(null);
         Map<String, Object> instanceNotexitRes = 
processDefinitionService.deleteProcessDefinitionById(loginUser,
                 "project_test1", 1);
@@ -381,7 +385,7 @@ public class ProcessDefinitionServiceTest {
         //project check auth fail
         Map<String, Object> result = new HashMap<>();
         putMsg(result, Status.PROJECT_NOT_FOUNT, projectName);
-        
Mockito.when(projectService.checkProjectAndAuth(loginUser,project,projectName)).thenReturn(result);
+        Mockito.when(projectService.checkProjectAndAuth(loginUser, project, 
projectName)).thenReturn(result);
         Map<String, Object> map = 
processDefinitionService.releaseProcessDefinition(loginUser, "project_test1",
                 6, ReleaseState.OFFLINE.getCode());
         Assert.assertEquals(Status.PROJECT_NOT_FOUNT, 
map.get(Constants.STATUS));
@@ -424,20 +428,20 @@ public class ProcessDefinitionServiceTest {
         //project check auth fail
         Map<String, Object> result = new HashMap<>();
         putMsg(result, Status.PROJECT_NOT_FOUNT, projectName);
-        
Mockito.when(projectService.checkProjectAndAuth(loginUser,project,projectName)).thenReturn(result);
+        Mockito.when(projectService.checkProjectAndAuth(loginUser, project, 
projectName)).thenReturn(result);
         Map<String, Object> map = 
processDefinitionService.verifyProcessDefinitionName(loginUser,
                 "project_test1", "test_pdf");
         Assert.assertEquals(Status.PROJECT_NOT_FOUNT, 
map.get(Constants.STATUS));
 
         //project check auth success, process not exist
         putMsg(result, Status.SUCCESS, projectName);
-        
Mockito.when(processDefineMapper.queryByDefineName(project.getId(),"test_pdf")).thenReturn(null);
+        Mockito.when(processDefineMapper.queryByDefineName(project.getId(), 
"test_pdf")).thenReturn(null);
         Map<String, Object> processNotExistRes = 
processDefinitionService.verifyProcessDefinitionName(loginUser,
                 "project_test1", "test_pdf");
         Assert.assertEquals(Status.SUCCESS, 
processNotExistRes.get(Constants.STATUS));
 
         //process exist
-        
Mockito.when(processDefineMapper.queryByDefineName(project.getId(),"test_pdf")).thenReturn(getProcessDefinition());
+        Mockito.when(processDefineMapper.queryByDefineName(project.getId(), 
"test_pdf")).thenReturn(getProcessDefinition());
         Map<String, Object> processExistRes = 
processDefinitionService.verifyProcessDefinitionName(loginUser,
                 "project_test1", "test_pdf");
         Assert.assertEquals(Status.PROCESS_INSTANCE_EXIST, 
processExistRes.get(Constants.STATUS));
@@ -462,7 +466,7 @@ public class ProcessDefinitionServiceTest {
         Assert.assertEquals(Status.DATA_IS_NULL, 
taskNotEmptyRes.get(Constants.STATUS));
 
         //json abnormal
-        String abnormalJson = processDefinitionJson.replaceAll("SHELL","");
+        String abnormalJson = processDefinitionJson.replaceAll("SHELL", "");
         processData = JSONUtils.parseObject(abnormalJson, ProcessData.class);
         Map<String, Object> abnormalTaskRes = 
processDefinitionService.checkProcessNodeList(processData, abnormalJson);
         Assert.assertEquals(Status.PROCESS_NODE_S_PARAMETER_INVALID, 
abnormalTaskRes.get(Constants.STATUS));
@@ -587,7 +591,7 @@ public class ProcessDefinitionServiceTest {
                 
"\"timeout\":{\"strategy\":\"\",\"interval\":null,\"enable\":false},\"taskInstancePriority\":\"MEDIUM\",\"workerGroupId\":\\\"default\\\\,"
 +
                 "\"preTasks\":[]}],\"tenantId\":1,\"timeout\":0}";
 
-        FileUtils.writeStringToFile(new File("/tmp/task.json"),processJson);
+        FileUtils.writeStringToFile(new File("/tmp/task.json"), processJson);
 
         File file = new File("/tmp/task.json");
 
@@ -639,7 +643,7 @@ public class ProcessDefinitionServiceTest {
     }
 
     @Test
-    public void testUpdateProcessDefinition () {
+    public void testUpdateProcessDefinition() {
         User loginUser = new User();
         loginUser.setId(1);
         loginUser.setUserType(UserType.ADMIN_USER);
@@ -662,20 +666,22 @@ public class ProcessDefinitionServiceTest {
 
     /**
      * get mock datasource
+     *
      * @return DataSource
      */
-    private DataSource getDataSource(){
+    private DataSource getDataSource() {
         DataSource dataSource = new DataSource();
         dataSource.setId(2);
         dataSource.setName("test");
-        return  dataSource;
+        return dataSource;
     }
 
     /**
      * get mock processDefinition
+     *
      * @return ProcessDefinition
      */
-    private ProcessDefinition getProcessDefinition(){
+    private ProcessDefinition getProcessDefinition() {
 
         ProcessDefinition processDefinition = new ProcessDefinition();
         processDefinition.setId(46);
@@ -684,37 +690,40 @@ public class ProcessDefinitionServiceTest {
         processDefinition.setTenantId(1);
         processDefinition.setDescription("");
 
-        return  processDefinition;
+        return processDefinition;
     }
 
     /**
      * get mock Project
+     *
      * @param projectName projectName
      * @return Project
      */
-    private Project getProject(String projectName){
+    private Project getProject(String projectName) {
         Project project = new Project();
         project.setId(1);
         project.setName(projectName);
         project.setUserId(1);
-        return  project;
+        return project;
     }
 
     /**
      * get mock Project
+     *
      * @param projectId projectId
      * @return Project
      */
-    private Project getProjectById(int projectId){
+    private Project getProjectById(int projectId) {
         Project project = new Project();
         project.setId(1);
         project.setName("project_test2");
         project.setUserId(1);
-        return  project;
+        return project;
     }
 
     /**
      * get mock schedule
+     *
      * @return schedule
      */
     private Schedule getSchedule() {
@@ -737,6 +746,7 @@ public class ProcessDefinitionServiceTest {
 
     /**
      * get mock processMeta
+     *
      * @return processMeta
      */
     private ProcessMeta getProcessMeta() {
@@ -768,4 +778,4 @@ public class ProcessDefinitionServiceTest {
             result.put(Constants.MSG, status.getMsg());
         }
     }
-}
\ No newline at end of file
+}
diff --git 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessInstanceServiceTest.java
 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessInstanceServiceTest.java
index aad884d..82031ca 100644
--- 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessInstanceServiceTest.java
+++ 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessInstanceServiceTest.java
@@ -19,9 +19,9 @@ package org.apache.dolphinscheduler.api.service;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.when;
 
-import org.apache.dolphinscheduler.api.ApiApplicationServer;
 import org.apache.dolphinscheduler.api.enums.Status;
 import org.apache.dolphinscheduler.api.service.impl.LoggerServiceImpl;
+import org.apache.dolphinscheduler.api.service.impl.ProjectServiceImpl;
 import org.apache.dolphinscheduler.api.utils.Result;
 import org.apache.dolphinscheduler.common.Constants;
 import org.apache.dolphinscheduler.common.enums.CommandType;
@@ -60,12 +60,10 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.junit.MockitoJUnitRunner;
-import org.springframework.boot.test.context.SpringBootTest;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 @RunWith(MockitoJUnitRunner.Silent.class)
-@SpringBootTest(classes = ApiApplicationServer.class)
 public class ProcessInstanceServiceTest {
 
     @InjectMocks
@@ -75,7 +73,7 @@ public class ProcessInstanceServiceTest {
     ProjectMapper projectMapper;
 
     @Mock
-    ProjectService projectService;
+    ProjectServiceImpl projectService;
 
     @Mock
     ProcessService processService;
@@ -185,8 +183,6 @@ public class ProcessInstanceServiceTest {
         putMsg(result, Status.SUCCESS, projectName);
         Project project = getProject(projectName);
         ProcessInstance processInstance = getProcessInstance();
-        List<ProcessInstance> processInstanceList = new ArrayList<>();
-        processInstanceList.add(processInstance);
         when(projectMapper.queryByName(projectName)).thenReturn(project);
         when(projectService.checkProjectAndAuth(loginUser, project, 
projectName)).thenReturn(result);
         when(usersService.queryUser(loginUser.getId())).thenReturn(loginUser);
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 742d18d..99ec76a 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
@@ -16,9 +16,8 @@
  */
 package org.apache.dolphinscheduler.api.service;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.dolphinscheduler.api.enums.Status;
+import org.apache.dolphinscheduler.api.service.impl.ProjectServiceImpl;
 import org.apache.dolphinscheduler.api.utils.PageInfo;
 import org.apache.dolphinscheduler.common.Constants;
 import org.apache.dolphinscheduler.common.enums.UserType;
@@ -30,7 +29,12 @@ import org.apache.dolphinscheduler.dao.entity.User;
 import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionMapper;
 import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
 import org.apache.dolphinscheduler.dao.mapper.ProjectUserMapper;
-import org.apache.dolphinscheduler.dao.mapper.UserMapper;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -43,10 +47,8 @@ import org.mockito.junit.MockitoJUnitRunner;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 @RunWith(MockitoJUnitRunner.class)
 public class ProjectServiceTest {
@@ -55,18 +57,18 @@ public class ProjectServiceTest {
     private static final Logger logger = 
LoggerFactory.getLogger(ProjectServiceTest.class);
 
     @InjectMocks
-    private ProjectService projectService;
+    private ProjectServiceImpl projectService;
+
     @Mock
     private ProjectMapper projectMapper;
-    @Mock
-    private UserMapper userMapper;
+
     @Mock
     private ProjectUserMapper projectUserMapper;
+
     @Mock
     private ProcessDefinitionMapper processDefinitionMapper;
 
 
-
     private String projectName = "ProjectServiceTest";
 
     private String userName = "ProjectServiceTest";
@@ -78,106 +80,109 @@ public class ProjectServiceTest {
 
 
     @After
-    public void after(){
+    public void after() {
 
     }
 
     @Test
-    public void testCreateProject(){
+    public void testCreateProject() {
 
-        User loginUser  = getLoginUser();
+        User loginUser = getLoginUser();
         loginUser.setId(1);
         Map<String, Object> result = projectService.createProject(loginUser, 
projectName, getDesc());
         logger.info(result.toString());
-        
Assert.assertEquals(Status.REQUEST_PARAMS_NOT_VALID_ERROR,result.get(Constants.STATUS));
+        Assert.assertEquals(Status.REQUEST_PARAMS_NOT_VALID_ERROR, 
result.get(Constants.STATUS));
 
         //project name exist
         
Mockito.when(projectMapper.queryByName(projectName)).thenReturn(getProject());
         result = projectService.createProject(loginUser, projectName, 
projectName);
         logger.info(result.toString());
-        
Assert.assertEquals(Status.PROJECT_ALREADY_EXISTS,result.get(Constants.STATUS));
+        Assert.assertEquals(Status.PROJECT_ALREADY_EXISTS, 
result.get(Constants.STATUS));
 
         //success
         
Mockito.when(projectMapper.insert(Mockito.any(Project.class))).thenReturn(1);
         result = projectService.createProject(loginUser, "test", "test");
         logger.info(result.toString());
-        Assert.assertEquals(Status.SUCCESS,result.get(Constants.STATUS));
+        Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS));
 
 
     }
+
     @Test
-    public void testQueryById(){
+    public void testQueryById() {
 
         //not exist
         Map<String, Object> result = 
projectService.queryById(Integer.MAX_VALUE);
-        
Assert.assertEquals(Status.PROJECT_NOT_FOUNT,result.get(Constants.STATUS));
+        Assert.assertEquals(Status.PROJECT_NOT_FOUNT, 
result.get(Constants.STATUS));
         logger.info(result.toString());
 
         //success
         Mockito.when(projectMapper.selectById(1)).thenReturn(getProject());
         result = projectService.queryById(1);
         logger.info(result.toString());
-        Assert.assertEquals(Status.SUCCESS,result.get(Constants.STATUS));
+        Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS));
 
     }
+
     @Test
-    public void testCheckProjectAndAuth(){
+    public void testCheckProjectAndAuth() {
 
         Mockito.when(projectUserMapper.queryProjectRelation(1, 
1)).thenReturn(getProjectUser());
         User loginUser = getLoginUser();
 
-        Map<String, Object> result = 
projectService.checkProjectAndAuth(loginUser,null,projectName);
+        Map<String, Object> result = 
projectService.checkProjectAndAuth(loginUser, null, projectName);
         logger.info(result.toString());
-        Status status = (Status)result.get(Constants.STATUS);
-        
Assert.assertEquals(Status.PROJECT_NOT_FOUNT,result.get(Constants.STATUS));
+        Status status = (Status) result.get(Constants.STATUS);
+        Assert.assertEquals(Status.PROJECT_NOT_FOUNT, 
result.get(Constants.STATUS));
 
         Project project = getProject();
         //USER_NO_OPERATION_PROJECT_PERM
         project.setUserId(2);
-        result = 
projectService.checkProjectAndAuth(loginUser,project,projectName);
+        result = projectService.checkProjectAndAuth(loginUser, project, 
projectName);
         logger.info(result.toString());
-        
Assert.assertEquals(Status.USER_NO_OPERATION_PROJECT_PERM,result.get(Constants.STATUS));
+        Assert.assertEquals(Status.USER_NO_OPERATION_PROJECT_PERM, 
result.get(Constants.STATUS));
 
         //success
         project.setUserId(1);
-        result = 
projectService.checkProjectAndAuth(loginUser,project,projectName);
+        result = projectService.checkProjectAndAuth(loginUser, project, 
projectName);
         logger.info(result.toString());
-        Assert.assertEquals(Status.SUCCESS,result.get(Constants.STATUS));
+        Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS));
 
     }
 
     @Test
-    public void testHasProjectAndPerm(){
+    public void testHasProjectAndPerm() {
 
-       // Mockito.when(projectUserMapper.queryProjectRelation(1, 
1)).thenReturn(getProjectUser());
+        // Mockito.when(projectUserMapper.queryProjectRelation(1, 
1)).thenReturn(getProjectUser());
         User loginUser = getLoginUser();
         Project project = getProject();
         Map<String, Object> result = new HashMap<>();
         // not exist user
         User tempUser = new User();
         tempUser.setId(Integer.MAX_VALUE);
-        boolean checkResult = 
projectService.hasProjectAndPerm(tempUser,project,result);
+        boolean checkResult = projectService.hasProjectAndPerm(tempUser, 
project, result);
         logger.info(result.toString());
         Assert.assertFalse(checkResult);
 
         //success
         result = new HashMap<>();
         project.setUserId(1);
-        checkResult = 
projectService.hasProjectAndPerm(loginUser,project,result);
+        checkResult = projectService.hasProjectAndPerm(loginUser, project, 
result);
         logger.info(result.toString());
         Assert.assertTrue(checkResult);
     }
+
     @Test
-    public void testQueryProjectListPaging(){
+    public void testQueryProjectListPaging() {
 
-        IPage<Project> page = new  Page<>(1,10);
+        IPage<Project> page = new Page<>(1, 10);
         page.setRecords(getList());
         page.setTotal(1L);
         
Mockito.when(projectMapper.queryProjectListPaging(Mockito.any(Page.class), 
Mockito.eq(1), Mockito.eq(projectName))).thenReturn(page);
         User loginUser = getLoginUser();
 
         // project owner
-        Map<String, Object> result  =  
projectService.queryProjectListPaging(loginUser,10,1,projectName);
+        Map<String, Object> result = 
projectService.queryProjectListPaging(loginUser, 10, 1, projectName);
         logger.info(result.toString());
         PageInfo<Project> pageInfo = (PageInfo<Project>) 
result.get(Constants.DATA_LIST);
         Assert.assertTrue(CollectionUtils.isNotEmpty(pageInfo.getLists()));
@@ -185,83 +190,85 @@ public class ProjectServiceTest {
         //admin
         
Mockito.when(projectMapper.queryProjectListPaging(Mockito.any(Page.class), 
Mockito.eq(0), Mockito.eq(projectName))).thenReturn(page);
         loginUser.setUserType(UserType.ADMIN_USER);
-        result  =  
projectService.queryProjectListPaging(loginUser,10,1,projectName);
+        result = projectService.queryProjectListPaging(loginUser, 10, 1, 
projectName);
         logger.info(result.toString());
         pageInfo = (PageInfo<Project>) result.get(Constants.DATA_LIST);
         Assert.assertTrue(CollectionUtils.isNotEmpty(pageInfo.getLists()));
     }
+
     @Test
-    public void testDeleteProject(){
+    public void testDeleteProject() {
 
         Mockito.when(projectMapper.selectById(1)).thenReturn(getProject());
         User loginUser = getLoginUser();
         //PROJECT_NOT_FOUNT
-        Map<String, Object> result= projectService.deleteProject(loginUser,12);
+        Map<String, Object> result = projectService.deleteProject(loginUser, 
12);
         logger.info(result.toString());
-        
Assert.assertEquals(Status.PROJECT_NOT_FOUNT,result.get(Constants.STATUS));
+        Assert.assertEquals(Status.PROJECT_NOT_FOUNT, 
result.get(Constants.STATUS));
         loginUser.setId(2);
         //USER_NO_OPERATION_PROJECT_PERM
-        result= projectService.deleteProject(loginUser,1);
+        result = projectService.deleteProject(loginUser, 1);
         logger.info(result.toString());
-        
Assert.assertEquals(Status.USER_NO_OPERATION_PROJECT_PERM,result.get(Constants.STATUS));
+        Assert.assertEquals(Status.USER_NO_OPERATION_PROJECT_PERM, 
result.get(Constants.STATUS));
 
         //DELETE_PROJECT_ERROR_DEFINES_NOT_NULL
         
Mockito.when(processDefinitionMapper.queryAllDefinitionList(1)).thenReturn(getProcessDefinitions());
         loginUser.setUserType(UserType.ADMIN_USER);
-        result= projectService.deleteProject(loginUser,1);
+        result = projectService.deleteProject(loginUser, 1);
         logger.info(result.toString());
-        
Assert.assertEquals(Status.DELETE_PROJECT_ERROR_DEFINES_NOT_NULL,result.get(Constants.STATUS));
+        Assert.assertEquals(Status.DELETE_PROJECT_ERROR_DEFINES_NOT_NULL, 
result.get(Constants.STATUS));
 
         //success
         Mockito.when(projectMapper.deleteById(1)).thenReturn(1);
         
Mockito.when(processDefinitionMapper.queryAllDefinitionList(1)).thenReturn(new 
ArrayList<>());
-        result= projectService.deleteProject(loginUser,1);
+        result = projectService.deleteProject(loginUser, 1);
         logger.info(result.toString());
-        Assert.assertEquals(Status.SUCCESS,result.get(Constants.STATUS));
+        Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS));
 
 
     }
 
     @Test
-    public void testUpdate(){
+    public void testUpdate() {
 
         User loginUser = getLoginUser();
         Project project = getProject();
         project.setId(2);
         
Mockito.when(projectMapper.queryByName(projectName)).thenReturn(project);
-        Mockito.when( projectMapper.selectById(1)).thenReturn(getProject());
+        Mockito.when(projectMapper.selectById(1)).thenReturn(getProject());
         // PROJECT_NOT_FOUNT
-        Map<String, Object> result = 
projectService.update(loginUser,12,projectName,"desc");
+        Map<String, Object> result = projectService.update(loginUser, 12, 
projectName, "desc");
         logger.info(result.toString());
-        
Assert.assertEquals(Status.PROJECT_NOT_FOUNT,result.get(Constants.STATUS));
+        Assert.assertEquals(Status.PROJECT_NOT_FOUNT, 
result.get(Constants.STATUS));
 
         //PROJECT_ALREADY_EXISTS
-        result = projectService.update(loginUser,1,projectName,"desc");
+        result = projectService.update(loginUser, 1, projectName, "desc");
         logger.info(result.toString());
-        
Assert.assertEquals(Status.PROJECT_ALREADY_EXISTS,result.get(Constants.STATUS));
+        Assert.assertEquals(Status.PROJECT_ALREADY_EXISTS, 
result.get(Constants.STATUS));
 
         //success
         project.setUserId(1);
         
Mockito.when(projectMapper.updateById(Mockito.any(Project.class))).thenReturn(1);
-        result = projectService.update(loginUser,1,"test","desc");
+        result = projectService.update(loginUser, 1, "test", "desc");
         logger.info(result.toString());
-        Assert.assertEquals(Status.SUCCESS,result.get(Constants.STATUS));
+        Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS));
 
     }
+
     @Test
-    public void testQueryAuthorizedProject(){
+    public void testQueryAuthorizedProject() {
 
         User loginUser = getLoginUser();
 
         
Mockito.when(projectMapper.queryAuthedProjectListByUserId(1)).thenReturn(getList());
         //USER_NO_OPERATION_PERM
-        Map<String, Object> result = 
projectService.queryAuthorizedProject(loginUser,3);
+        Map<String, Object> result = 
projectService.queryAuthorizedProject(loginUser, 3);
         logger.info(result.toString());
-        
Assert.assertEquals(Status.USER_NO_OPERATION_PERM,result.get(Constants.STATUS));
+        Assert.assertEquals(Status.USER_NO_OPERATION_PERM, 
result.get(Constants.STATUS));
 
         //success
         loginUser.setUserType(UserType.ADMIN_USER);
-        result = projectService.queryAuthorizedProject(loginUser,1);
+        result = projectService.queryAuthorizedProject(loginUser, 1);
         logger.info(result.toString());
         List<Project> projects = (List<Project>) 
result.get(Constants.DATA_LIST);
         Assert.assertTrue(CollectionUtils.isNotEmpty(projects));
@@ -269,7 +276,7 @@ public class ProjectServiceTest {
     }
 
     @Test
-    public void testQueryCreatedProject(){
+    public void testQueryCreatedProject() {
 
         User loginUser = getLoginUser();
 
@@ -277,7 +284,7 @@ public class ProjectServiceTest {
         //USER_NO_OPERATION_PERM
         Map<String, Object> result = 
projectService.queryProjectCreatedByUser(loginUser);
         logger.info(result.toString());
-        
Assert.assertEquals(Status.USER_NO_OPERATION_PERM,result.get(Constants.STATUS));
+        Assert.assertEquals(Status.USER_NO_OPERATION_PERM, 
result.get(Constants.STATUS));
 
         //success
         loginUser.setUserType(UserType.ADMIN_USER);
@@ -287,42 +294,44 @@ public class ProjectServiceTest {
         Assert.assertTrue(CollectionUtils.isNotEmpty(projects));
 
     }
+
     @Test
-    public void testQueryAllProjectList(){
+    public void testQueryAllProjectList() {
 
         Mockito.when(projectMapper.selectList(null)).thenReturn(getList());
         
Mockito.when(processDefinitionMapper.selectList(null)).thenReturn(getProcessDefinitions());
 
         Map<String, Object> result = projectService.queryAllProjectList();
         logger.info(result.toString());
-        List<Project> projects  = (List<Project>) 
result.get(Constants.DATA_LIST);
+        List<Project> projects = (List<Project>) 
result.get(Constants.DATA_LIST);
         Assert.assertTrue(CollectionUtils.isNotEmpty(projects));
 
     }
+
     @Test
-    public void testQueryUnauthorizedProject(){
-       // 
Mockito.when(projectMapper.queryAuthedProjectListByUserId(1)).thenReturn(getList());
+    public void testQueryUnauthorizedProject() {
+        // 
Mockito.when(projectMapper.queryAuthedProjectListByUserId(1)).thenReturn(getList());
         
Mockito.when(projectMapper.queryProjectExceptUserId(2)).thenReturn(getList());
 
         User loginUser = new User();
         loginUser.setUserType(UserType.ADMIN_USER);
 
-        Map<String, Object> result = 
projectService.queryUnauthorizedProject(loginUser,2);
+        Map<String, Object> result = 
projectService.queryUnauthorizedProject(loginUser, 2);
         logger.info(result.toString());
         List<Project> projects = (List<Project>) 
result.get(Constants.DATA_LIST);
         Assert.assertTrue(CollectionUtils.isNotEmpty(projects));
     }
 
 
-    private Project getProject(){
+    private Project getProject() {
         Project project = new Project();
         project.setId(1);
         project.setName(projectName);
         project.setUserId(1);
-        return  project;
+        return project;
     }
 
-    private List<Project> getList(){
+    private List<Project> getList() {
         List<Project> list = new ArrayList<>();
         list.add(getProject());
         return list;
@@ -331,30 +340,28 @@ public class ProjectServiceTest {
 
     /**
      * create admin user
-     * @return
      */
-    private User getLoginUser(){
+    private User getLoginUser() {
 
         User loginUser = new User();
         loginUser.setUserType(UserType.GENERAL_USER);
         loginUser.setUserName(userName);
         loginUser.setId(1);
-      return  loginUser;
+        return loginUser;
 
     }
 
     /**
      * get project user
-
      */
-    private ProjectUser getProjectUser(){
+    private ProjectUser getProjectUser() {
         ProjectUser projectUser = new ProjectUser();
         projectUser.setProjectId(1);
         projectUser.setUserId(1);
-       return projectUser;
+        return projectUser;
     }
 
-    private  List<ProcessDefinition> getProcessDefinitions(){
+    private List<ProcessDefinition> getProcessDefinitions() {
         List<ProcessDefinition> list = new ArrayList<>();
         ProcessDefinition processDefinition = new ProcessDefinition();
         processDefinition.setProjectId(1);
@@ -363,9 +370,7 @@ public class ProjectServiceTest {
     }
 
 
-
-
-    private String getDesc(){
+    private String getDesc() {
         return 
"projectUserMapper.deleteProjectRelation(projectId,userId)projectUserMappe" +
                 ".deleteProjectRelation(projectId,userId)projectUserMappe" +
                 "r.deleteProjectRelation(projectId,userId)projectUserMapper" +
diff --git 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/SchedulerServiceTest.java
 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/SchedulerServiceTest.java
index f75d808..deadc21 100644
--- 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/SchedulerServiceTest.java
+++ 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/SchedulerServiceTest.java
@@ -17,6 +17,7 @@
 package org.apache.dolphinscheduler.api.service;
 
 import org.apache.dolphinscheduler.api.enums.Status;
+import org.apache.dolphinscheduler.api.service.impl.ProjectServiceImpl;
 import org.apache.dolphinscheduler.common.Constants;
 import org.apache.dolphinscheduler.common.enums.ReleaseState;
 import org.apache.dolphinscheduler.common.model.Server;
@@ -24,12 +25,16 @@ import 
org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
 import org.apache.dolphinscheduler.dao.entity.Project;
 import org.apache.dolphinscheduler.dao.entity.Schedule;
 import org.apache.dolphinscheduler.dao.entity.User;
-import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionMapper;
 import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
-import org.apache.dolphinscheduler.dao.mapper.ProjectUserMapper;
 import org.apache.dolphinscheduler.dao.mapper.ScheduleMapper;
 import org.apache.dolphinscheduler.service.process.ProcessService;
 import org.apache.dolphinscheduler.service.quartz.QuartzExecutors;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -40,13 +45,6 @@ import org.mockito.Mockito;
 import org.powermock.api.mockito.PowerMockito;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.modules.junit4.PowerMockRunner;
-import org.quartz.Scheduler;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 
 @RunWith(PowerMockRunner.class)
 @PrepareForTest(QuartzExecutors.class)
@@ -57,10 +55,6 @@ public class SchedulerServiceTest {
     @InjectMocks
     private SchedulerService schedulerService;
 
-
-    @Autowired
-    private ExecutorService executorService;
-
     @Mock
     private MonitorService monitorService;
 
@@ -72,21 +66,13 @@ public class SchedulerServiceTest {
 
     @Mock
     private ProjectMapper projectMapper;
-    @Mock
-    private ProjectUserMapper projectUserMapper;
-    @Mock
-    private ProjectService projectService;
 
     @Mock
-    private ProcessDefinitionMapper processDefinitionMapper;
+    private ProjectServiceImpl projectService;
 
     @Mock
     private QuartzExecutors quartzExecutors;
 
-    @Mock
-    private Scheduler scheduler;
-
-
     @Before
     public void setUp() {
 
@@ -176,10 +162,10 @@ public class SchedulerServiceTest {
         Mockito.when(quartzExecutors.deleteJob("1", "1")).thenReturn(true);
         Mockito.when(quartzExecutors.buildJobGroupName(1)).thenReturn("1");
         Mockito.when(quartzExecutors.buildJobName(1)).thenReturn("1");
-       boolean flag = true;
+        boolean flag = true;
         try {
             schedulerService.deleteSchedule(1, 1);
-        }catch (Exception e){
+        } catch (Exception e) {
             flag = false;
         }
         Assert.assertTrue(flag);
diff --git 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskInstanceServiceTest.java
 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskInstanceServiceTest.java
index 8e22034..f93ed05 100644
--- 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskInstanceServiceTest.java
+++ 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskInstanceServiceTest.java
@@ -16,9 +16,12 @@
  */
 package org.apache.dolphinscheduler.api.service;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.when;
+
 import org.apache.dolphinscheduler.api.ApiApplicationServer;
 import org.apache.dolphinscheduler.api.enums.Status;
+import org.apache.dolphinscheduler.api.service.impl.ProjectServiceImpl;
 import org.apache.dolphinscheduler.common.Constants;
 import org.apache.dolphinscheduler.common.enums.ExecutionStatus;
 import org.apache.dolphinscheduler.common.enums.UserType;
@@ -30,6 +33,14 @@ import org.apache.dolphinscheduler.dao.entity.User;
 import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
 import org.apache.dolphinscheduler.dao.mapper.TaskInstanceMapper;
 import org.apache.dolphinscheduler.service.process.ProcessService;
+
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -41,11 +52,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.test.context.SpringBootTest;
 
-import java.text.MessageFormat;
-import java.util.*;
-
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.when;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 @RunWith(MockitoJUnitRunner.Silent.class)
 @SpringBootTest(classes = ApiApplicationServer.class)
@@ -59,7 +66,7 @@ public class TaskInstanceServiceTest {
     ProjectMapper projectMapper;
 
     @Mock
-    ProjectService projectService;
+    ProjectServiceImpl projectService;
 
     @Mock
     ProcessService processService;
@@ -74,7 +81,7 @@ public class TaskInstanceServiceTest {
     UsersService usersService;
 
     @Test
-    public void queryTaskListPaging(){
+    public void queryTaskListPaging() {
 
         String projectName = "project_test1";
         User loginUser = getAdminUser();
@@ -83,7 +90,7 @@ public class TaskInstanceServiceTest {
 
         //project auth fail
         when(projectMapper.queryByName(projectName)).thenReturn(null);
-        
when(projectService.checkProjectAndAuth(loginUser,null,projectName)).thenReturn(result);
+        when(projectService.checkProjectAndAuth(loginUser, null, 
projectName)).thenReturn(result);
         Map<String, Object> proejctAuthFailRes = 
taskInstanceService.queryTaskListPaging(loginUser, "project_test1", 0, "",
                 "test_user", "2019-02-26 19:48:00", "2019-02-26 19:48:22", "", 
null, "", 1, 20);
         Assert.assertEquals(Status.PROJECT_NOT_FOUNT, 
proejctAuthFailRes.get(Constants.STATUS));
@@ -101,7 +108,7 @@ public class TaskInstanceServiceTest {
         taskInstanceList.add(taskInstance);
         pageReturn.setRecords(taskInstanceList);
         
when(projectMapper.queryByName(Mockito.anyString())).thenReturn(project);
-        
when(projectService.checkProjectAndAuth(loginUser,project,projectName)).thenReturn(result);
+        when(projectService.checkProjectAndAuth(loginUser, project, 
projectName)).thenReturn(result);
         when(usersService.queryUser(loginUser.getId())).thenReturn(loginUser);
         
when(usersService.getUserIdByName(loginUser.getUserName())).thenReturn(loginUser.getId());
         
when(taskInstanceMapper.queryTaskInstanceListPaging(Mockito.any(Page.class), 
eq(project.getId()), eq(1), eq(""), eq(""),
@@ -130,6 +137,7 @@ public class TaskInstanceServiceTest {
 
     /**
      * get Mock Admin User
+     *
      * @return admin user
      */
     private User getAdminUser() {
@@ -142,19 +150,21 @@ public class TaskInstanceServiceTest {
 
     /**
      * get mock Project
+     *
      * @param projectName projectName
      * @return Project
      */
-    private Project getProject(String projectName){
+    private Project getProject(String projectName) {
         Project project = new Project();
         project.setId(1);
         project.setName(projectName);
         project.setUserId(1);
-        return  project;
+        return project;
     }
 
     /**
      * get Mock process instance
+     *
      * @return process instance
      */
     private ProcessInstance getProcessInstance() {
@@ -169,6 +179,7 @@ public class TaskInstanceServiceTest {
 
     /**
      * get Mock task instance
+     *
      * @return task instance
      */
     private TaskInstance getTaskInstance() {
diff --git 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Project.java
 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Project.java
index feddb59..6726aa7 100644
--- 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Project.java
+++ 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Project.java
@@ -16,13 +16,13 @@
  */
 package org.apache.dolphinscheduler.dao.entity;
 
+import java.util.Date;
+
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
-import java.util.Date;
-
 /**
  * project
  */
@@ -32,7 +32,7 @@ public class Project {
     /**
      * id
      */
-    @TableId(value="id", type=IdType.AUTO)
+    @TableId(value = "id", type = IdType.AUTO)
     private int id;
 
     /**
@@ -44,7 +44,7 @@ public class Project {
     /**
      * user name
      */
-    @TableField(exist=false)
+    @TableField(exist = false)
     private String userName;
 
     /**
@@ -70,19 +70,19 @@ public class Project {
     /**
      * permission
      */
-    @TableField(exist=false)
+    @TableField(exist = false)
     private int perm;
 
     /**
      * process define count
      */
-    @TableField(exist=false)
+    @TableField(exist = false)
     private int defCount;
 
     /**
      * process instance running count
      */
-    @TableField(exist=false)
+    @TableField(exist = false)
     private int instRunningCount;
 
     public int getDefCount() {
@@ -136,6 +136,7 @@ public class Project {
     public void setDescription(String description) {
         this.description = description;
     }
+
     public String getDescription() {
         return description;
     }
@@ -163,6 +164,7 @@ public class Project {
     public void setPerm(int perm) {
         this.perm = perm;
     }
+
     @Override
     public String toString() {
         return "Project{" +
@@ -176,7 +178,6 @@ public class Project {
                 '}';
     }
 
-
     @Override
     public boolean equals(Object o) {
         if (this == o) {
@@ -202,4 +203,88 @@ public class Project {
         return result;
     }
 
+    public static Builder newBuilder() {
+        return new Builder();
+    }
+
+    public static final class Builder {
+        private int id;
+        private int userId;
+        private String userName;
+        private String name;
+        private String description;
+        private Date createTime;
+        private Date updateTime;
+        private int perm;
+        private int defCount;
+        private int instRunningCount;
+
+        private Builder() {
+        }
+
+        public Builder id(int id) {
+            this.id = id;
+            return this;
+        }
+
+        public Builder userId(int userId) {
+            this.userId = userId;
+            return this;
+        }
+
+        public Builder userName(String userName) {
+            this.userName = userName;
+            return this;
+        }
+
+        public Builder name(String name) {
+            this.name = name;
+            return this;
+        }
+
+        public Builder description(String description) {
+            this.description = description;
+            return this;
+        }
+
+        public Builder createTime(Date createTime) {
+            this.createTime = createTime;
+            return this;
+        }
+
+        public Builder updateTime(Date updateTime) {
+            this.updateTime = updateTime;
+            return this;
+        }
+
+        public Builder perm(int perm) {
+            this.perm = perm;
+            return this;
+        }
+
+        public Builder defCount(int defCount) {
+            this.defCount = defCount;
+            return this;
+        }
+
+        public Builder instRunningCount(int instRunningCount) {
+            this.instRunningCount = instRunningCount;
+            return this;
+        }
+
+        public Project build() {
+            Project project = new Project();
+            project.setId(id);
+            project.setUserId(userId);
+            project.setUserName(userName);
+            project.setName(name);
+            project.setDescription(description);
+            project.setCreateTime(createTime);
+            project.setUpdateTime(updateTime);
+            project.setPerm(perm);
+            project.setDefCount(defCount);
+            project.setInstRunningCount(instRunningCount);
+            return project;
+        }
+    }
 }

Reply via email to