mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-11 03:58:14 +00:00
[improvement](headless) add queryTag for tagMarket (#772)
This commit is contained in:
@@ -4,6 +4,7 @@ public enum TypeEnums {
|
||||
|
||||
METRIC,
|
||||
DIMENSION,
|
||||
TAG,
|
||||
DOMAIN,
|
||||
ENTITY,
|
||||
VIEW,
|
||||
|
||||
@@ -16,6 +16,10 @@ public class TagResp extends SchemaItem {
|
||||
|
||||
private String type;
|
||||
|
||||
private Boolean isCollect;
|
||||
|
||||
private boolean hasAdminRes;
|
||||
|
||||
private Map<String, Object> ext = new HashMap<>();
|
||||
|
||||
private TagDefineType tagDefineType = TagDefineType.FIELD;
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.tencent.supersonic.headless.server.pojo;
|
||||
|
||||
|
||||
import com.tencent.supersonic.headless.api.pojo.request.PageSchemaItemReq;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TagFilterPage extends PageSchemaItemReq {
|
||||
private String type;
|
||||
private List<Integer> statusList;
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
package com.tencent.supersonic.headless.server.rest;
|
||||
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.TagReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.TagResp;
|
||||
import com.tencent.supersonic.headless.server.pojo.TagFilterPage;
|
||||
import com.tencent.supersonic.headless.server.service.TagService;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@@ -53,7 +55,15 @@ public class TagController {
|
||||
public TagResp getTag(@PathVariable("id") Long id,
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response) {
|
||||
return tagService.getMetric(id);
|
||||
return tagService.getTag(id);
|
||||
}
|
||||
|
||||
@PostMapping("/queryTag")
|
||||
public PageInfo<TagResp> queryPage(@RequestBody TagFilterPage tagFilterPage,
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response) throws Exception {
|
||||
User user = UserHolder.findUser(request, response);
|
||||
return tagService.queryPage(tagFilterPage, user);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
package com.tencent.supersonic.headless.server.service;
|
||||
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.TagReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.TagResp;
|
||||
import com.tencent.supersonic.headless.server.pojo.TagFilter;
|
||||
import com.tencent.supersonic.headless.server.pojo.TagFilterPage;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface TagService {
|
||||
@@ -14,7 +17,9 @@ public interface TagService {
|
||||
|
||||
void delete(Long id, User user) throws Exception;
|
||||
|
||||
TagResp getMetric(Long id);
|
||||
TagResp getTag(Long id);
|
||||
|
||||
List<TagResp> query(TagFilter tagFilter);
|
||||
|
||||
PageInfo<TagResp> queryPage(TagFilterPage tagFilterPage, User user);
|
||||
}
|
||||
|
||||
@@ -1,25 +1,38 @@
|
||||
package com.tencent.supersonic.headless.server.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.enums.AuthType;
|
||||
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
|
||||
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
|
||||
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.TagReq;
|
||||
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.TagDO;
|
||||
import com.tencent.supersonic.headless.server.persistence.repository.TagRepository;
|
||||
import com.tencent.supersonic.headless.server.pojo.TagFilter;
|
||||
import com.tencent.supersonic.headless.server.pojo.TagFilterPage;
|
||||
import com.tencent.supersonic.headless.server.service.CollectService;
|
||||
import com.tencent.supersonic.headless.server.service.ModelService;
|
||||
import com.tencent.supersonic.headless.server.service.TagService;
|
||||
import com.tencent.supersonic.headless.server.utils.NameCheckUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -31,9 +44,14 @@ import org.springframework.stereotype.Service;
|
||||
public class TagServiceImpl implements TagService {
|
||||
|
||||
private final TagRepository tagRepository;
|
||||
private final ModelService modelService;
|
||||
private final CollectService collectService;
|
||||
|
||||
public TagServiceImpl(TagRepository tagRepository) {
|
||||
public TagServiceImpl(TagRepository tagRepository, ModelService modelService,
|
||||
CollectService collectService) {
|
||||
this.tagRepository = tagRepository;
|
||||
this.modelService = modelService;
|
||||
this.collectService = collectService;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -85,7 +103,7 @@ public class TagServiceImpl implements TagService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagResp getMetric(Long id) {
|
||||
public TagResp getTag(Long id) {
|
||||
return convert(tagRepository.getTagById(id));
|
||||
}
|
||||
|
||||
@@ -98,10 +116,73 @@ public class TagServiceImpl implements TagService {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<TagResp> queryPage(TagFilterPage tagFilterPage, User user) {
|
||||
TagFilter tagFilter = new TagFilter();
|
||||
BeanUtils.copyProperties(tagFilterPage, tagFilter);
|
||||
List<ModelResp> modelRespList = modelService.getAllModelByDomainIds(tagFilterPage.getDomainIds());
|
||||
List<Long> modelIds = modelRespList.stream().map(ModelResp::getId).collect(Collectors.toList());
|
||||
tagFilterPage.getModelIds().addAll(modelIds);
|
||||
tagFilter.setModelIds(tagFilterPage.getModelIds());
|
||||
|
||||
List<CollectDO> collectList = collectService.getCollectList(user.getName())
|
||||
.stream().filter(collectDO -> TypeEnums.TAG.name().equalsIgnoreCase(collectDO.getType()))
|
||||
.collect(Collectors.toList());
|
||||
List<Long> collectIds = collectList.stream().map(CollectDO::getCollectId).collect(Collectors.toList());
|
||||
if (tagFilterPage.isHasCollect()) {
|
||||
if (CollectionUtils.isEmpty(collectIds)) {
|
||||
tagFilter.setIds(Lists.newArrayList(-1L));
|
||||
} else {
|
||||
tagFilter.setIds(collectIds);
|
||||
}
|
||||
}
|
||||
|
||||
PageInfo<TagDO> tagDOPageInfo = PageHelper.startPage(tagFilterPage.getCurrent(),
|
||||
tagFilterPage.getPageSize())
|
||||
.doSelectPageInfo(() -> query(tagFilter));
|
||||
PageInfo<TagResp> pageInfo = new PageInfo<>();
|
||||
BeanUtils.copyProperties(tagDOPageInfo, pageInfo);
|
||||
List<TagResp> tagRespList = convertList(tagDOPageInfo.getList(), collectIds);
|
||||
fillAdminRes(tagRespList, user);
|
||||
pageInfo.setList(tagRespList);
|
||||
|
||||
return pageInfo;
|
||||
}
|
||||
|
||||
private void fillAdminRes(List<TagResp> tagRespList, User user) {
|
||||
List<ModelResp> modelRespList = modelService.getModelListWithAuth(user, null, AuthType.ADMIN);
|
||||
if (CollectionUtils.isEmpty(modelRespList)) {
|
||||
return;
|
||||
}
|
||||
Set<Long> modelIdSet = modelRespList.stream().map(ModelResp::getId).collect(Collectors.toSet());
|
||||
for (TagResp tagResp : tagRespList) {
|
||||
if (modelIdSet.contains(tagResp.getModelId())) {
|
||||
tagResp.setHasAdminRes(true);
|
||||
} else {
|
||||
tagResp.setHasAdminRes(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<TagResp> convertList(List<TagDO> tagDOList, List<Long> collectIds) {
|
||||
List<TagResp> tagRespList = new ArrayList<>();
|
||||
if (CollectionUtils.isNotEmpty(tagDOList)) {
|
||||
tagDOList.stream().forEach(tagDO -> {
|
||||
TagResp tagResp = convert(tagDO);
|
||||
if (CollectionUtils.isNotEmpty(collectIds) && collectIds.contains(tagDO.getId())) {
|
||||
tagResp.setIsCollect(true);
|
||||
} else {
|
||||
tagResp.setIsCollect(false);
|
||||
}
|
||||
tagRespList.add(tagResp);
|
||||
});
|
||||
}
|
||||
return tagRespList;
|
||||
}
|
||||
|
||||
private void checkExit(TagReq tagReq) {
|
||||
TagFilter tagFilter = new TagFilter();
|
||||
tagFilter.setModelIds(Arrays.asList(tagReq.getModelId()));
|
||||
//tagFilter.setStatusList(Arrays.asList(StatusEnum.ONLINE.getCode(),StatusEnum.OFFLINE.getCode()));
|
||||
List<TagResp> tagResps = query(tagFilter);
|
||||
if (!CollectionUtils.isEmpty(tagResps)) {
|
||||
Long bizNameSameCount = tagResps.stream().filter(tagResp -> !tagResp.getId().equals(tagReq.getId()))
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
and ( id like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or
|
||||
name like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or
|
||||
biz_name like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or
|
||||
description like CONCAT('%',#{key , jdbcType=VARCHAR},'%')
|
||||
description like CONCAT('%',#{key , jdbcType=VARCHAR},'%'))
|
||||
</if>
|
||||
<if test="id != null">
|
||||
and id like CONCAT('%',#{id , jdbcType=VARCHAR},'%')
|
||||
|
||||
Reference in New Issue
Block a user