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

benjobs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git


The following commit(s) were added to refs/heads/dev by this push:
     new 2ec01badb [Feature] Check apps and projects before delete team (#1881)
2ec01badb is described below

commit 2ec01badbc7df82fe67dfa721efc3991eae6fd58
Author: fanrui <[email protected]>
AuthorDate: Sun Oct 23 16:52:48 2022 +0800

    [Feature] Check apps and projects before delete team (#1881)
---
 .../console/core/service/ApplicationService.java   |  2 +
 .../console/core/service/ProjectService.java       |  2 +
 .../console/core/service/VariableService.java      |  2 +
 .../core/service/impl/ApplicationServiceImpl.java  |  5 +++
 .../core/service/impl/ProjectServiceImpl.java      |  5 +++
 .../core/service/impl/VariableServiceImpl.java     |  5 +++
 .../console/system/controller/TeamController.java  |  2 +-
 .../console/system/service/MemberService.java      |  2 +
 .../console/system/service/TeamService.java        |  2 +-
 .../system/service/impl/MemberServiceImpl.java     |  5 +++
 .../system/service/impl/TeamServiceImpl.java       | 43 ++++++++++++++++++++--
 11 files changed, 70 insertions(+), 5 deletions(-)

diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ApplicationService.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ApplicationService.java
index ff9e73cce..a1076afbd 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ApplicationService.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ApplicationService.java
@@ -35,6 +35,8 @@ public interface ApplicationService extends 
IService<Application> {
 
     IPage<Application> page(Application app, RestRequest request);
 
+    long countByTeamId(Long teamId);
+
     boolean create(Application app) throws IOException;
 
     Long copy(Application app) throws IOException;
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ProjectService.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ProjectService.java
index a28c4e045..dfc45c9f3 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ProjectService.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ProjectService.java
@@ -38,6 +38,8 @@ public interface ProjectService extends IService<Project> {
 
     IPage<Project> page(Project project, RestRequest restRequest);
 
+    long countByTeamId(Long teamId);
+
     void build(Long id) throws Exception;
 
     RestResponse getBuildLog(Long id, Long startOffset);
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/VariableService.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/VariableService.java
index 0526377f0..d82cbb9cb 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/VariableService.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/VariableService.java
@@ -43,6 +43,8 @@ public interface VariableService extends IService<Variable> {
      */
     List<Variable> findByTeamId(Long teamId);
 
+    long countByTeamId(Long teamId);
+
     /**
      * create variable
      *
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ApplicationServiceImpl.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ApplicationServiceImpl.java
index 858ad0d4d..dc30a70c7 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ApplicationServiceImpl.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ApplicationServiceImpl.java
@@ -508,6 +508,11 @@ public class ApplicationServiceImpl extends 
ServiceImpl<ApplicationMapper, Appli
         return page;
     }
 
+    @Override
+    public long countByTeamId(Long teamId) {
+        return this.count(new 
LambdaQueryWrapper<Application>().eq(Application::getTeamId, teamId));
+    }
+
     @Override
     public String getYarnName(Application appParam) {
         String[] args = new String[2];
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ProjectServiceImpl.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ProjectServiceImpl.java
index 7af22dce1..d1e6f45bb 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ProjectServiceImpl.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ProjectServiceImpl.java
@@ -168,6 +168,11 @@ public class ProjectServiceImpl extends 
ServiceImpl<ProjectMapper, Project>
         return this.baseMapper.page(page, project);
     }
 
+    @Override
+    public long countByTeamId(Long teamId) {
+        return this.count(new 
LambdaQueryWrapper<Project>().eq(Project::getTeamId, teamId));
+    }
+
     @Override
     public void build(Long id) throws Exception {
         Project project = getById(id);
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/VariableServiceImpl.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/VariableServiceImpl.java
index 89081e0ab..9b94cd134 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/VariableServiceImpl.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/VariableServiceImpl.java
@@ -177,4 +177,9 @@ public class VariableServiceImpl extends 
ServiceImpl<VariableMapper, Variable> i
     private String getCodeFromPlaceholder(String placeholder) {
         return placeholder.substring(PLACEHOLDER_START.length(), 
placeholder.length() - PLACEHOLDER_END.length());
     }
+
+    @Override
+    public long countByTeamId(Long teamId) {
+        return this.count(new 
LambdaQueryWrapper<Variable>().eq(Variable::getTeamId, teamId));
+    }
 }
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/TeamController.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/TeamController.java
index 55dbae54a..04c6a7e77 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/TeamController.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/TeamController.java
@@ -67,7 +67,7 @@ public class TeamController {
     @DeleteMapping("delete")
     @RequiresPermissions("team:delete")
     public RestResponse deleteTeam(Team team) {
-        this.teamService.deleteTeam(team);
+        this.teamService.deleteTeam(team.getId());
         return RestResponse.success();
     }
 
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/MemberService.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/MemberService.java
index 3178f7376..7bd14880c 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/MemberService.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/MemberService.java
@@ -32,6 +32,8 @@ public interface MemberService extends IService<Member> {
 
     void deleteByUserIds(String[] userIds);
 
+    void deleteByTeamId(Long teamId);
+
     IPage<Member> findUsers(Member member, RestRequest request);
 
     List<Team> findUserTeams(Long userId);
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/TeamService.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/TeamService.java
index 592095503..8ec356cea 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/TeamService.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/TeamService.java
@@ -33,7 +33,7 @@ public interface TeamService extends IService<Team> {
 
     void createTeam(Team team);
 
-    void deleteTeam(Team team);
+    void deleteTeam(Long teamId);
 
     void updateTeam(Team team);
 
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/MemberServiceImpl.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/MemberServiceImpl.java
index 8c8be1580..f133e9d49 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/MemberServiceImpl.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/MemberServiceImpl.java
@@ -73,6 +73,11 @@ public class MemberServiceImpl extends 
ServiceImpl<MemberMapper, Member>
         Arrays.stream(userIds).forEach(id -> 
baseMapper.deleteByUserId(Long.valueOf(id)));
     }
 
+    @Override
+    public void deleteByTeamId(Long teamId) {
+        this.remove(new LambdaQueryWrapper<Member>().eq(Member::getTeamId, 
teamId));
+    }
+
     @Override
     public IPage<Member> findUsers(Member member, RestRequest request) {
         AssertUtils.isTrue(member.getTeamId() != null, "The team id is 
required.");
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/TeamServiceImpl.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/TeamServiceImpl.java
index c69593e5e..e7e3b5683 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/TeamServiceImpl.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/TeamServiceImpl.java
@@ -19,10 +19,16 @@ package org.apache.streampark.console.system.service.impl;
 
 import org.apache.streampark.common.util.AssertUtils;
 import org.apache.streampark.console.base.domain.RestRequest;
+import org.apache.streampark.console.base.exception.ApiAlertException;
 import org.apache.streampark.console.core.enums.UserType;
+import org.apache.streampark.console.core.service.ApplicationService;
+import org.apache.streampark.console.core.service.CommonService;
+import org.apache.streampark.console.core.service.ProjectService;
+import org.apache.streampark.console.core.service.VariableService;
 import org.apache.streampark.console.system.entity.Team;
 import org.apache.streampark.console.system.entity.User;
 import org.apache.streampark.console.system.mapper.TeamMapper;
+import org.apache.streampark.console.system.service.MemberService;
 import org.apache.streampark.console.system.service.TeamService;
 import org.apache.streampark.console.system.service.UserService;
 
@@ -48,6 +54,21 @@ public class TeamServiceImpl extends ServiceImpl<TeamMapper, 
Team> implements Te
     @Autowired
     private UserService userService;
 
+    @Autowired
+    private ApplicationService applicationService;
+
+    @Autowired
+    private ProjectService projectService;
+
+    @Autowired
+    private MemberService memberService;
+
+    @Autowired
+    private VariableService variableService;
+
+    @Autowired
+    private CommonService commonService;
+
     @Override
     public IPage<Team> findTeams(Team team, RestRequest request) {
         Page<Team> page = new Page<>();
@@ -74,9 +95,25 @@ public class TeamServiceImpl extends ServiceImpl<TeamMapper, 
Team> implements Te
     }
 
     @Override
-    public void deleteTeam(Team team) {
-        // TODO 查询 app 和 project,如果还有 app 或 project 没有删除,则 team 不能被删除。
-        this.removeById(team);
+    public void deleteTeam(Long teamId) {
+        log.info("{} Proceed delete team[Id={}]", 
commonService.getCurrentUser().getUsername(), teamId);
+        Team team = this.getById(teamId);
+        // TODO The AssertUtils.checkApiAlert can simplify the exception.
+        if (team == null) {
+            throw new ApiAlertException(String.format("The team[Id=%s] doesn't 
exists.", teamId));
+        }
+        if (applicationService.countByTeamId(teamId) > 0) {
+            throw new ApiAlertException(String.format("Please delete the 
applications under the team[name=%s] first!", team.getTeamName()));
+        }
+        if (projectService.countByTeamId(teamId) > 0) {
+            throw new ApiAlertException(String.format("Please delete the 
projects under the team[name=%s] first!", team.getTeamName()));
+        }
+        if (variableService.countByTeamId(teamId) > 0) {
+            throw new ApiAlertException(String.format("Please delete the 
variables under the team[name=%s] first!", team.getTeamName()));
+        }
+
+        memberService.deleteByTeamId(teamId);
+        this.removeById(teamId);
     }
 
     @Override

Reply via email to