mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-13 04:57:28 +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<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);
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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}")
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user