mirror of https://github.com/halo-dev/halo
Extract pageListVoBy to convertToListVo in PostService
parent
5765f1a8af
commit
cad85c0bc7
|
@ -24,15 +24,15 @@ public class PostSimpleOutputDTO extends PostMinimalOutputDTO {
|
||||||
|
|
||||||
private String thumbnail;
|
private String thumbnail;
|
||||||
|
|
||||||
private Long visits;
|
private Long visits = 0L;
|
||||||
|
|
||||||
private Boolean disallowComment;
|
private Boolean disallowComment;
|
||||||
|
|
||||||
private String template;
|
private String template;
|
||||||
|
|
||||||
private Integer topPriority;
|
private Integer topPriority = 0;
|
||||||
|
|
||||||
private PostCreateFrom createFrom;
|
private PostCreateFrom createFrom;
|
||||||
|
|
||||||
private Long likes;
|
private Long likes = 0L;
|
||||||
}
|
}
|
||||||
|
|
|
@ -183,5 +183,14 @@ public interface PostService extends CrudService<Post, Integer> {
|
||||||
* @return a page of post simple output dto
|
* @return a page of post simple output dto
|
||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
Page<PostSimpleOutputDTO> convertTo(@NonNull Page<Post> postPage);
|
Page<PostSimpleOutputDTO> convertToSimpleDto(@NonNull Page<Post> postPage);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts to a page of post list vo.
|
||||||
|
*
|
||||||
|
* @param postPage post page must not be null
|
||||||
|
* @return a page of post list vo
|
||||||
|
*/
|
||||||
|
@NonNull
|
||||||
|
Page<PostListVO> convertToListVo(@NonNull Page<Post> postPage);
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,6 +116,13 @@ public class PostServiceImpl extends AbstractCrudService<Post, Integer> implemen
|
||||||
return postRepository.findAll(buildSpecByQuery(postQuery), pageable);
|
return postRepository.findAll(buildSpecByQuery(postQuery), pageable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build specification by post query.
|
||||||
|
*
|
||||||
|
* @param postQuery post query must not be null
|
||||||
|
* @return a post specification
|
||||||
|
*/
|
||||||
|
@NonNull
|
||||||
private Specification<Post> buildSpecByQuery(@NonNull PostQuery postQuery) {
|
private Specification<Post> buildSpecByQuery(@NonNull PostQuery postQuery) {
|
||||||
Assert.notNull(postQuery, "Post query must not be null");
|
Assert.notNull(postQuery, "Post query must not be null");
|
||||||
|
|
||||||
|
@ -167,44 +174,7 @@ public class PostServiceImpl extends AbstractCrudService<Post, Integer> implemen
|
||||||
public Page<PostListVO> pageListVoBy(PostStatus status, Pageable pageable) {
|
public Page<PostListVO> pageListVoBy(PostStatus status, Pageable pageable) {
|
||||||
Page<Post> postPage = pageBy(status, pageable);
|
Page<Post> postPage = pageBy(status, pageable);
|
||||||
|
|
||||||
List<Post> posts = postPage.getContent();
|
return convertToListVo(postPage);
|
||||||
|
|
||||||
Set<Integer> postIds = ServiceUtils.fetchProperty(posts, Post::getId);
|
|
||||||
|
|
||||||
// Get tag list map
|
|
||||||
Map<Integer, List<Tag>> tagListMap = postTagService.listTagListMapBy(postIds);
|
|
||||||
|
|
||||||
// Get category list map
|
|
||||||
Map<Integer, List<Category>> categoryListMap = postCategoryService.listCategoryListMap(postIds);
|
|
||||||
|
|
||||||
// Get comment count
|
|
||||||
Map<Integer, Long> commentCountMap = commentService.countByPostIds(postIds);
|
|
||||||
|
|
||||||
|
|
||||||
return postPage.map(post -> {
|
|
||||||
PostListVO postListVO = new PostListVO().convertFrom(post);
|
|
||||||
|
|
||||||
Optional.ofNullable(tagListMap.get(post.getId())).orElseGet(LinkedList::new);
|
|
||||||
|
|
||||||
// Set tags
|
|
||||||
postListVO.setTags(Optional.ofNullable(tagListMap.get(post.getId()))
|
|
||||||
.orElseGet(LinkedList::new)
|
|
||||||
.stream()
|
|
||||||
.map(tag -> new TagOutputDTO().<TagOutputDTO>convertFrom(tag))
|
|
||||||
.collect(Collectors.toList()));
|
|
||||||
|
|
||||||
// Set categories
|
|
||||||
postListVO.setCategories(Optional.ofNullable(categoryListMap.get(post.getId()))
|
|
||||||
.orElseGet(LinkedList::new)
|
|
||||||
.stream()
|
|
||||||
.map(category -> new CategoryOutputDTO().<CategoryOutputDTO>convertFrom(category))
|
|
||||||
.collect(Collectors.toList()));
|
|
||||||
|
|
||||||
// Set comment count
|
|
||||||
postListVO.setCommentCount(commentCountMap.getOrDefault(post.getId(), 0L));
|
|
||||||
|
|
||||||
return postListVO;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -393,6 +363,58 @@ public class PostServiceImpl extends AbstractCrudService<Post, Integer> implemen
|
||||||
return super.removeById(postId);
|
return super.removeById(postId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Page<PostSimpleOutputDTO> convertToSimpleDto(@NonNull Page<Post> postPage) {
|
||||||
|
Assert.notNull(postPage, "Post page must not be null");
|
||||||
|
|
||||||
|
return postPage.map(post -> new PostSimpleOutputDTO().convertFrom(post));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Page<PostListVO> convertToListVo(Page<Post> postPage) {
|
||||||
|
Assert.notNull(postPage, "Post page must not be null");
|
||||||
|
|
||||||
|
List<Post> posts = postPage.getContent();
|
||||||
|
|
||||||
|
Set<Integer> postIds = ServiceUtils.fetchProperty(posts, Post::getId);
|
||||||
|
|
||||||
|
// Get tag list map
|
||||||
|
Map<Integer, List<Tag>> tagListMap = postTagService.listTagListMapBy(postIds);
|
||||||
|
|
||||||
|
// Get category list map
|
||||||
|
Map<Integer, List<Category>> categoryListMap = postCategoryService.listCategoryListMap(postIds);
|
||||||
|
|
||||||
|
// Get comment count
|
||||||
|
Map<Integer, Long> commentCountMap = commentService.countByPostIds(postIds);
|
||||||
|
|
||||||
|
|
||||||
|
return postPage.map(post -> {
|
||||||
|
PostListVO postListVO = new PostListVO().convertFrom(post);
|
||||||
|
|
||||||
|
Optional.ofNullable(tagListMap.get(post.getId())).orElseGet(LinkedList::new);
|
||||||
|
|
||||||
|
// Set tags
|
||||||
|
postListVO.setTags(Optional.ofNullable(tagListMap.get(post.getId()))
|
||||||
|
.orElseGet(LinkedList::new)
|
||||||
|
.stream()
|
||||||
|
.map(tag -> new TagOutputDTO().<TagOutputDTO>convertFrom(tag))
|
||||||
|
.collect(Collectors.toList()));
|
||||||
|
|
||||||
|
// Set categories
|
||||||
|
postListVO.setCategories(Optional.ofNullable(categoryListMap.get(post.getId()))
|
||||||
|
.orElseGet(LinkedList::new)
|
||||||
|
.stream()
|
||||||
|
.map(category -> new CategoryOutputDTO().<CategoryOutputDTO>convertFrom(category))
|
||||||
|
.collect(Collectors.toList()));
|
||||||
|
|
||||||
|
// Set comment count
|
||||||
|
postListVO.setCommentCount(commentCountMap.getOrDefault(post.getId(), 0L));
|
||||||
|
|
||||||
|
return postListVO;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts to post minimal output dto.
|
* Converts to post minimal output dto.
|
||||||
*
|
*
|
||||||
|
@ -411,13 +433,6 @@ public class PostServiceImpl extends AbstractCrudService<Post, Integer> implemen
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Page<PostSimpleOutputDTO> convertTo(@NonNull Page<Post> postPage) {
|
|
||||||
Assert.notNull(postPage, "Post page must not be null");
|
|
||||||
|
|
||||||
return postPage.map(post -> new PostSimpleOutputDTO().convertFrom(post));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts to post detail vo.
|
* Converts to post detail vo.
|
||||||
*
|
*
|
||||||
|
|
|
@ -12,6 +12,7 @@ import run.halo.app.model.enums.PostStatus;
|
||||||
import run.halo.app.model.params.PostParam;
|
import run.halo.app.model.params.PostParam;
|
||||||
import run.halo.app.model.params.PostQuery;
|
import run.halo.app.model.params.PostQuery;
|
||||||
import run.halo.app.model.vo.PostDetailVO;
|
import run.halo.app.model.vo.PostDetailVO;
|
||||||
|
import run.halo.app.model.vo.PostListVO;
|
||||||
import run.halo.app.service.*;
|
import run.halo.app.service.*;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
@ -53,10 +54,10 @@ public class PostController {
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
@ApiOperation("Lists posts")
|
@ApiOperation("Lists posts")
|
||||||
public Page<PostSimpleOutputDTO> pageBy(@PageableDefault(sort = "updateTime", direction = DESC) Pageable pageable,
|
public Page<PostListVO> pageBy(@PageableDefault(sort = "updateTime", direction = DESC) Pageable pageable,
|
||||||
PostQuery postQuery) {
|
PostQuery postQuery) {
|
||||||
Page<Post> postPage = postService.pageBy(postQuery, pageable);
|
Page<Post> postPage = postService.pageBy(postQuery, pageable);
|
||||||
return postService.convertTo(postPage);
|
return postService.convertToListVo(postPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("latest")
|
@GetMapping("latest")
|
||||||
|
|
Loading…
Reference in New Issue