权限申请

This commit is contained in:
tangcongfa_v@didichuxing.com
2021-05-10 16:22:58 +08:00
parent f0b3b9f7f4
commit 9185d2646b
4 changed files with 91 additions and 1 deletions

View File

@@ -0,0 +1,30 @@
package com.xiaojukeji.kafka.manager.common.entity.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel(description = "权限调整")
public class TopicAuthorityDTO extends ClusterTopicDTO{
@ApiModelProperty(value = "appId")
private String appId;
@ApiModelProperty(value = "0:无权限, 1:读, 2:写, 3:读写")
private Integer access;
public String getAppId() {
return appId;
}
public void setAppId(String appId) {
this.appId = appId;
}
public Integer getAccess() {
return access;
}
public void setAccess(Integer access) {
this.access = access;
}
}

View File

@@ -4,6 +4,7 @@ import com.xiaojukeji.kafka.manager.common.bizenum.OffsetPosEnum;
import com.xiaojukeji.kafka.manager.common.bizenum.TopicOffsetChangedEnum;
import com.xiaojukeji.kafka.manager.common.entity.Result;
import com.xiaojukeji.kafka.manager.common.entity.ao.*;
import com.xiaojukeji.kafka.manager.common.entity.dto.TopicAuthorityDTO;
import com.xiaojukeji.kafka.manager.common.entity.dto.normal.TopicAddDTO;
import com.xiaojukeji.kafka.manager.common.entity.dto.normal.TopicDataSampleDTO;
import com.xiaojukeji.kafka.manager.common.entity.ao.topic.*;
@@ -128,4 +129,9 @@ public interface TopicService {
* 扩分区
*/
Result expandTopic(TopicExpandDTO dto);
/**
* 权限调整
*/
Result addAuthorityAdd(TopicAuthorityDTO dto);
}

View File

@@ -5,6 +5,7 @@ import com.xiaojukeji.kafka.manager.common.constant.KafkaConstant;
import com.xiaojukeji.kafka.manager.common.entity.Result;
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
import com.xiaojukeji.kafka.manager.common.entity.ao.gateway.TopicQuota;
import com.xiaojukeji.kafka.manager.common.entity.dto.TopicAuthorityDTO;
import com.xiaojukeji.kafka.manager.common.entity.dto.normal.TopicAddDTO;
import com.xiaojukeji.kafka.manager.common.entity.dto.normal.TopicExpandDTO;
import com.xiaojukeji.kafka.manager.common.entity.dto.normal.TopicQuotaDTO;
@@ -18,6 +19,7 @@ import com.xiaojukeji.kafka.manager.common.entity.ao.PartitionOffsetDTO;
import com.xiaojukeji.kafka.manager.common.entity.ao.topic.*;
import com.xiaojukeji.kafka.manager.common.entity.dto.normal.TopicDataSampleDTO;
import com.xiaojukeji.kafka.manager.common.entity.metrics.TopicMetrics;
import com.xiaojukeji.kafka.manager.common.entity.pojo.gateway.AuthorityDO;
import com.xiaojukeji.kafka.manager.common.utils.SpringTool;
import com.xiaojukeji.kafka.manager.common.utils.ValidateUtils;
import com.xiaojukeji.kafka.manager.common.utils.jmx.JmxConstant;
@@ -29,6 +31,7 @@ import com.xiaojukeji.kafka.manager.dao.TopicAppMetricsDao;
import com.xiaojukeji.kafka.manager.dao.TopicMetricsDao;
import com.xiaojukeji.kafka.manager.dao.TopicRequestMetricsDao;
import com.xiaojukeji.kafka.manager.common.entity.pojo.*;
import com.xiaojukeji.kafka.manager.dao.gateway.AuthorityDao;
import com.xiaojukeji.kafka.manager.service.cache.KafkaClientPool;
import com.xiaojukeji.kafka.manager.service.cache.KafkaMetricsCache;
import com.xiaojukeji.kafka.manager.service.cache.LogicalClusterMetadataManager;
@@ -100,6 +103,9 @@ public class TopicServiceImpl implements TopicService {
@Autowired
private QuotaService quotaService;
@Autowired
private AuthorityDao authorityDao;
@Override
public List<TopicMetricsDO> getTopicMetricsFromDB(Long clusterId, String topicName, Date startTime, Date endTime) {
try {
@@ -909,7 +915,7 @@ public class TopicServiceImpl implements TopicService {
if (result > 0) {
return Result.buildFrom(ResultStatus.SUCCESS);
}
return Result.buildFrom(ResultStatus.FAIL);
return Result.buildFrom(ResultStatus.MYSQL_ERROR);
}
@Override
@@ -934,6 +940,43 @@ public class TopicServiceImpl implements TopicService {
return Result.buildFrom(resultStatus);
}
@Override
public Result addAuthorityAdd(TopicAuthorityDTO dto) {
//查询该用户拥有的应用
List<AppDO> appDOs = appService.getByPrincipal(SpringTool.getUserName());
if (ValidateUtils.isEmptyList(appDOs)) {
//该用户无应用,需要先申请应用
return Result.buildFrom(ResultStatus.APP_NOT_EXIST);
}
List<Long> appIds = appDOs.stream().map(AppDO::getId).collect(Collectors.toList());
if (!appIds.contains(dto.getAccess())) {
//入参中的appId该用户未拥有
return Result.buildFrom(ResultStatus.PARAM_ILLEGAL);
}
//获取物理集群id
Long physicalClusterId = logicalClusterMetadataManager.getPhysicalClusterId(dto.getClusterId());
if (ValidateUtils.isNull(physicalClusterId)) {
//集群不存在
return Result.buildFrom(ResultStatus.CLUSTER_NOT_EXIST);
}
//获取集群信息
ClusterDO clusterDO = clusterService.getById(physicalClusterId);
if (ValidateUtils.isNull(clusterDO)) {
//集群不存在
return Result.buildFrom(ResultStatus.CLUSTER_NOT_EXIST);
}
//构建authorityDo
AuthorityDO authorityDO = new AuthorityDO();
authorityDO.setClusterId(physicalClusterId);
authorityDO.setAppId(dto.getAppId());
authorityDO.setTopicName(dto.getTopicName());
authorityDO.setAccess(dto.getAccess());
if (authorityDao.insert(authorityDO) > 0) {
return Result.buildFrom(ResultStatus.SUCCESS);
}
return Result.buildFrom(ResultStatus.MYSQL_ERROR);
}
private Result<TopicOffsetChangedEnum> checkTopicOffsetChanged(ClusterDO clusterDO,
String topicName,
Map<TopicPartition, Long> endOffsetMap) {

View File

@@ -6,6 +6,7 @@ import com.xiaojukeji.kafka.manager.common.entity.Result;
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
import com.xiaojukeji.kafka.manager.common.entity.ao.topic.TopicConnection;
import com.xiaojukeji.kafka.manager.common.entity.ao.topic.TopicPartitionDTO;
import com.xiaojukeji.kafka.manager.common.entity.dto.TopicAuthorityDTO;
import com.xiaojukeji.kafka.manager.common.entity.dto.normal.TopicAddDTO;
import com.xiaojukeji.kafka.manager.common.entity.dto.normal.TopicDataSampleDTO;
import com.xiaojukeji.kafka.manager.common.entity.dto.normal.TopicExpandDTO;
@@ -383,4 +384,14 @@ public class NormalTopicController {
}
return topicService.addTopicQuota(dto);
}
@ApiOperation(value = "权限调整",notes = "权限调整")
@RequestMapping(value = "{topics/authority/add}",method = RequestMethod.POST)
@ResponseBody
public Result addAuthorityAdd(@RequestBody TopicAuthorityDTO dto) {
if (ValidateUtils.isNull(dto)) {
return Result.buildFrom(ResultStatus.PARAM_ILLEGAL);
}
return topicService.addAuthorityAdd(dto);
}
}