Skip to content

Commit df280a0

Browse files
committed
feat(admin): article nums of category list
1 parent 052efaa commit df280a0

8 files changed

Lines changed: 48 additions & 13 deletions

File tree

blog-admin-web/src/views/article/category/index.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<el-table-column label="Name" prop="name" width="100"></el-table-column>
1313
<el-table-column label="Code" prop="code" width="80"></el-table-column>
1414
<el-table-column label="Description" prop="description"></el-table-column>
15+
<el-table-column label="Articles" prop="articleCount" width="75"></el-table-column>
1516
<el-table-column label="UpdateTime" prop="updateTime"></el-table-column>
1617

1718
<el-table-column label="Operate">

blog-admin/src/main/java/com/hackyle/blog/admin/module/article/mapper/ArticleAuthorMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ public interface ArticleAuthorMapper extends BaseMapper<ArticleAuthorRelationEnt
1515

1616
int deleteByArticleIds(@Param("articleIds") Set<Long> idSet);
1717

18-
List<ArticleAuthorRelationDto> getArticleAuthor(@Param("articleIds")Set<Long> articleId);
18+
List<ArticleAuthorRelationDto> getAuthorByArticleId(@Param("articleIds")Set<Long> articleId);
1919

2020
}

blog-admin/src/main/java/com/hackyle/blog/admin/module/article/mapper/ArticleCategoryMapper.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,7 @@ public interface ArticleCategoryMapper extends BaseMapper<ArticleCategoryRelatio
1515

1616
int deleteByArticleIds(@Param("articleIds")Set<Long> idSet);
1717

18-
List<ArticleCategoryRelationDto> getArticleCategory(@Param("articleIds")Set<Long> articleId);
18+
List<ArticleCategoryRelationDto> getCategoryByArticleId(@Param("articleIds")Set<Long> articleId);
19+
20+
List<ArticleCategoryRelationDto> getArticleByCategoryId(@Param("categoryIds")Set<Long> categoryIds);
1921
}

blog-admin/src/main/java/com/hackyle/blog/admin/module/article/model/vo/CategoryVo.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,9 @@ public class CategoryVo {
4444
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
4545
private LocalDateTime createTime;
4646

47+
/**
48+
* 分类下的文章数量
49+
*/
50+
private Integer articleCount;
51+
4752
}

blog-admin/src/main/java/com/hackyle/blog/admin/module/article/service/impl/ArticleServiceImpl.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -429,9 +429,9 @@ public PageInfo<ArticleListVo> list(ArticleQueryDto queryDto) {
429429

430430
Set<Long> articleIds = articleListVoList.stream().map(ArticleListVo::getId).collect(Collectors.toSet());
431431
//查文章的作者
432-
Map<Long, String> articleAuthorMap = getArticleAuthor(articleIds);
432+
Map<Long, String> articleAuthorMap = getAuthorByArticleId(articleIds);
433433
//查文章的分类
434-
Map<Long, String> articleCategoryMap = getArticleCategory(articleIds);
434+
Map<Long, String> articleCategoryMap = getCategoryByArticleId(articleIds);
435435

436436
for (ArticleListVo articleVo : articleListVoList) {
437437
//没有进行更新操作时,updateTime值为null,设置为createTime
@@ -448,11 +448,11 @@ public PageInfo<ArticleListVo> list(ArticleQueryDto queryDto) {
448448
return pageInfo;
449449
}
450450

451-
private Map<Long, String> getArticleAuthor(Set<Long> articleIds) {
451+
private Map<Long, String> getAuthorByArticleId(Set<Long> articleIds) {
452452
if(CollectionUtil.isEmpty(articleIds)) {
453453
return Collections.emptyMap();
454454
}
455-
List<ArticleAuthorRelationDto> authors = articleAuthorMapper.getArticleAuthor(articleIds);
455+
List<ArticleAuthorRelationDto> authors = articleAuthorMapper.getAuthorByArticleId(articleIds);
456456
if(CollectionUtil.isEmpty(authors)) {
457457
return Collections.emptyMap();
458458
}
@@ -466,11 +466,11 @@ private Map<Long, String> getArticleAuthor(Set<Long> articleIds) {
466466
return res;
467467
}
468468

469-
private Map<Long, String> getArticleCategory(Set<Long> articleIds) {
469+
private Map<Long, String> getCategoryByArticleId(Set<Long> articleIds) {
470470
if(CollectionUtil.isEmpty(articleIds)) {
471471
return Collections.emptyMap();
472472
}
473-
List<ArticleCategoryRelationDto> categories = articleCategoryMapper.getArticleCategory(articleIds);
473+
List<ArticleCategoryRelationDto> categories = articleCategoryMapper.getCategoryByArticleId(articleIds);
474474
if(CollectionUtil.isEmpty(categories)) {
475475
return Collections.emptyMap();
476476
}

blog-admin/src/main/java/com/hackyle/blog/admin/module/article/service/impl/CategoryServiceImpl.java

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
package com.hackyle.blog.admin.module.article.service.impl;
22

3+
import cn.hutool.core.collection.CollectionUtil;
34
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
45
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
56
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
67
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
78
import com.github.pagehelper.PageHelper;
89
import com.github.pagehelper.PageInfo;
10+
import com.hackyle.blog.admin.module.article.mapper.ArticleCategoryMapper;
911
import com.hackyle.blog.admin.module.article.mapper.CategoryMapper;
12+
import com.hackyle.blog.admin.module.article.model.dto.ArticleCategoryRelationDto;
1013
import com.hackyle.blog.admin.module.article.model.dto.CategoryAddDto;
1114
import com.hackyle.blog.admin.module.article.model.dto.CategoryQueryDto;
1215
import com.hackyle.blog.admin.module.article.model.dto.CategoryUpdateDto;
16+
import com.hackyle.blog.admin.module.article.model.entity.ArticleCategoryRelationEntity;
1317
import com.hackyle.blog.admin.module.article.model.entity.CategoryEntity;
1418
import com.hackyle.blog.admin.module.article.model.vo.CategoryVo;
1519
import com.hackyle.blog.admin.module.article.service.CategoryService;
@@ -23,14 +27,19 @@
2327
import org.springframework.stereotype.Service;
2428

2529
import java.util.List;
30+
import java.util.Map;
31+
import java.util.Objects;
2632
import java.util.Set;
33+
import java.util.stream.Collectors;
2734

2835
@Slf4j
2936
@Service
3037
public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, CategoryEntity>
3138
implements CategoryService {
3239
@Autowired
3340
private CategoryMapper categoryMapper;
41+
@Autowired
42+
private ArticleCategoryMapper articleCategoryMapper;
3443

3544
@Override
3645
public boolean add(CategoryAddDto categoryAddDto) {
@@ -128,9 +137,18 @@ public PageInfo<CategoryVo> list(CategoryQueryDto queryDto) {
128137

129138
PageInfo<CategoryVo> pageInfo = PageHelperUtils.getPageInfo(categoryEntityList, CategoryVo.class);
130139

131-
for (CategoryVo categoryVo : pageInfo.getList()) {
132-
if(categoryVo.getUpdateTime() == null) {
133-
categoryVo.setUpdateTime(categoryVo.getCreateTime());
140+
if(CollectionUtil.isNotEmpty(categoryEntityList)) {
141+
Set<Long> categoryIds = categoryEntityList.stream().map(CategoryEntity::getId).filter(Objects::nonNull).collect(Collectors.toSet());
142+
//收集每个分类下的文章数
143+
List<ArticleCategoryRelationDto> articleCategory = articleCategoryMapper.getArticleByCategoryId(categoryIds);
144+
145+
Map<Long, List<ArticleCategoryRelationDto>> categoryMap = articleCategory.stream().collect(Collectors.groupingBy(ArticleCategoryRelationDto::getCategoryId));
146+
for (CategoryVo categoryVo : pageInfo.getList()) {
147+
List<ArticleCategoryRelationDto> articles = categoryMap.get(categoryVo.getId());
148+
categoryVo.setArticleCount(CollectionUtil.isEmpty(articles) ? 0 : articles.size());
149+
if(categoryVo.getUpdateTime() == null) {
150+
categoryVo.setUpdateTime(categoryVo.getCreateTime());
151+
}
134152
}
135153
}
136154

blog-admin/src/main/resources/mapper/article/ArticleAuthorMapper.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
</foreach>
2020
</delete>
2121

22-
<select id="getArticleAuthor" resultType="com.hackyle.blog.admin.module.article.model.dto.ArticleAuthorRelationDto">
22+
<select id="getAuthorByArticleId" resultType="com.hackyle.blog.admin.module.article.model.dto.ArticleAuthorRelationDto">
2323
SELECT a.article_id, a.author_id, b.nick_name, b.real_name
2424
FROM article_author_relation a JOIN article_author b ON b.id=a.author_id
2525
WHERE a.article_id IN

blog-admin/src/main/resources/mapper/article/ArticleCategoryMapper.xml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,21 @@
1919
</foreach>
2020
</delete>
2121

22-
<select id="getArticleCategory" resultType="com.hackyle.blog.admin.module.article.model.dto.ArticleCategoryRelationDto">
22+
<select id="getCategoryByArticleId" resultType="com.hackyle.blog.admin.module.article.model.dto.ArticleCategoryRelationDto">
2323
SELECT a.article_id, a.category_id, b.name, b.code
2424
FROM article_category_relation a JOIN article_category b ON b.id=a.category_id
2525
WHERE a.article_id IN
2626
<foreach collection="articleIds" item="id" separator="," open="(" close=")">
2727
#{id}
2828
</foreach>
2929
</select>
30+
31+
<select id="getArticleByCategoryId" resultType="com.hackyle.blog.admin.module.article.model.dto.ArticleCategoryRelationDto">
32+
SELECT a.article_id, a.category_id, b.name, b.code
33+
FROM article_category_relation a JOIN article_category b ON b.id=a.category_id
34+
WHERE a.category_id IN
35+
<foreach collection="categoryIds" item="id" separator="," open="(" close=")">
36+
#{id}
37+
</foreach>
38+
</select>
3039
</mapper>

0 commit comments

Comments
 (0)