From 198caef614ca1b6ab75fd549348a08a7a5de0e8e Mon Sep 17 00:00:00 2001 From: MGZero Date: Sat, 2 Nov 2024 10:02:47 -0400 Subject: [PATCH] clean up dataprovider for categories (#33) add banner.txt set version to 1.0.0 --- pom.xml | 2 +- .../forum/CategoryDataProvider.java | 43 ---------------- .../dataprovider/forum/ForumDataProvider.java | 49 +++++++++++++++++-- src/main/resources/banner.txt | 9 ++++ 4 files changed, 55 insertions(+), 48 deletions(-) delete mode 100644 src/main/java/com/zfgc/zfgbb/dataprovider/forum/CategoryDataProvider.java create mode 100644 src/main/resources/banner.txt diff --git a/pom.xml b/pom.xml index c7a0cea..5b4fc1d 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ com.zfgc zfgbb - 0.0.1-SNAPSHOT + 1.0.0-SNAPSHOT war zfgbb Demo project for Spring Boot diff --git a/src/main/java/com/zfgc/zfgbb/dataprovider/forum/CategoryDataProvider.java b/src/main/java/com/zfgc/zfgbb/dataprovider/forum/CategoryDataProvider.java deleted file mode 100644 index e85fa94..0000000 --- a/src/main/java/com/zfgc/zfgbb/dataprovider/forum/CategoryDataProvider.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.zfgc.zfgbb.dataprovider.forum; - -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Repository; - -import com.zfgc.zfgbb.dao.BoardDao; -import com.zfgc.zfgbb.dao.CategoryDao; -import com.zfgc.zfgbb.dataprovider.AbstractDataProvider; -import com.zfgc.zfgbb.dbo.BoardDboExample; -import com.zfgc.zfgbb.dbo.BoardSummaryViewDboExample; -import com.zfgc.zfgbb.dbo.CategoryDboExample; -import com.zfgc.zfgbb.mappers.BoardSummaryViewDboMapper; -import com.zfgc.zfgbb.model.forum.Board; -import com.zfgc.zfgbb.model.forum.BoardSummary; -import com.zfgc.zfgbb.model.forum.Category; - -@Repository -public class CategoryDataProvider extends AbstractDataProvider { - - @Autowired - private CategoryDao categoryDao; - - @Autowired - private BoardDao boardDao; - - @Autowired - private BoardSummaryViewDboMapper boardSummaryMapper; - - public List getCategories(CategoryDboExample exC){ - List categories = super.convertDboListToModel(categoryDao.get(exC), Category.class); - - categories.forEach(cat ->{ - BoardSummaryViewDboExample ex = new BoardSummaryViewDboExample(); - ex.createCriteria().andCategoryIdEqualTo(cat.getCategoryId()); - cat.setBoards(convertDboListToModel(boardSummaryMapper.selectByExample(ex), BoardSummary.class)); - }); - - return categories; - } - -} \ No newline at end of file diff --git a/src/main/java/com/zfgc/zfgbb/dataprovider/forum/ForumDataProvider.java b/src/main/java/com/zfgc/zfgbb/dataprovider/forum/ForumDataProvider.java index dd48fb9..852af19 100644 --- a/src/main/java/com/zfgc/zfgbb/dataprovider/forum/ForumDataProvider.java +++ b/src/main/java/com/zfgc/zfgbb/dataprovider/forum/ForumDataProvider.java @@ -1,5 +1,6 @@ package com.zfgc.zfgbb.dataprovider.forum; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.function.Function; @@ -10,6 +11,7 @@ import com.zfgc.zfgbb.dao.BoardDao; import com.zfgc.zfgbb.dao.BoardPermissionViewDao; +import com.zfgc.zfgbb.dao.CategoryDao; import com.zfgc.zfgbb.dao.ThreadDao; import com.zfgc.zfgbb.dataprovider.AbstractDataProvider; import com.zfgc.zfgbb.dbo.BoardDbo; @@ -36,7 +38,7 @@ public class ForumDataProvider extends AbstractDataProvider { private BoardDao boardDao; @Autowired - private CategoryDataProvider categoryDataProvider; + private CategoryDao categoryDao; @Autowired private ThreadDao threadDao; @@ -74,12 +76,16 @@ public Board getBoard(Integer boardId, Integer pageNo, Integer threadsPerPage) { } private List getBoardSummaries(Integer parentBoardId){ + return getBoardSummaries(Arrays.asList(parentBoardId)); + } + + private List getBoardSummaries(List parentBoardId){ BoardSummaryViewDboExample bEx = new BoardSummaryViewDboExample(); - bEx.createCriteria().andParentBoardIdEqualTo(parentBoardId); + bEx.createCriteria().andParentBoardIdIn(parentBoardId); List result = (boardSummaryMapper.selectByExample(bEx).stream().map(b -> mapper.map(b, BoardSummary.class)).collect(Collectors.toList())); ChildBoardViewDboExample cEx = new ChildBoardViewDboExample(); - cEx.createCriteria().andParentBoardIdEqualTo(parentBoardId); + cEx.createCriteria().andParentBoardIdIn(parentBoardId); Map> childBoards = childBoardMapper.selectByExample(cEx).stream() .map(c -> mapper.map(c, ChildBoard.class)) @@ -93,6 +99,28 @@ private List getBoardSummaries(Integer parentBoardId){ return result; } + private List getBoardSummariesByCategory(List categoryId){ + BoardSummaryViewDboExample bEx = new BoardSummaryViewDboExample(); + bEx.createCriteria().andCategoryIdIn(categoryId); + List result = (boardSummaryMapper.selectByExample(bEx).stream().map(b -> mapper.map(b, BoardSummary.class)).collect(Collectors.toList())); + + if(!result.isEmpty()) { + ChildBoardViewDboExample cEx = new ChildBoardViewDboExample(); + cEx.createCriteria().andParentBoardIdIn(result.stream().map(BoardSummary::getBoardId).collect(Collectors.toList())); + + Map> childBoards = childBoardMapper.selectByExample(cEx).stream() + .map(c -> mapper.map(c, ChildBoard.class)) + .collect(Collectors.groupingBy(ChildBoard::getParentBoardId)); + + result.forEach(bs -> { + bs.setChildBoards(childBoards.get(bs.getBoardId())); + }); + } + + + return result; + } + public Forum getForum() { Forum forum = new Forum(); @@ -101,7 +129,7 @@ public Forum getForum() { CategoryDboExample exC = new CategoryDboExample(); exC.createCriteria().andParentBoardIdEqualTo(0); - List categories = categoryDataProvider.getCategories(exC); + List categories = getCategories(exC); forum.setCategories(categories); @@ -111,6 +139,19 @@ public Forum getForum() { return forum; } + public List getCategories(CategoryDboExample exC){ + List categories = super.convertDboListToModel(categoryDao.get(exC), Category.class); + List categoryIds = categories.stream().map(Category::getCategoryId).collect(Collectors.toList()); + + Map> summaries = getBoardSummariesByCategory(categoryIds).stream().collect(Collectors.groupingBy(BoardSummary::getCategoryId)); + + categories.forEach(cat ->{ + cat.setBoards(summaries.get(cat.getCategoryId())); + }); + + return categories; + } + public List getBoardPermissions(Integer boardId){ BoardPermissionViewDboExample bEx = new BoardPermissionViewDboExample(); bEx.createCriteria().andBoardIdEqualTo(boardId); diff --git a/src/main/resources/banner.txt b/src/main/resources/banner.txt new file mode 100644 index 0000000..246b8d9 --- /dev/null +++ b/src/main/resources/banner.txt @@ -0,0 +1,9 @@ + ________ _______ _______ .______ .______ +| / | ____| / _____|| _ \ | _ \ +`---/ / | |__ | | __ | |_) | | |_) | + / / | __| | | |_ | | _ < | _ < + / /----.| | | |__| | | |_) | | |_) | + /________||__| \______| |______/ |______/ + +${application.version} +Powered by Spring Boot ${spring-boot.version} \ No newline at end of file