按标签查询作品

This commit is contained in:
2024-10-08 13:13:13 +08:00
parent a597f7a67a
commit 1bdc71998b
6 changed files with 37 additions and 19 deletions

View File

@@ -121,7 +121,7 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean publish(MultipartFile file, String data, List<TagsDTO> tagsDTOS) {
public Boolean publish(MultipartFile file, String data) {
AuthPrincipalVo authPrincipalVo = UserContext.getUserHolder();
PortfolioDTO portfolioDTO = JSONObject.parseObject(data, PortfolioDTO.class);
QueryWrapper<Portfolio> existSameNameQw = new QueryWrapper<>();
@@ -296,7 +296,9 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
portfolioId = portfolio.getId();
}
// 记录作品添加的标签
addTagsForPortfolio(tagsDTOS, portfolioId);
if (!portfolioDTO.getTagsDTO().isEmpty()){
addTagsForPortfolio(portfolioDTO.getTagsDTO(), portfolioId);
}
}
return Boolean.TRUE;
@@ -1059,11 +1061,17 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
public void addTagsForPortfolio(List<TagsDTO> tagsDTOS, Long portfolioId) {
// 遍历数组添加到t_portfolio_tags表中没有id的tag添加到t_tags表中
// todo 1、如何处理重复的tag
tagsDTOS.forEach(tag -> {
PortfolioTags portfolioTags = new PortfolioTags();
if (Objects.isNull(tag.getId())){
Tags newTag = new Tags();
newTag.setTagName(tag.getTagName());
String tagName = tag.getTagName();
/*if (tagName.startsWith("#")){
tagName = tagName.replace("#", "");
}*/
newTag.setTagName(tagName);
newTag.setCreateTime(LocalDateTime.now());
tagsService.save(newTag);
portfolioTags.setTagId(newTag.getId());
@@ -1076,11 +1084,17 @@ public class PortfolioServiceImpl extends ServiceImpl<PortfolioMapper, Portfolio
});
}
public List<PortfolioVO> queryPortfolioByTag(String tagName){
public List<PortfolioVO> queryPortfolioByTag(String tagName, Long tagId){
ArrayList<PortfolioVO> portfolioVOS = new ArrayList<>();
List<Map<String, String>> matchingTags = tagsMapper.getMatchingTags(tagName);
Map<String, String> tagMap = matchingTags.get(0);
long bestMatchTagId = Long.parseLong(tagMap.get("id"));
long bestMatchTagId;
if (Objects.isNull(tagId)){
List<Map<String, String>> matchingTags = tagsMapper.getMatchingTags(tagName);
Map<String, String> tagMap = matchingTags.get(0);
bestMatchTagId = Long.parseLong(tagMap.get("id"));
}else {
bestMatchTagId = tagId;
}
QueryWrapper<PortfolioTags> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("tag_id", bestMatchTagId).select("portfolio_id");

View File

@@ -19,7 +19,7 @@ public class TagsServiceImpl extends ServiceImpl<TagsMapper, Tags> implements Ta
public List<Tags> getTags(String tagPrefix){
// 1、根据tag前缀,查询
QueryWrapper<Tags> queryWrapper = new QueryWrapper<>();
queryWrapper.likeLeft("tag_name", tagPrefix);
queryWrapper.likeRight("tag_name", tagPrefix);
// 需返回标签内容和id
return baseMapper.selectList(queryWrapper);