Commit 4ee89f4c by 段启岩

博客修改时可以删除标签和话题了

parent 563b384c
...@@ -39,11 +39,10 @@ public class BlogForm { ...@@ -39,11 +39,10 @@ public class BlogForm {
@NullOrNotBlank(message = "请传入有效的博客内容", groups = UpdateGroup.class) @NullOrNotBlank(message = "请传入有效的博客内容", groups = UpdateGroup.class)
private String content; private String content;
@Size(min = 1, message = "请至少传一个topicId")
@ElementNotBlank(message = "topicId内容不能为空") @ElementNotBlank(message = "topicId内容不能为空")
private List<String> topicIds; private List<String> topicIds;
@Size(min = 1, message = "请至少传一个tagId") @Size(max = 5, message = "标签个数不能超过5个")
@ElementNotBlank(message = "tagId内容不能为空") @ElementNotBlank(message = "tagId内容不能为空")
private List<String> tagIds; private List<String> tagIds;
......
...@@ -351,32 +351,30 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB ...@@ -351,32 +351,30 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
* @param tagIds * @param tagIds
* @param topicIds * @param topicIds
* @param blogId * @param blogId
* @param deleteOld * @param update
*/ */
private void updateTopicAndTagReference(List<String> topicIds, List<String> tagIds, String blogId, boolean deleteOld) { private void updateTopicAndTagReference(List<String> topicIds, List<String> tagIds, String blogId, boolean update) {
// 如果用户传的topicIds为[]并且现在在执行修改博客的操作,就删除该博客以前引用的所有话题
if (CollectionUtils.isEmpty(topicIds) && update) {
deleteOldTopicReferences(blogId);
}
// 如果用户传的tagIds为[]并且现在在执行修改博客的操作,就删除该博客以前引用的所有标签
if (CollectionUtils.isEmpty(tagIds) && update) {
deleteOldTagReferences(blogId);
}
// 1.处理话题引用 // 1.处理话题引用
if (!CollectionUtils.isEmpty(topicIds)) { if (!CollectionUtils.isEmpty(topicIds)) {
// 获取要引用的话题,不正确的话题ID会被自动过滤 // 获取要引用的话题,不正确的话题ID会被自动过滤
List<Topic> topicList = topicService.listByIds(topicIds); List<String> existsTopicIds = topicService.listByIds(topicIds).stream().map(Topic::getTopicId).collect(Collectors.toList());
List<String> existsTopicIds = topicList.stream().map(Topic::getTopicId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(existsTopicIds)) { if (!CollectionUtils.isEmpty(existsTopicIds)) {
if (deleteOld) {
// 删除旧话题引用并更新话题的引用量
QueryWrapper<TopicReference> topicReferenceQueryWrapper = new QueryWrapper<>();
topicReferenceQueryWrapper.eq("referencer_id", blogId);
// 减少对应话题的引用数量
List<String> referencedTopicIds =
topicReferenceService.list(topicReferenceQueryWrapper).stream()
.map(TopicReference::getTopicId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(referencedTopicIds)) {
// 减少话题引用测试
topicService.decreaseReferenceCountBatch(referencedTopicIds, 1);
}
// 删除话题引用
topicReferenceService.remove(topicReferenceQueryWrapper);
// 如果现在执行的是修改操作,则删除旧话题引用并更新话题的引用量
if (update) {
deleteOldTopicReferences(blogId);
} }
List<TopicReference> topicReferenceList = new ArrayList<>(); List<TopicReference> topicReferenceList = new ArrayList<>();
for (String topicId : existsTopicIds) { for (String topicId : existsTopicIds) {
TopicReference topicReference = new TopicReference(); TopicReference topicReference = new TopicReference();
...@@ -397,20 +395,9 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB ...@@ -397,20 +395,9 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
List<String> existsTagIds = tagService.listByIds(tagIds).stream().map(Tag::getTagId).collect(Collectors.toList()); List<String> existsTagIds = tagService.listByIds(tagIds).stream().map(Tag::getTagId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(existsTagIds)) { if (!CollectionUtils.isEmpty(existsTagIds)) {
if (deleteOld) { // 如果现在执行的是修改操作,则删除旧话题引用并更新标签的引用
// 删除旧标签引用并更新标签的引用量 if (update) {
QueryWrapper<BlogTag> blogTagQueryWrapper = new QueryWrapper<>(); deleteOldTagReferences(blogId);
blogTagQueryWrapper.eq("blog_id", blogId);
// 减少对应话题的引用数量
List<String> referencedTagIds =
blogTagService.list(blogTagQueryWrapper).stream()
.map(BlogTag::getTagId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(referencedTagIds)) {
// 减少标签引用次数
tagService.decreaseReferenceCountBatch(referencedTagIds, 1);
}
// 删除标签引用
blogTagService.remove(blogTagQueryWrapper);
} }
List<BlogTag> blogTagList = new ArrayList<>(); List<BlogTag> blogTagList = new ArrayList<>();
...@@ -428,6 +415,47 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB ...@@ -428,6 +415,47 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
} }
} }
/**
* 删除博客博客的旧话题引用
* @param blogId
*/
private void deleteOldTopicReferences(String blogId) {
// 删除旧话题引用
QueryWrapper<TopicReference> topicReferenceQueryWrapper = new QueryWrapper<>();
topicReferenceQueryWrapper.eq("referencer_id", blogId);
// 减少对应话题的引用数量
List<String> referencedTopicIds =
topicReferenceService.list(topicReferenceQueryWrapper).stream()
.map(TopicReference::getTopicId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(referencedTopicIds)) {
// 减少话题引用
topicService.decreaseReferenceCountBatch(referencedTopicIds, 1);
}
// 删除话题引用
topicReferenceService.remove(topicReferenceQueryWrapper);
}
/**
* 删除博客的旧标签引用
* @param blogId
*/
private void deleteOldTagReferences(String blogId) {
// 删除旧标签引用
QueryWrapper<BlogTag> blogTagQueryWrapper = new QueryWrapper<>();
blogTagQueryWrapper.eq("blog_id", blogId);
// 减少对应话题的引用数量
List<String> referencedTagIds =
blogTagService.list(blogTagQueryWrapper).stream()
.map(BlogTag::getTagId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(referencedTagIds)) {
// 减少标签引用次数
tagService.decreaseReferenceCountBatch(referencedTagIds, 1);
}
// 删除标签引用
blogTagService.remove(blogTagQueryWrapper);
}
@Override @Override
public IPage<Blog> getHotBlogPage(Integer pageNumber, Integer pageSize) { public IPage<Blog> getHotBlogPage(Integer pageNumber, Integer pageSize) {
QueryWrapper blogQueryWrapper = new QueryWrapper(); QueryWrapper blogQueryWrapper = new QueryWrapper();
......
...@@ -40,13 +40,11 @@ public class QuestionForm { ...@@ -40,13 +40,11 @@ public class QuestionForm {
private String questionAbstract; private String questionAbstract;
@ApiModelProperty("标签") @ApiModelProperty("标签")
@Size(min = 1, message = "请至少传一个tagId") @Size(max = 5, message = "标签个数不能超过5个")
@Size(max = 5, message = "问题标签个数不能超过5个")
@ElementNotBlank(message = "tag内容不能为空") @ElementNotBlank(message = "tag内容不能为空")
private List<String> tagIds; private List<String> tagIds;
@ApiModelProperty("话题ID") @ApiModelProperty("话题ID")
@Size(min = 1, message = "请至少传一个topicId")
@ElementNotBlank(message = "topic内容不能为空") @ElementNotBlank(message = "topic内容不能为空")
private List<String> topicIds; private List<String> topicIds;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment