From 5395c802e6f342542a08e7bec471012576a55cad Mon Sep 17 00:00:00 2001 From: lepdou Date: Mon, 11 Jul 2016 11:02:35 +0800 Subject: [PATCH] bugfix --- .../biz/service/AppNamespaceService.java | 34 +++++++++++-------- .../controller/NamespaceController.java | 4 +++ .../portal/service/NamespaceService.java | 4 +-- .../config/ConfigNamespaceController.js | 30 +++++++++++----- 4 files changed, 45 insertions(+), 27 deletions(-) diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AppNamespaceService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AppNamespaceService.java index d8a46ef9e..4aaf99bdf 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AppNamespaceService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AppNamespaceService.java @@ -31,6 +31,8 @@ public class AppNamespaceService { private ClusterService clusterService; @Autowired private AuditService auditService; + @Autowired + private ServerConfigService serverConfigService; public boolean isAppNamespaceNameUnique(String appId, String namespaceName) { Objects.requireNonNull(appId, "AppId must not be null"); @@ -80,23 +82,12 @@ public class AppNamespaceService { appNamespace.setDataChangeCreatedBy(createBy); appNamespace.setDataChangeLastModifiedBy(createBy); appNamespace = appNamespaceRepository.save(appNamespace); - //所有的cluster下面link新建的appnamespace - if (!appNamespace.isPublic()){ - String appId = appNamespace.getAppId(); - String namespaceName = appNamespace.getName(); - - List clusters = clusterService.findClusters(appId); - for (Cluster cluster: clusters){ - Namespace namespace = new Namespace(); - namespace.setClusterName(cluster.getName()); - namespace.setAppId(appId); - namespace.setNamespaceName(namespaceName); - namespace.setDataChangeCreatedBy(createBy); - namespace.setDataChangeLastModifiedBy(createBy); - namespaceService.save(namespace); - } + //// TODO: 16/7/11 上线完删除开关逻辑 + if ("true".equals(serverConfigService.getValue("appnamespace.private.enable", "false")) && !appNamespace.isPublic()) { + linkPrivateAppNamespaceInAllCluster(appNamespace.getAppId(), appNamespace.getName(), createBy); } + auditService.audit(AppNamespace.class.getSimpleName(), appNamespace.getId(), Audit.OP.INSERT, createBy); return appNamespace; @@ -111,4 +102,17 @@ public class AppNamespaceService { return managedNs; } + + private void linkPrivateAppNamespaceInAllCluster(String appId, String namespaceName, String createBy) { + List clusters = clusterService.findClusters(appId); + for (Cluster cluster : clusters) { + Namespace namespace = new Namespace(); + namespace.setClusterName(cluster.getName()); + namespace.setAppId(appId); + namespace.setNamespaceName(namespaceName); + namespace.setDataChangeCreatedBy(createBy); + namespace.setDataChangeLastModifiedBy(createBy); + namespaceService.save(namespace); + } + } } diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/NamespaceController.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/NamespaceController.java index 4ec51fe3c..3b70a410b 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/NamespaceController.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/NamespaceController.java @@ -15,6 +15,7 @@ import com.ctrip.framework.apollo.portal.listener.AppNamespaceCreationEvent; import com.ctrip.framework.apollo.portal.service.AppNamespaceService; import com.ctrip.framework.apollo.portal.service.AppService; import com.ctrip.framework.apollo.portal.service.NamespaceService; +import com.ctrip.framework.apollo.portal.service.RoleInitializationService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -50,6 +51,8 @@ public class NamespaceController { private NamespaceService namespaceService; @Autowired private AppNamespaceService appNamespaceService; + @Autowired + private RoleInitializationService roleInitializationService; @RequestMapping("/appnamespaces/public") public List findPublicAppNamespaces() { @@ -62,6 +65,7 @@ public class NamespaceController { @RequestBody List models) { checkModel(!CollectionUtils.isEmpty(models)); + roleInitializationService.initNamespaceRoles(appId, models.get(0).getNamespace().getNamespaceName()); for (NamespaceCreationModel model : models) { NamespaceDTO namespace = model.getNamespace(); diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/NamespaceService.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/NamespaceService.java index 936e2579b..4a0487de1 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/NamespaceService.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/NamespaceService.java @@ -43,8 +43,7 @@ public class NamespaceService { @Autowired private AdminServiceAPI.NamespaceAPI namespaceAPI; - @Autowired - private RoleInitializationService roleInitializationService; + @Autowired private AppNamespaceService appNamespaceService; @@ -57,7 +56,6 @@ public class NamespaceService { namespace.setDataChangeLastModifiedBy(userInfoHolder.getUser().getUserId()); NamespaceDTO createdNamespace = namespaceAPI.createNamespace(env, namespace); - roleInitializationService.initNamespaceRoles(namespace.getAppId(), namespace.getNamespaceName()); return createdNamespace; } diff --git a/apollo-portal/src/main/resources/static/scripts/controller/config/ConfigNamespaceController.js b/apollo-portal/src/main/resources/static/scripts/controller/config/ConfigNamespaceController.js index 602c8227e..35edcadd9 100644 --- a/apollo-portal/src/main/resources/static/scripts/controller/config/ConfigNamespaceController.js +++ b/apollo-portal/src/main/resources/static/scripts/controller/config/ConfigNamespaceController.js @@ -144,23 +144,24 @@ application_module.controller("ConfigNamespaceController", $scope.tableViewOperType = '', $scope.item = {}; + var toOperationNamespace; //查看配置 function retrieveItem(namespace, item, oldValue) { switchTableViewOperType(TABLE_VIEW_OPER_TYPE.RETRIEVE); $scope.item = item; $scope.item.oldValue = oldValue; - toOperationNamespaceName = namespace.namespace.namespaceName; + toOperationNamespace = namespace; $scope.hasModifyPermission = namespace.hasModifyPermission; } - var toDeleteItemId = 0, toDeleteNamespace = {}; + var toDeleteItemId = 0; function preDeleteItem(namespace, itemId) { if (!lockCheck(namespace)){ return; } - toDeleteNamespace = namespace; + toOperationNamespace = namespace; toDeleteItemId = itemId; $("#deleteConfirmDialog").modal("show"); @@ -170,7 +171,7 @@ application_module.controller("ConfigNamespaceController", ConfigService.delete_item($rootScope.pageContext.appId, $rootScope.pageContext.env, $rootScope.pageContext.clusterName, - toDeleteNamespace.namespace.namespaceName, + toOperationNamespace.namespace.namespaceName, toDeleteItemId).then( function (result) { toastr.success("删除成功!"); @@ -180,7 +181,6 @@ application_module.controller("ConfigNamespaceController", }); } - var toOperationNamespaceName = ''; //修改配置 function editItem(namespace, item) { if (!lockCheck(namespace)){ @@ -188,7 +188,7 @@ application_module.controller("ConfigNamespaceController", } switchTableViewOperType(TABLE_VIEW_OPER_TYPE.UPDATE); $scope.item = item; - toOperationNamespaceName = namespace.namespace.namespaceName; + toOperationNamespace = namespace; $("#itemModal").modal("show"); } @@ -201,7 +201,7 @@ application_module.controller("ConfigNamespaceController", switchTableViewOperType(TABLE_VIEW_OPER_TYPE.CREATE); $scope.item = {}; - toOperationNamespaceName = namespace.namespace.namespaceName; + toOperationNamespace = namespace; $('#itemModal').modal('show'); } @@ -225,11 +225,23 @@ application_module.controller("ConfigNamespaceController", } selectedClusters.forEach(function (cluster) { if ($scope.tableViewOperType == TABLE_VIEW_OPER_TYPE.CREATE) { + //check key unique + var hasRepeatKey = false; + toOperationNamespace.items.forEach(function (item) { + if ($scope.item.key == item.item.key){ + toastr.error("key=" + $scope.item.key + " 已存在"); + hasRepeatKey = true; + return; + } + }); + if (hasRepeatKey){ + return; + } ConfigService.create_item($rootScope.pageContext.appId, cluster.env, cluster.name, - toOperationNamespaceName, + toOperationNamespace.namespace.namespaceName, $scope.item).then( function (result) { toastr.success(cluster.env + " , " + $scope.item.key, @@ -248,7 +260,7 @@ application_module.controller("ConfigNamespaceController", ConfigService.update_item($rootScope.pageContext.appId, cluster.env, cluster.name, - toOperationNamespaceName, + toOperationNamespace.namespace.namespaceName, $scope.item).then( function (result) { toastr.success("更新成功, 如需生效请发布"); -- GitLab