前期配置Banner轮显为置顶文章时会按照已发布状态的所有文章中获取指定数量文章再判定是否有置顶标志,然后再筛选出来显示,这样就存在一个问题,如果我最近发布的文章都不想置顶怎么办?超过指定数量之后就会不显示了,那怎么行?
背景
考虑到前面的情况,于是需要想办法解决才是。
修改步骤
第一步:模板中的banner文件需要把latest修改为topped,与后台Java程序中对应起来即可。
第二步:在PostTagDirective
中添加一个case选项,修改如下:
case "topped":
int top1 = Integer.parseInt(params.get("top").toString());
env.setVariable("posts", builder.build()
.wrap(postService.convertToListVo(postService.listLatest(top1,1))));
break;
第三步:在BasePostService
接口中添加对应的方法声明:
@NonNull
List<POST> listLatest(int top, int topPriority);
第四步:在对应的实现类里添加接口的实现:
@Override
public List<POST> listLatest(int top,int topPriority) {
Assert.isTrue(top > 0, "Top number must not be less than 0");
PageRequest latestPageable = PageRequest.of(0, top, Sort.by(DESC, "createTime"));
return basePostRepository.findAllByStatusAndTopPriority(PostStatus.PUBLISHED, topPriority, latestPageable)
.getContent();
}
第五步:在BasePostRepository
接口中添加对应的方法声明:
@NonNull
Page<POST> findAllByStatusAndTopPriority(@NonNull PostStatus status, @NonNull Integer topPriority, @NonNull Pageable pageable);
到这里就结束了,只筛选置顶文章中的指定条数即可,关于jpa的东西之前没怎么用过,工作中一直用mybatis,后面需要自己了解一下jpa的一些内容方便自己使用。
评论区