mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 20:51:48 +00:00
(improvement)(semantic) add admin auth check in metric market
This commit is contained in:
@@ -49,7 +49,7 @@ public interface SemanticLayer {
|
||||
|
||||
PageInfo<DimensionResp> getDimensionPage(PageDimensionReq pageDimensionCmd);
|
||||
|
||||
PageInfo<MetricResp> getMetricPage(PageMetricReq pageMetricCmd);
|
||||
PageInfo<MetricResp> getMetricPage(PageMetricReq pageMetricCmd, User user);
|
||||
|
||||
List<DomainResp> getDomainList(User user);
|
||||
|
||||
|
||||
@@ -110,17 +110,18 @@ public class ChatConfigController {
|
||||
}
|
||||
|
||||
@PostMapping("/dimension/page")
|
||||
public PageInfo<DimensionResp> getDimension(@RequestBody PageDimensionReq pageDimensionCmd,
|
||||
public PageInfo<DimensionResp> getDimension(@RequestBody PageDimensionReq pageDimensionReq,
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response) {
|
||||
return semanticLayer.getDimensionPage(pageDimensionCmd);
|
||||
return semanticLayer.getDimensionPage(pageDimensionReq);
|
||||
}
|
||||
|
||||
@PostMapping("/metric/page")
|
||||
public PageInfo<MetricResp> getMetric(@RequestBody PageMetricReq pageMetrricCmd,
|
||||
public PageInfo<MetricResp> getMetric(@RequestBody PageMetricReq pageMetricReq,
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response) {
|
||||
return semanticLayer.getMetricPage(pageMetrricCmd);
|
||||
User user = UserHolder.findUser(request, response);
|
||||
return semanticLayer.getMetricPage(pageMetricReq, user);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -110,9 +110,9 @@ public class LocalSemanticLayer extends BaseSemanticLayer {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<MetricResp> getMetricPage(PageMetricReq pageMetricReq) {
|
||||
public PageInfo<MetricResp> getMetricPage(PageMetricReq pageMetricReq, User user) {
|
||||
metricService = ContextUtils.getBean(MetricService.class);
|
||||
return metricService.queryMetric(pageMetricReq);
|
||||
return metricService.queryMetric(pageMetricReq, user);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -258,7 +258,7 @@ public class RemoteSemanticLayer extends BaseSemanticLayer {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<MetricResp> getMetricPage(PageMetricReq pageMetricCmd) {
|
||||
public PageInfo<MetricResp> getMetricPage(PageMetricReq pageMetricCmd, User user) {
|
||||
String body = JsonUtil.toString(pageMetricCmd);
|
||||
DefaultSemanticConfig defaultSemanticConfig = ContextUtils.getBean(DefaultSemanticConfig.class);
|
||||
log.info("url:{}", defaultSemanticConfig.getSemanticUrl() + defaultSemanticConfig.getFetchMetricPagePath());
|
||||
|
||||
@@ -35,6 +35,8 @@ public class MetricResp extends SchemaItem {
|
||||
|
||||
private List<String> tags;
|
||||
|
||||
private boolean hasAdminRes = false;
|
||||
|
||||
public void setTag(String tag) {
|
||||
if (StringUtils.isBlank(tag)) {
|
||||
tags = Lists.newArrayList();
|
||||
|
||||
@@ -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.DataDeleteEvent;
|
||||
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.util.ChatGptHelper;
|
||||
import com.tencent.supersonic.semantic.api.model.pojo.Measure;
|
||||
@@ -124,7 +125,7 @@ public class MetricServiceImpl implements MetricService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<MetricResp> queryMetric(PageMetricReq pageMetricReq) {
|
||||
public PageInfo<MetricResp> queryMetric(PageMetricReq pageMetricReq, User user) {
|
||||
MetricFilter metricFilter = new MetricFilter();
|
||||
BeanUtils.copyProperties(pageMetricReq, metricFilter);
|
||||
Set<DomainResp> domainResps = domainService.getDomainChildren(pageMetricReq.getDomainIds());
|
||||
@@ -138,7 +139,9 @@ public class MetricServiceImpl implements MetricService {
|
||||
.doSelectPageInfo(() -> queryMetric(metricFilter));
|
||||
PageInfo<MetricResp> pageInfo = new PageInfo<>();
|
||||
BeanUtils.copyProperties(metricDOPageInfo, pageInfo);
|
||||
pageInfo.setList(convertList(metricDOPageInfo.getList()));
|
||||
List<MetricResp> metricResps = convertList(metricDOPageInfo.getList());
|
||||
fillAdminRes(metricResps, user);
|
||||
pageInfo.setList(metricResps);
|
||||
return pageInfo;
|
||||
}
|
||||
|
||||
@@ -146,6 +149,21 @@ public class MetricServiceImpl implements MetricService {
|
||||
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
|
||||
public MetricResp getMetric(Long modelId, String bizName) {
|
||||
List<MetricResp> metricDescs = getMetricByModelId(modelId);
|
||||
|
||||
@@ -23,7 +23,7 @@ public interface MetricService {
|
||||
|
||||
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);
|
||||
|
||||
|
||||
@@ -69,8 +69,11 @@ public class MetricController {
|
||||
|
||||
|
||||
@PostMapping("/queryMetric")
|
||||
public PageInfo<MetricResp> queryMetric(@RequestBody PageMetricReq pageMetrricReq) {
|
||||
return metricService.queryMetric(pageMetrricReq);
|
||||
public PageInfo<MetricResp> queryMetric(@RequestBody PageMetricReq pageMetricReq,
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response) {
|
||||
User user = UserHolder.findUser(request, response);
|
||||
return metricService.queryMetric(pageMetricReq, user);
|
||||
}
|
||||
|
||||
@GetMapping("getMetric/{modelId}/{bizName}")
|
||||
|
||||
@@ -116,7 +116,7 @@ public class SchemaServiceImpl implements SchemaService {
|
||||
|
||||
@Override
|
||||
public PageInfo<MetricResp> queryMetric(PageMetricReq pageMetricCmd, User user) {
|
||||
return metricService.queryMetric(pageMetricCmd);
|
||||
return metricService.queryMetric(pageMetricCmd, user);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user