diff --git a/java/PreAfterList.java b/java/PreAfterList.java new file mode 100644 index 0000000000000000000000000000000000000000..f73552c0ace26401f73e3f2aff7c11882ca91f21 --- /dev/null +++ b/java/PreAfterList.java @@ -0,0 +1,45 @@ +package com.gitee.bullshit.code; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; + +public class PreAfterList { + + // 需求:根据 ID 获取指定 ID 文章,包括当前 ID 及上一条和下一条的内容集合 + // 原样贴出天才同事的操作如下,看完肺都气炸了!! 看官们你觉得正确做法是什么?? + public ArticleVO getArticleVO(Long id) { + ArticleVO vo = new ArticleVO(getById(id)); + List
list = articleMapper.selectList(Wrappers.
lambdaQuery().orderByDesc(Article::getCreateTime)); + if (list.size() == 1) { + return vo; + } else if (list.size() == 2) { + if (list.get(0).getId().equals(vo.getId())) { + // first is itself + vo.setAfter(list.get(1)); + } else { + vo.setPre(list.get(0)); + } + } else { + // > 3 + Article pre = list.get(0); + if (pre.getId().equals(vo.getId())) { + vo.setPre(null); + vo.setAfter(list.get(1)); + return vo; + } + for (Article article : list) { + if (article.getId().equals(vo.getId())) { + vo.setPre(pre); + int preIdx = list.indexOf(pre); + if (preIdx + 2 >= list.size()) { + break; + } + vo.setAfter(list.get(preIdx + 2)); + break; + } else { + pre = article; + } + } + } + return vo; + } +}