Add list previous and next posts service

pull/146/head
johnniang 2019-04-21 14:31:10 +08:00
parent 384286782f
commit 38eadc9674
2 changed files with 58 additions and 18 deletions

View File

@ -224,9 +224,41 @@ public interface PostService extends CrudService<Post, Integer> {
@NonNull
Post filterIfEncrypt(@NonNull Post post);
/**
* Gets previous post.
*
* @param date date must not be null
* @return an optional post
*/
@NonNull
Optional<Post> getPrePost(@NonNull Date createTime);
Optional<Post> getPrePost(@NonNull Date date);
/**
* Gets next post.
*
* @param date date must not be null
* @return an optional post
*/
@NonNull
Optional<Post> getNextPost(@NonNull Date createTime);
Optional<Post> getNextPost(@NonNull Date date);
/**
* Lists previous posts.
*
* @param date date must not be null
* @param size previous max post size
* @return a list of previous post
*/
@NonNull
List<Post> listPrePosts(@NonNull Date date, int size);
/**
* Lits next posts.
*
* @param date date must not be null
* @param size next max post size
* @return a list of next post
*/
@NonNull
List<Post> listNextPosts(@NonNull Date date, int size);
}

View File

@ -447,29 +447,37 @@ public class PostServiceImpl extends AbstractCrudService<Post, Integer> implemen
}
@Override
public Optional<Post> getPrePost(Date createTime) {
Assert.notNull(createTime, "Create time must not be null");
public Optional<Post> getPrePost(Date date) {
List<Post> posts = listPrePosts(date, 1);
Page<Post> prePostPage = postRepository.findAllByStatusAndCreateTimeAfter(PostStatus.PUBLISHED, createTime, PageRequest.of(0, 1));
if (prePostPage.isEmpty()) {
return Optional.empty();
}
return Optional.of(prePostPage.getContent().get(0));
return CollectionUtils.isEmpty(posts) ? Optional.empty() : Optional.of(posts.get(0));
}
@Override
public Optional<Post> getNextPost(Date createTime) {
Assert.notNull(createTime, "Create time must not be null");
public Optional<Post> getNextPost(Date date) {
List<Post> posts = listNextPosts(date, 1);
Page<Post> nextPostPage = postRepository.findAllByStatusAndCreateTimeBefore(PostStatus.PUBLISHED, createTime, PageRequest.of(0, 1));
if (nextPostPage.isEmpty()) {
return Optional.empty();
return CollectionUtils.isEmpty(posts) ? Optional.empty() : Optional.of(posts.get(0));
}
return Optional.of(nextPostPage.getContent().get(0));
@Override
public List<Post> listPrePosts(Date date, int size) {
Assert.notNull(date, "Date must not be null");
return postRepository.findAllByStatusAndCreateTimeAfter(PostStatus.PUBLISHED,
date,
PageRequest.of(0, size, Sort.by(DESC, "createTime")))
.getContent();
}
@Override
public List<Post> listNextPosts(Date date, int size) {
Assert.notNull(date, "Date must not be null");
return postRepository.findAllByStatusAndCreateTimeBefore(PostStatus.PUBLISHED,
date,
PageRequest.of(0, size, Sort.by(DESC, "createTime")))
.getContent();
}
/**