权限调整

This commit is contained in:
tangcongfa_v@didichuxing.com
2021-05-18 16:03:24 +08:00
parent d4ee5e91a2
commit 52244325d9
5 changed files with 69 additions and 1 deletions

View File

@@ -11,6 +11,7 @@ import com.xiaojukeji.kafka.manager.common.entity.ao.topic.MineTopicSummary;
import com.xiaojukeji.kafka.manager.common.entity.pojo.TopicDO;
import com.xiaojukeji.kafka.manager.common.entity.pojo.TopicExpiredDO;
import com.xiaojukeji.kafka.manager.common.entity.pojo.TopicStatisticsDO;
import com.xiaojukeji.kafka.manager.common.entity.pojo.gateway.AuthorityDO;
import java.util.Date;
import java.util.List;
@@ -130,5 +131,12 @@ public interface TopicManagerService {
* @return
*/
ResultStatus addTopicQuota(TopicQuota topicQuota);
/**
* topic权限调整
* @param authorityDO topic权限
* @return
*/
ResultStatus addAuthority(AuthorityDO authorityDO);
}

View File

@@ -21,6 +21,7 @@ import com.xiaojukeji.kafka.manager.common.entity.pojo.gateway.AuthorityDO;
import com.xiaojukeji.kafka.manager.common.utils.DateUtils;
import com.xiaojukeji.kafka.manager.common.utils.JsonUtils;
import com.xiaojukeji.kafka.manager.common.utils.NumberUtils;
import com.xiaojukeji.kafka.manager.common.utils.SpringTool;
import com.xiaojukeji.kafka.manager.common.utils.ValidateUtils;
import com.xiaojukeji.kafka.manager.common.zookeeper.znode.brokers.TopicMetadata;
import com.xiaojukeji.kafka.manager.common.zookeeper.znode.config.TopicQuotaData;
@@ -653,6 +654,38 @@ public class TopicManagerServiceImpl implements TopicManagerService {
return ResultStatus.MYSQL_ERROR;
}
@Override
public ResultStatus addAuthority(AuthorityDO authorityDO) {
// 查询该用户拥有的应用
List<AppDO> appDOs = appService.getByPrincipal(SpringTool.getUserName());
if (ValidateUtils.isEmptyList(appDOs)) {
// 该用户无应用,需要先申请应用
return ResultStatus.APP_NOT_EXIST;
}
List<Long> appIds = appDOs.stream().map(AppDO::getId).collect(Collectors.toList());
if (!appIds.contains(authorityDO.getAppId())) {
// 入参中的appId该用户未拥有
return ResultStatus.APP_NOT_EXIST;
}
// 获取物理集群id
Long physicalClusterId = logicalClusterMetadataManager.getPhysicalClusterId(authorityDO.getClusterId());
if (ValidateUtils.isNull(physicalClusterId)) {
// 集群不存在
return ResultStatus.CLUSTER_NOT_EXIST;
}
TopicDO topic = getByTopicName(physicalClusterId, authorityDO.getTopicName());
if (ValidateUtils.isNull(topic)) {
// topic不存在
return ResultStatus.TOPIC_NOT_EXIST;
}
// 设置物理集群id
authorityDO.setClusterId(physicalClusterId);
if (authorityService.addAuthority(authorityDO) > 0) {
return ResultStatus.SUCCESS;
}
return ResultStatus.MYSQL_ERROR;
}
private RdTopicBasic convert2RdTopicBasic(ClusterDO clusterDO,
String topicName,
TopicDO topicDO,