diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/TagDeleteReq.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/TagDeleteReq.java index 313dd1502..9761de1a4 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/TagDeleteReq.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/TagDeleteReq.java @@ -10,5 +10,5 @@ public class TagDeleteReq { private List ids; private List itemIds; - private TagDefineType type; + private TagDefineType tagDefineType; } \ No newline at end of file diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/TagResp.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/TagResp.java index bd416f6cc..43393db77 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/TagResp.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/TagResp.java @@ -1,11 +1,12 @@ package com.tencent.supersonic.headless.api.pojo.response; +import com.tencent.supersonic.common.pojo.RecordInfo; import lombok.Data; import lombok.ToString; @Data @ToString(callSuper = true) -public class TagResp { +public class TagResp extends RecordInfo { private Long id; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/impl/TagRepositoryImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/impl/TagRepositoryImpl.java index 71de1de05..0ff922fe8 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/impl/TagRepositoryImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/repository/impl/TagRepositoryImpl.java @@ -56,6 +56,7 @@ public class TagRepositoryImpl implements TagRepository { @Override public void deleteBatch(TagDeleteReq tagDeleteReq) { - tagCustomMapper.deleteBatch(tagDeleteReq.getItemIds(), tagDeleteReq.getIds(), tagDeleteReq.getType().name()); + tagCustomMapper.deleteBatch(tagDeleteReq.getItemIds(), tagDeleteReq.getIds(), + tagDeleteReq.getTagDefineType().name()); } } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/TagObjectController.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/TagObjectController.java index 08cca38f4..6c4065824 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/TagObjectController.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/TagObjectController.java @@ -86,7 +86,7 @@ public class TagObjectController { * @return * @throws Exception */ - @PostMapping("/query/tagObject") + @PostMapping("/query") public List queryTagObject(@RequestBody TagObjectFilter filter, HttpServletRequest request, HttpServletResponse response) throws Exception { diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java index 44cfd26b4..5fabff0ff 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java @@ -27,8 +27,8 @@ import com.tencent.supersonic.headless.api.pojo.response.DatabaseResp; import com.tencent.supersonic.headless.api.pojo.response.DimensionResp; import com.tencent.supersonic.headless.api.pojo.response.ModelResp; import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp; -import com.tencent.supersonic.headless.api.pojo.response.TagResp; import com.tencent.supersonic.headless.server.persistence.dataobject.DimensionDO; +import com.tencent.supersonic.headless.server.persistence.dataobject.TagDO; import com.tencent.supersonic.headless.server.persistence.repository.DimensionRepository; import com.tencent.supersonic.headless.server.pojo.DimensionFilter; import com.tencent.supersonic.headless.server.pojo.DimensionsFilter; @@ -300,14 +300,18 @@ public class DimensionServiceImpl implements DimensionService { } TagFilter tagFilter = new TagFilter(); tagFilter.setTagDefineType(TagDefineType.DIMENSION); - Map keyAndTagMap = tagMetaService.getTags(tagFilter).stream() - .collect(Collectors.toMap(tag -> tag.getModelId() + "_" + tag.getBizName(), tag -> tag, + List dimensionIds = dimensionResps.stream().map(dimension -> dimension.getId()) + .collect(Collectors.toList()); + tagFilter.setItemIds(dimensionIds); + Map keyAndTagMap = tagMetaService.getTagDOList(tagFilter, User.getFakeUser()).stream() + .collect(Collectors.toMap(tag -> tag.getItemId(), tag -> tag, (newTag, oldTag) -> newTag)); if (Objects.nonNull(keyAndTagMap)) { dimensionResps.stream().forEach(dim -> { - String key = dim.getModelId() + "_" + dim.getBizName(); - if (keyAndTagMap.containsKey(key)) { + if (keyAndTagMap.containsKey(dim.getId())) { dim.setIsTag(1); + } else { + dim.setIsTag(0); } }); } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java index 284b2c0c3..716c606b2 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java @@ -34,10 +34,10 @@ import com.tencent.supersonic.headless.api.pojo.response.DataSetResp; import com.tencent.supersonic.headless.api.pojo.response.DimensionResp; import com.tencent.supersonic.headless.api.pojo.response.MetricResp; import com.tencent.supersonic.headless.api.pojo.response.ModelResp; -import com.tencent.supersonic.headless.api.pojo.response.TagResp; import com.tencent.supersonic.headless.server.persistence.dataobject.CollectDO; import com.tencent.supersonic.headless.server.persistence.dataobject.MetricDO; import com.tencent.supersonic.headless.server.persistence.dataobject.MetricQueryDefaultConfigDO; +import com.tencent.supersonic.headless.server.persistence.dataobject.TagDO; import com.tencent.supersonic.headless.server.persistence.repository.MetricRepository; import com.tencent.supersonic.headless.server.pojo.DimensionsFilter; import com.tencent.supersonic.headless.server.pojo.MetaFilter; @@ -256,13 +256,18 @@ public class MetricServiceImpl implements MetricService { } TagFilter tagFilter = new TagFilter(); tagFilter.setTagDefineType(TagDefineType.METRIC); - Map keyAndTagMap = tagMetaService.getTags(tagFilter).stream() - .collect(Collectors.toMap(tag -> tag.getModelId() + "_" + tag.getBizName(), tag -> tag)); + List metricIds = metricRespList.stream().map(metric -> metric.getId()) + .collect(Collectors.toList()); + tagFilter.setItemIds(metricIds); + Map keyAndTagMap = tagMetaService.getTagDOList(tagFilter, User.getFakeUser()).stream() + .collect(Collectors.toMap(tag -> tag.getItemId(), tag -> tag, + (newTag, oldTag) -> newTag)); if (Objects.nonNull(keyAndTagMap)) { metricRespList.stream().forEach(metric -> { - String key = metric.getModelId() + "_" + metric.getBizName(); - if (keyAndTagMap.containsKey(key)) { + if (keyAndTagMap.containsKey(metric.getId())) { metric.setIsTag(1); + } else { + metric.setIsTag(0); } }); } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TagMetaServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TagMetaServiceImpl.java index e9e973a1e..8b9e6bfee 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TagMetaServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TagMetaServiceImpl.java @@ -5,9 +5,7 @@ import com.github.pagehelper.PageInfo; import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.common.pojo.enums.AuthType; import com.tencent.supersonic.common.pojo.enums.TypeEnums; -import com.tencent.supersonic.headless.api.pojo.TagDefineParams; import com.tencent.supersonic.headless.api.pojo.enums.TagDefineType; -import com.tencent.supersonic.headless.api.pojo.request.TagBatchCreateReq; import com.tencent.supersonic.headless.api.pojo.request.TagDeleteReq; import com.tencent.supersonic.headless.api.pojo.request.TagFilterPageReq; import com.tencent.supersonic.headless.api.pojo.request.TagReq; @@ -112,10 +110,9 @@ public class TagMetaServiceImpl implements TagMetaService { List tagRespList = Arrays.asList(tagResp); fillModelInfo(tagRespList); fillDomainInfo(tagRespList); - tagResp = tagRespList.get(0); - tagResp = fillTagObjectInfo(tagResp, user); - tagResp = fillCollectAndAdminInfo(tagResp, user); - return tagResp; + fillTagObjectInfo(tagRespList, user); + fillCollectAndAdminInfo(tagRespList, user); + return tagRespList.get(0); } @Override @@ -151,6 +148,8 @@ public class TagMetaServiceImpl implements TagMetaService { fillModelInfo(tagRespList); fillDomainInfo(tagRespList); fillTagObjectInfo(tagRespList, user); + fillCollectAndAdminInfo(tagRespList, user); + tagDOPageInfo.setList(tagRespList); return tagDOPageInfo; } @@ -240,51 +239,6 @@ public class TagMetaServiceImpl implements TagMetaService { return modelRespList; } - private int loadMetricTagBatch(TagBatchCreateReq tagLoadReq, List metrics, User user) { - if (!CollectionUtils.isEmpty(tagLoadReq.getItemIds())) { - metrics = metrics.stream().filter(metric -> tagLoadReq.getItemIds().contains(metric.getId())) - .collect(Collectors.toList()); - } - metrics.parallelStream().forEach(metric -> { - TagReq tagReq = new TagReq(); - BeanUtils.copyProperties(metric, tagReq); - tagReq.setId(null); - tagReq.setTagDefineType(TagDefineType.METRIC); - TagDefineParams tagDefineParams = new TagDefineParams(); - tagDefineParams.setExpr(metric.getBizName()); - tagDefineParams.setDependencies(new ArrayList<>(Arrays.asList(metric.getId()))); - try { - create(tagReq, user); - } catch (Exception e) { - log.info("loadMetricTagBatch, e:{}", e.getMessage()); - } - }); - return metrics.size(); - } - - private Integer loadDimTagBatch(TagBatchCreateReq tagLoadReq, List dimensions, User user) { - if (!CollectionUtils.isEmpty(tagLoadReq.getItemIds())) { - dimensions = dimensions.stream().filter(dim -> tagLoadReq.getItemIds().contains(dim.getId())) - .collect(Collectors.toList()); - } - dimensions.parallelStream().forEach(dim -> { - TagReq tagReq = new TagReq(); - BeanUtils.copyProperties(dim, tagReq); - tagReq.setId(null); - tagReq.setTagDefineType(TagDefineType.DIMENSION); - TagDefineParams tagDefineParams = new TagDefineParams(); - tagDefineParams.setExpr(dim.getBizName()); - tagDefineParams.setDependencies(new ArrayList<>(Arrays.asList(dim.getId()))); - try { - create(tagReq, user); - } catch (Exception e) { - log.info("loadDimTagBatch, e:{}", e.getMessage()); - } - - }); - return dimensions.size(); - } - private void fillModelInfo(List tagRespList) { Map modelIdAndRespMap = modelService.getModelMap(); tagRespList.stream().forEach(tagResp -> { @@ -310,6 +264,23 @@ public class TagMetaServiceImpl implements TagMetaService { return tagRespList.get(0); } + private TagResp fillCollectAndAdminInfo(List tagRespList, User user) { + List collectIds = collectService.getCollectList(user.getName()) + .stream().filter(collectDO -> TypeEnums.TAG.name().equalsIgnoreCase(collectDO.getType())) + .map(CollectDO::getCollectId).collect(Collectors.toList()); + + tagRespList.stream().forEach(tagResp -> { + if (CollectionUtils.isNotEmpty(collectIds) && collectIds.contains(tagResp.getId())) { + tagResp.setIsCollect(true); + } else { + tagResp.setIsCollect(false); + } + }); + + fillAdminRes(tagRespList, user); + return tagRespList.get(0); + } + private void fillAdminRes(List tagRespList, User user) { List modelRespList = modelService.getModelListWithAuth(user, null, AuthType.ADMIN); if (CollectionUtils.isEmpty(modelRespList)) { @@ -317,7 +288,7 @@ public class TagMetaServiceImpl implements TagMetaService { } Set modelIdSet = modelRespList.stream().map(ModelResp::getId).collect(Collectors.toSet()); for (TagResp tagResp : tagRespList) { - if (modelIdSet.contains(tagResp.getModelId())) { + if (modelIdSet.contains(tagResp.getModelId()) || tagResp.getCreatedBy().equalsIgnoreCase(user.getName())) { tagResp.setHasAdminRes(true); } else { tagResp.setHasAdminRes(false); @@ -334,7 +305,7 @@ public class TagMetaServiceImpl implements TagMetaService { List tagRespList = tagRepository.getTagDOList(tagFilter); if (!CollectionUtils.isEmpty(tagRespList)) { - throw new RuntimeException(String.format("the tag is exit, itemId:{}", tagReq.getItemId())); + throw new RuntimeException(String.format("the tag is exit, itemId:%s", tagReq.getItemId())); } } @@ -343,7 +314,7 @@ public class TagMetaServiceImpl implements TagMetaService { DimensionResp dimension = dimensionService.getDimension(tagReq.getItemId()); ModelResp model = modelService.getModel(dimension.getModelId()); if (Objects.isNull(model.getTagObjectId())) { - throw new RuntimeException(String.format("this dimension:{} is not supported to create tag", + throw new RuntimeException(String.format("this dimension:%s is not supported to create tag", tagReq.getItemId())); } } @@ -351,7 +322,7 @@ public class TagMetaServiceImpl implements TagMetaService { MetricResp metric = metricService.getMetric(tagReq.getItemId()); ModelResp model = modelService.getModel(metric.getModelId()); if (Objects.isNull(model.getTagObjectId())) { - throw new RuntimeException(String.format("this metric:{} is not supported to create tag", + throw new RuntimeException(String.format("this metric:%s is not supported to create tag", tagReq.getItemId())); } } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TagObjectServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TagObjectServiceImpl.java index 3a50d77b8..f303ce275 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TagObjectServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TagObjectServiceImpl.java @@ -37,7 +37,6 @@ public class TagObjectServiceImpl implements TagObjectService { tagObjectDO.setUpdatedBy(user.getName()); tagObjectDO.setUpdatedAt(date); tagObjectDO.setStatus(StatusEnum.ONLINE.getCode()); - tagObjectRepository.create(tagObjectDO).longValue(); TagObjectDO tagObjectById = tagObjectRepository.getTagObjectById(tagObjectDO.getId()); return TagObjectConverter.convert2Resp(tagObjectById); diff --git a/headless/server/src/main/resources/mapper/custom/TagCustomMapper.xml b/headless/server/src/main/resources/mapper/custom/TagCustomMapper.xml index da49eee62..b34270d6d 100644 --- a/headless/server/src/main/resources/mapper/custom/TagCustomMapper.xml +++ b/headless/server/src/main/resources/mapper/custom/TagCustomMapper.xml @@ -52,14 +52,14 @@