mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-13 21:17:08 +00:00
[improvement](headless) add queryTag for tagMarket (#772)
This commit is contained in:
@@ -4,6 +4,7 @@ public enum TypeEnums {
|
|||||||
|
|
||||||
METRIC,
|
METRIC,
|
||||||
DIMENSION,
|
DIMENSION,
|
||||||
|
TAG,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
ENTITY,
|
ENTITY,
|
||||||
VIEW,
|
VIEW,
|
||||||
|
|||||||
@@ -16,6 +16,10 @@ public class TagResp extends SchemaItem {
|
|||||||
|
|
||||||
private String type;
|
private String type;
|
||||||
|
|
||||||
|
private Boolean isCollect;
|
||||||
|
|
||||||
|
private boolean hasAdminRes;
|
||||||
|
|
||||||
private Map<String, Object> ext = new HashMap<>();
|
private Map<String, Object> ext = new HashMap<>();
|
||||||
|
|
||||||
private TagDefineType tagDefineType = TagDefineType.FIELD;
|
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;
|
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.pojo.User;
|
||||||
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
|
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.request.TagReq;
|
||||||
import com.tencent.supersonic.headless.api.pojo.response.TagResp;
|
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 com.tencent.supersonic.headless.server.service.TagService;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
@@ -53,7 +55,15 @@ public class TagController {
|
|||||||
public TagResp getTag(@PathVariable("id") Long id,
|
public TagResp getTag(@PathVariable("id") Long id,
|
||||||
HttpServletRequest request,
|
HttpServletRequest request,
|
||||||
HttpServletResponse response) {
|
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;
|
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.auth.api.authentication.pojo.User;
|
||||||
import com.tencent.supersonic.headless.api.pojo.request.TagReq;
|
import com.tencent.supersonic.headless.api.pojo.request.TagReq;
|
||||||
import com.tencent.supersonic.headless.api.pojo.response.TagResp;
|
import com.tencent.supersonic.headless.api.pojo.response.TagResp;
|
||||||
import com.tencent.supersonic.headless.server.pojo.TagFilter;
|
import com.tencent.supersonic.headless.server.pojo.TagFilter;
|
||||||
|
import com.tencent.supersonic.headless.server.pojo.TagFilterPage;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface TagService {
|
public interface TagService {
|
||||||
@@ -14,7 +17,9 @@ public interface TagService {
|
|||||||
|
|
||||||
void delete(Long id, User user) throws Exception;
|
void delete(Long id, User user) throws Exception;
|
||||||
|
|
||||||
TagResp getMetric(Long id);
|
TagResp getTag(Long id);
|
||||||
|
|
||||||
List<TagResp> query(TagFilter tagFilter);
|
List<TagResp> query(TagFilter tagFilter);
|
||||||
|
|
||||||
|
PageInfo<TagResp> queryPage(TagFilterPage tagFilterPage, User user);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,25 +1,38 @@
|
|||||||
package com.tencent.supersonic.headless.server.service.impl;
|
package com.tencent.supersonic.headless.server.service.impl;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
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.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.StatusEnum;
|
||||||
|
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
|
||||||
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
|
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
|
||||||
import com.tencent.supersonic.headless.api.pojo.TagDefineParams;
|
import com.tencent.supersonic.headless.api.pojo.TagDefineParams;
|
||||||
import com.tencent.supersonic.headless.api.pojo.enums.TagDefineType;
|
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.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.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.dataobject.TagDO;
|
||||||
import com.tencent.supersonic.headless.server.persistence.repository.TagRepository;
|
import com.tencent.supersonic.headless.server.persistence.repository.TagRepository;
|
||||||
import com.tencent.supersonic.headless.server.pojo.TagFilter;
|
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.service.TagService;
|
||||||
import com.tencent.supersonic.headless.server.utils.NameCheckUtils;
|
import com.tencent.supersonic.headless.server.utils.NameCheckUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@@ -31,9 +44,14 @@ import org.springframework.stereotype.Service;
|
|||||||
public class TagServiceImpl implements TagService {
|
public class TagServiceImpl implements TagService {
|
||||||
|
|
||||||
private final TagRepository tagRepository;
|
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.tagRepository = tagRepository;
|
||||||
|
this.modelService = modelService;
|
||||||
|
this.collectService = collectService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -85,7 +103,7 @@ public class TagServiceImpl implements TagService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TagResp getMetric(Long id) {
|
public TagResp getTag(Long id) {
|
||||||
return convert(tagRepository.getTagById(id));
|
return convert(tagRepository.getTagById(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,10 +116,73 @@ public class TagServiceImpl implements TagService {
|
|||||||
return new ArrayList<>();
|
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) {
|
private void checkExit(TagReq tagReq) {
|
||||||
TagFilter tagFilter = new TagFilter();
|
TagFilter tagFilter = new TagFilter();
|
||||||
tagFilter.setModelIds(Arrays.asList(tagReq.getModelId()));
|
tagFilter.setModelIds(Arrays.asList(tagReq.getModelId()));
|
||||||
//tagFilter.setStatusList(Arrays.asList(StatusEnum.ONLINE.getCode(),StatusEnum.OFFLINE.getCode()));
|
|
||||||
List<TagResp> tagResps = query(tagFilter);
|
List<TagResp> tagResps = query(tagFilter);
|
||||||
if (!CollectionUtils.isEmpty(tagResps)) {
|
if (!CollectionUtils.isEmpty(tagResps)) {
|
||||||
Long bizNameSameCount = tagResps.stream().filter(tagResp -> !tagResp.getId().equals(tagReq.getId()))
|
Long bizNameSameCount = tagResps.stream().filter(tagResp -> !tagResp.getId().equals(tagReq.getId()))
|
||||||
|
|||||||
@@ -71,7 +71,7 @@
|
|||||||
and ( id like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or
|
and ( id like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or
|
||||||
name like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or
|
name like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or
|
||||||
biz_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>
|
||||||
<if test="id != null">
|
<if test="id != null">
|
||||||
and id like CONCAT('%',#{id , jdbcType=VARCHAR},'%')
|
and id like CONCAT('%',#{id , jdbcType=VARCHAR},'%')
|
||||||
|
|||||||
Reference in New Issue
Block a user