(improvement)(semantic) add admin auth check in metric market

This commit is contained in:
jolunoluo
2023-09-20 16:08:53 +08:00
parent b824cd8ce7
commit 63eff5c62a
9 changed files with 38 additions and 14 deletions

View File

@@ -49,7 +49,7 @@ public interface SemanticLayer {
PageInfo<DimensionResp> getDimensionPage(PageDimensionReq pageDimensionCmd); PageInfo<DimensionResp> getDimensionPage(PageDimensionReq pageDimensionCmd);
PageInfo<MetricResp> getMetricPage(PageMetricReq pageMetricCmd); PageInfo<MetricResp> getMetricPage(PageMetricReq pageMetricCmd, User user);
List<DomainResp> getDomainList(User user); List<DomainResp> getDomainList(User user);

View File

@@ -110,17 +110,18 @@ public class ChatConfigController {
} }
@PostMapping("/dimension/page") @PostMapping("/dimension/page")
public PageInfo<DimensionResp> getDimension(@RequestBody PageDimensionReq pageDimensionCmd, public PageInfo<DimensionResp> getDimension(@RequestBody PageDimensionReq pageDimensionReq,
HttpServletRequest request, HttpServletRequest request,
HttpServletResponse response) { HttpServletResponse response) {
return semanticLayer.getDimensionPage(pageDimensionCmd); return semanticLayer.getDimensionPage(pageDimensionReq);
} }
@PostMapping("/metric/page") @PostMapping("/metric/page")
public PageInfo<MetricResp> getMetric(@RequestBody PageMetricReq pageMetrricCmd, public PageInfo<MetricResp> getMetric(@RequestBody PageMetricReq pageMetricReq,
HttpServletRequest request, HttpServletRequest request,
HttpServletResponse response) { HttpServletResponse response) {
return semanticLayer.getMetricPage(pageMetrricCmd); User user = UserHolder.findUser(request, response);
return semanticLayer.getMetricPage(pageMetricReq, user);
} }

View File

@@ -110,9 +110,9 @@ public class LocalSemanticLayer extends BaseSemanticLayer {
} }
@Override @Override
public PageInfo<MetricResp> getMetricPage(PageMetricReq pageMetricReq) { public PageInfo<MetricResp> getMetricPage(PageMetricReq pageMetricReq, User user) {
metricService = ContextUtils.getBean(MetricService.class); metricService = ContextUtils.getBean(MetricService.class);
return metricService.queryMetric(pageMetricReq); return metricService.queryMetric(pageMetricReq, user);
} }
} }

View File

@@ -258,7 +258,7 @@ public class RemoteSemanticLayer extends BaseSemanticLayer {
} }
@Override @Override
public PageInfo<MetricResp> getMetricPage(PageMetricReq pageMetricCmd) { public PageInfo<MetricResp> getMetricPage(PageMetricReq pageMetricCmd, User user) {
String body = JsonUtil.toString(pageMetricCmd); String body = JsonUtil.toString(pageMetricCmd);
DefaultSemanticConfig defaultSemanticConfig = ContextUtils.getBean(DefaultSemanticConfig.class); DefaultSemanticConfig defaultSemanticConfig = ContextUtils.getBean(DefaultSemanticConfig.class);
log.info("url:{}", defaultSemanticConfig.getSemanticUrl() + defaultSemanticConfig.getFetchMetricPagePath()); log.info("url:{}", defaultSemanticConfig.getSemanticUrl() + defaultSemanticConfig.getFetchMetricPagePath());

View File

@@ -35,6 +35,8 @@ public class MetricResp extends SchemaItem {
private List<String> tags; private List<String> tags;
private boolean hasAdminRes = false;
public void setTag(String tag) { public void setTag(String tag) {
if (StringUtils.isBlank(tag)) { if (StringUtils.isBlank(tag)) {
tags = Lists.newArrayList(); tags = Lists.newArrayList();

View File

@@ -9,6 +9,7 @@ import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.common.pojo.DataAddEvent; import com.tencent.supersonic.common.pojo.DataAddEvent;
import com.tencent.supersonic.common.pojo.DataDeleteEvent; import com.tencent.supersonic.common.pojo.DataDeleteEvent;
import com.tencent.supersonic.common.pojo.DataUpdateEvent; import com.tencent.supersonic.common.pojo.DataUpdateEvent;
import com.tencent.supersonic.common.pojo.enums.AuthType;
import com.tencent.supersonic.common.pojo.enums.DictWordType; import com.tencent.supersonic.common.pojo.enums.DictWordType;
import com.tencent.supersonic.common.util.ChatGptHelper; import com.tencent.supersonic.common.util.ChatGptHelper;
import com.tencent.supersonic.semantic.api.model.pojo.Measure; import com.tencent.supersonic.semantic.api.model.pojo.Measure;
@@ -124,7 +125,7 @@ public class MetricServiceImpl implements MetricService {
} }
@Override @Override
public PageInfo<MetricResp> queryMetric(PageMetricReq pageMetricReq) { public PageInfo<MetricResp> queryMetric(PageMetricReq pageMetricReq, User user) {
MetricFilter metricFilter = new MetricFilter(); MetricFilter metricFilter = new MetricFilter();
BeanUtils.copyProperties(pageMetricReq, metricFilter); BeanUtils.copyProperties(pageMetricReq, metricFilter);
Set<DomainResp> domainResps = domainService.getDomainChildren(pageMetricReq.getDomainIds()); Set<DomainResp> domainResps = domainService.getDomainChildren(pageMetricReq.getDomainIds());
@@ -138,7 +139,9 @@ public class MetricServiceImpl implements MetricService {
.doSelectPageInfo(() -> queryMetric(metricFilter)); .doSelectPageInfo(() -> queryMetric(metricFilter));
PageInfo<MetricResp> pageInfo = new PageInfo<>(); PageInfo<MetricResp> pageInfo = new PageInfo<>();
BeanUtils.copyProperties(metricDOPageInfo, pageInfo); BeanUtils.copyProperties(metricDOPageInfo, pageInfo);
pageInfo.setList(convertList(metricDOPageInfo.getList())); List<MetricResp> metricResps = convertList(metricDOPageInfo.getList());
fillAdminRes(metricResps, user);
pageInfo.setList(metricResps);
return pageInfo; return pageInfo;
} }
@@ -146,6 +149,21 @@ public class MetricServiceImpl implements MetricService {
return metricRepository.getMetric(metricFilter); return metricRepository.getMetric(metricFilter);
} }
private void fillAdminRes(List<MetricResp> metricResps, User user) {
List<ModelResp> modelResps = modelService.getModelListWithAuth(user, null, AuthType.ADMIN);
if (CollectionUtils.isEmpty(modelResps)) {
return;
}
Set<Long> modelIdSet = modelResps.stream().map(ModelResp::getId).collect(Collectors.toSet());
for (MetricResp metricResp : metricResps) {
if (modelIdSet.contains(metricResp.getModelId())) {
metricResp.setHasAdminRes(true);
}
}
}
@Override @Override
public MetricResp getMetric(Long modelId, String bizName) { public MetricResp getMetric(Long modelId, String bizName) {
List<MetricResp> metricDescs = getMetricByModelId(modelId); List<MetricResp> metricDescs = getMetricByModelId(modelId);

View File

@@ -23,7 +23,7 @@ public interface MetricService {
void createMetricBatch(List<MetricReq> metricReqs, User user) throws Exception; void createMetricBatch(List<MetricReq> metricReqs, User user) throws Exception;
PageInfo<MetricResp> queryMetric(PageMetricReq pageMetricReq); PageInfo<MetricResp> queryMetric(PageMetricReq pageMetricReq, User user);
MetricResp getMetric(Long modelId, String bizName); MetricResp getMetric(Long modelId, String bizName);

View File

@@ -69,8 +69,11 @@ public class MetricController {
@PostMapping("/queryMetric") @PostMapping("/queryMetric")
public PageInfo<MetricResp> queryMetric(@RequestBody PageMetricReq pageMetrricReq) { public PageInfo<MetricResp> queryMetric(@RequestBody PageMetricReq pageMetricReq,
return metricService.queryMetric(pageMetrricReq); HttpServletRequest request,
HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
return metricService.queryMetric(pageMetricReq, user);
} }
@GetMapping("getMetric/{modelId}/{bizName}") @GetMapping("getMetric/{modelId}/{bizName}")

View File

@@ -116,7 +116,7 @@ public class SchemaServiceImpl implements SchemaService {
@Override @Override
public PageInfo<MetricResp> queryMetric(PageMetricReq pageMetricCmd, User user) { public PageInfo<MetricResp> queryMetric(PageMetricReq pageMetricCmd, User user) {
return metricService.queryMetric(pageMetricCmd); return metricService.queryMetric(pageMetricCmd, user);
} }
@Override @Override