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

dockerzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git


The following commit(s) were added to refs/heads/master by this push:
     new 06e3d589ae [INLONG-10498][Manager] Template supports modifying 
associated tenants (#10499)
06e3d589ae is described below

commit 06e3d589ae5ec1ac38eae6e9c41732ba8cdd63a3
Author: fuweng11 <[email protected]>
AuthorDate: Tue Jun 25 12:28:49 2024 +0800

    [INLONG-10498][Manager] Template supports modifying associated tenants 
(#10499)
---
 .../manager/dao/mapper/TemplateEntityMapper.java   |  2 +
 .../dao/mapper/TenantClusterTagEntityMapper.java   |  2 +-
 .../resources/mappers/TemplateEntityMapper.xml     |  1 +
 .../service/stream/TemplateServiceImpl.java        | 52 +++++++++++++++++++++-
 4 files changed, 55 insertions(+), 2 deletions(-)

diff --git 
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/TemplateEntityMapper.java
 
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/TemplateEntityMapper.java
index 16f13184e5..6d39537734 100644
--- 
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/TemplateEntityMapper.java
+++ 
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/TemplateEntityMapper.java
@@ -17,6 +17,7 @@
 
 package org.apache.inlong.manager.dao.mapper;
 
+import org.apache.inlong.manager.common.tenant.MultiTenantQuery;
 import org.apache.inlong.manager.dao.entity.TemplateEntity;
 import org.apache.inlong.manager.pojo.stream.TemplatePageRequest;
 
@@ -25,6 +26,7 @@ import org.springframework.stereotype.Repository;
 import java.util.List;
 
 @Repository
+@MultiTenantQuery
 public interface TemplateEntityMapper {
 
     int insert(TemplateEntity record);
diff --git 
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/TenantClusterTagEntityMapper.java
 
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/TenantClusterTagEntityMapper.java
index f9b34f2524..0adcab58db 100644
--- 
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/TenantClusterTagEntityMapper.java
+++ 
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/TenantClusterTagEntityMapper.java
@@ -34,7 +34,7 @@ public interface TenantClusterTagEntityMapper {
 
     TenantClusterTagEntity selectByPrimaryKey(Integer id);
 
-    TenantClusterTagEntity selectByUniqueKey(String clusterTag, String tenant);
+    TenantClusterTagEntity selectByUniqueKey(@Param("clusterTag") String 
clusterTag, @Param("tenant") String tenant);
 
     List<TenantClusterTagEntity> selectByTag(String clusterTag);
 
diff --git 
a/inlong-manager/manager-dao/src/main/resources/mappers/TemplateEntityMapper.xml
 
b/inlong-manager/manager-dao/src/main/resources/mappers/TemplateEntityMapper.xml
index 93e020cf64..e5dd6e7312 100644
--- 
a/inlong-manager/manager-dao/src/main/resources/mappers/TemplateEntityMapper.xml
+++ 
b/inlong-manager/manager-dao/src/main/resources/mappers/TemplateEntityMapper.xml
@@ -61,6 +61,7 @@
     <select id="selectByCondition"
             
parameterType="org.apache.inlong.manager.pojo.stream.TemplatePageRequest"
             resultType="org.apache.inlong.manager.dao.entity.TemplateEntity">
+        <bind name="_isInlongService" value="LoginUser.InlongService"/>
         select
         <include refid="Base_Column_List"/>
         from template t
diff --git 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/TemplateServiceImpl.java
 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/TemplateServiceImpl.java
index 4e04ac0bdd..a76328ee4d 100644
--- 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/TemplateServiceImpl.java
+++ 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/TemplateServiceImpl.java
@@ -49,8 +49,10 @@ import 
org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Objects;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -204,7 +206,36 @@ public class TemplateServiceImpl implements 
TemplateService {
         }
         // update template fields
         updateField(request);
-
+        if (CollectionUtils.isNotEmpty(request.getTenantList())) {
+            Set<String> updatedTenants = new 
HashSet<>(request.getTenantList());
+            List<TenantTemplateEntity> tenantList = 
tenantTemplateEntityMapper.selectByTemplateName(templateName);
+            // remove
+            tenantList.stream()
+                    .filter(entity -> 
!updatedTenants.contains(entity.getTenant()))
+                    .forEach(entity -> {
+                        try {
+                            this.deleteTenantTemplate(entity.getId(), 
operator);
+                        } catch (Exception e) {
+                            LOGGER.error(e.getMessage());
+                        }
+                    });
+            // add
+            Set<String> currentTenants = tenantList.stream()
+                    .map(TenantTemplateEntity::getTenant)
+                    .collect(Collectors.toSet());
+            TenantTemplateRequest tagRequest = new TenantTemplateRequest();
+            tagRequest.setTemplateName(templateName);
+            updatedTenants.stream()
+                    .filter(tenant -> !currentTenants.contains(tenant))
+                    .forEach(tenant -> {
+                        try {
+                            tagRequest.setTenant(tenant);
+                            this.saveTenantTemplate(tagRequest, operator);
+                        } catch (Exception e) {
+                            LOGGER.error(e.getMessage());
+                        }
+                    });
+        }
         LOGGER.info("success to update inlong template for template name={}", 
templateName);
         return true;
 
@@ -331,4 +362,23 @@ public class TemplateServiceImpl implements 
TemplateService {
         return entity.getId();
     }
 
+    public Boolean deleteTenantTemplate(Integer id, String operator) {
+        LOGGER.debug("start to delete tenant template with id={}", id);
+        TenantTemplateEntity entity = 
tenantTemplateEntityMapper.selectByPrimaryKey(id);
+        Preconditions.expectNotNull(entity, 
ErrorCodeEnum.RECORD_NOT_FOUND.getMessage());
+
+        entity.setModifier(operator);
+        entity.setIsDeleted(id);
+
+        int rowCount = tenantTemplateEntityMapper.updateByIdSelective(entity);
+        if (rowCount != InlongConstants.AFFECTED_ONE_ROW) {
+            LOGGER.error("tenant template has already deleted for tenant={} 
tag={}",
+                    entity.getTenant(), entity.getTemplateName());
+            throw new BusinessException(ErrorCodeEnum.CONFIG_EXPIRED);
+        }
+        LOGGER.info("success to delete tenant template of tenant={} tag={}, 
user={}", entity.getTenant(),
+                entity.getTemplateName(), operator);
+        return true;
+    }
+
 }

Reply via email to