diff --git a/blog-core/src/main/java/com/zyd/blog/business/service/impl/BizArticleServiceImpl.java b/blog-core/src/main/java/com/zyd/blog/business/service/impl/BizArticleServiceImpl.java index e5da7bb8..a1a1f0c4 100644 --- a/blog-core/src/main/java/com/zyd/blog/business/service/impl/BizArticleServiceImpl.java +++ b/blog-core/src/main/java/com/zyd/blog/business/service/impl/BizArticleServiceImpl.java @@ -86,6 +86,15 @@ public PageInfo
findPageBreakByCondition(ArticleConditionVO vo) { List
boList = new LinkedList<>(); Article article = null; + ArrayList idArr = new ArrayList(); + for (BizArticle bizArticle : list) { + idArr.add(bizArticle.getId()); + } + Map lookMap = this.subLookNumMap(idArr.toArray(new Long[0])); + Map commentMap = this.subCommentNumMap(idArr.toArray(new Long[0])); + Map loveMap = this.subLoveNumMap(idArr.toArray(new Long[0])); + + for (BizArticle bizArticle : list) { BizArticle tagArticle = tagMap.get(bizArticle.getId()); if (null == tagArticle) { @@ -93,7 +102,7 @@ public PageInfo
findPageBreakByCondition(ArticleConditionVO vo) { } else { bizArticle.setTags(tagArticle.getTags()); } - this.subquery(bizArticle); + this.subquery(lookMap, commentMap, loveMap, bizArticle); article = new Article(bizArticle); article.setPassword(null); boList.add(article); @@ -379,28 +388,63 @@ public Article getByPrimaryKey(Long primaryKey) { if (null == entity) { return null; } - this.subquery(entity); + ArrayList idArr = new ArrayList(); + idArr.add(entity.getId()); + Map lookMap = this.subLookNumMap(idArr.toArray(new Long[0])); + Map commentMap = this.subCommentNumMap(idArr.toArray(new Long[0])); + Map loveMap = this.subLoveNumMap(idArr.toArray(new Long[0])); + + this.subquery(lookMap, commentMap, loveMap, entity); return new Article(entity); } - private void subquery(BizArticle entity) { - Long primaryKey = entity.getId(); + private Map subLookNumMap(Long[] idArr) { + List countList = bizArticleLookMapper.countGroupNumByIdArr(idArr); + Map map = new HashMap<>(); + for (BizGroupCount entity : countList) { + if (entity.getId() != null) { + map.put(entity.getId(), entity.getNum()); + } + } + return map; + } + + private Map subCommentNumMap(Long[] idArr) { + List countList = commentMapper.countGroupNumByIdArr(idArr); + Map map = new HashMap<>(); + for (BizGroupCount entity : countList) { + if (entity.getId() != null) { + map.put(entity.getId(), entity.getNum()); + } + } + return map; + } + + private Map subLoveNumMap(Long[] idArr) { + List countList = bizArticleLoveMapper.countGroupNumByIdArr(idArr); + Map map = new HashMap<>(); + for (BizGroupCount entity : countList) { + if (entity.getId() != null) { + map.put(entity.getId(), entity.getNum()); + } + } + return map; + } + + private void subquery(Map lookMap, Map commentMap, Map loveMap, BizArticle entity) { // 查看的次数 - BizArticleLook look = new BizArticleLook(); - look.setArticleId(primaryKey); - entity.setLookCount(bizArticleLookMapper.selectCount(look)); - - // 评论数 - Example example = new Example(BizComment.class); - Example.Criteria criteria = example.createCriteria(); - criteria.andEqualTo("sid", primaryKey); - criteria.andEqualTo("status", CommentStatusEnum.APPROVED.toString()); - entity.setCommentCount(commentMapper.selectCountByExample(example)); - - // 喜欢的次数 - BizArticleLove love = new BizArticleLove(); - love.setArticleId(primaryKey); - entity.setLoveCount(bizArticleLoveMapper.selectCount(love)); + if (lookMap.containsKey(entity.getId())){ + entity.setLookCount(lookMap.get(entity.getId()).intValue()); + } + if (commentMap.containsKey(entity.getId())){ + // 评论数 + entity.setCommentCount(commentMap.get(entity.getId()).intValue()); + } + + if (loveMap.containsKey(entity.getId())){ + // 喜欢的次数 + entity.setLoveCount(loveMap.get(entity.getId()).intValue()); + } } @Override diff --git a/blog-core/src/main/java/com/zyd/blog/persistence/beans/BizGroupCount.java b/blog-core/src/main/java/com/zyd/blog/persistence/beans/BizGroupCount.java new file mode 100644 index 00000000..5fa34a1b --- /dev/null +++ b/blog-core/src/main/java/com/zyd/blog/persistence/beans/BizGroupCount.java @@ -0,0 +1,23 @@ + +package com.zyd.blog.persistence.beans; + +import com.zyd.blog.framework.object.AbstractDO; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * + * + * @author generate by HouTu Generator + * @version 1.0 + * @date 2021/10/27 16:31 + * @since 1.8 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class BizGroupCount extends AbstractDO{ + private Long id; + private Long num; +} diff --git a/blog-core/src/main/java/com/zyd/blog/persistence/mapper/BizArticleLookMapper.java b/blog-core/src/main/java/com/zyd/blog/persistence/mapper/BizArticleLookMapper.java index fc7d8262..cf02ed17 100644 --- a/blog-core/src/main/java/com/zyd/blog/persistence/mapper/BizArticleLookMapper.java +++ b/blog-core/src/main/java/com/zyd/blog/persistence/mapper/BizArticleLookMapper.java @@ -4,10 +4,12 @@ import com.zyd.blog.business.vo.ArticleLookConditionVO; import com.zyd.blog.business.vo.CommentConditionVO; import com.zyd.blog.persistence.beans.BizArticleLook; +import com.zyd.blog.persistence.beans.BizGroupCount; import com.zyd.blog.plugin.BaseMapper; import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Map; /** * @author yadong.zhang (yadong.zhang0415(a)gmail.com) @@ -27,5 +29,13 @@ public interface BizArticleLookMapper extends BaseMapper{ */ List findPageBreakByCondition(ArticleLookConditionVO vo); + List findPageRecentLook(CommentConditionVO vo); + + /** + * 根据id批量获取总数 + * @param idArr + * @return + */ + List countGroupNumByIdArr(Long[] idArr); } diff --git a/blog-core/src/main/java/com/zyd/blog/persistence/mapper/BizArticleLoveMapper.java b/blog-core/src/main/java/com/zyd/blog/persistence/mapper/BizArticleLoveMapper.java index 59a71f5c..c1be943e 100644 --- a/blog-core/src/main/java/com/zyd/blog/persistence/mapper/BizArticleLoveMapper.java +++ b/blog-core/src/main/java/com/zyd/blog/persistence/mapper/BizArticleLoveMapper.java @@ -2,10 +2,12 @@ import com.zyd.blog.business.vo.ArticleLoveConditionVO; import com.zyd.blog.persistence.beans.BizArticleLove; +import com.zyd.blog.persistence.beans.BizGroupCount; import com.zyd.blog.plugin.BaseMapper; import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Map; /** * @author yadong.zhang (yadong.zhang0415(a)gmail.com) @@ -24,4 +26,11 @@ public interface BizArticleLoveMapper extends BaseMapper{ * @return */ List findPageBreakByCondition(ArticleLoveConditionVO vo); + + /** + * + * @param idArr + * @return + */ + List countGroupNumByIdArr(Long[] idArr); } diff --git a/blog-core/src/main/java/com/zyd/blog/persistence/mapper/BizCommentMapper.java b/blog-core/src/main/java/com/zyd/blog/persistence/mapper/BizCommentMapper.java index f045b5e6..f25d7c25 100644 --- a/blog-core/src/main/java/com/zyd/blog/persistence/mapper/BizCommentMapper.java +++ b/blog-core/src/main/java/com/zyd/blog/persistence/mapper/BizCommentMapper.java @@ -2,6 +2,7 @@ import com.zyd.blog.business.vo.CommentConditionVO; import com.zyd.blog.persistence.beans.BizComment; +import com.zyd.blog.persistence.beans.BizGroupCount; import com.zyd.blog.plugin.BaseMapper; import org.springframework.stereotype.Repository; @@ -45,4 +46,12 @@ public interface BizCommentMapper extends BaseMapper { * @param id */ BizComment getById(Long id); + + + /** + * 根据id批量获取总数 + * @param idArr + * @return + */ + List countGroupNumByIdArr(Long[] idArr); } diff --git a/blog-core/src/main/resources/mybatis/BizArticleLookMapper.xml b/blog-core/src/main/resources/mybatis/BizArticleLookMapper.xml index 1e15d7b3..f8b7b7b7 100644 --- a/blog-core/src/main/resources/mybatis/BizArticleLookMapper.xml +++ b/blog-core/src/main/resources/mybatis/BizArticleLookMapper.xml @@ -12,6 +12,11 @@ + + + + + - + + + diff --git a/blog-core/src/main/resources/mybatis/BizArticleLoveMapper.xml b/blog-core/src/main/resources/mybatis/BizArticleLoveMapper.xml index 61e664c9..7d186485 100644 --- a/blog-core/src/main/resources/mybatis/BizArticleLoveMapper.xml +++ b/blog-core/src/main/resources/mybatis/BizArticleLoveMapper.xml @@ -12,6 +12,11 @@ + + + + + + + + diff --git a/blog-core/src/main/resources/mybatis/BizCommentMapper.xml b/blog-core/src/main/resources/mybatis/BizCommentMapper.xml index ff56b46c..fb0f1c84 100644 --- a/blog-core/src/main/resources/mybatis/BizCommentMapper.xml +++ b/blog-core/src/main/resources/mybatis/BizCommentMapper.xml @@ -44,6 +44,10 @@ + + + + + SELECT + COUNT(id) as num, + id + FROM + biz_comment t + WHERE + id IN + + #{id} + + GROUP BY id +