本文最后更新于 2026年4月18日 晚上
归档接口的实现
归档接口的需求
要按分页需求
要按年月来进行分类
代码实现
创建ArchiveController添加相关接口方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| @RestController @RequestMapping("/archive") @Api(tags = "归档", description = "归档相关接口") public class ArchiveController { @Autowired private ArchiveService archiveService;
@SystemLog(businessName = "查询归档列表") @GetMapping("/getArchiveList") @ApiOperation(value = "归档列表", notes = "获取归档列表(按年月分组)") public ResponseResult getArchiveList() { return archiveService.getArchiveList(); } }
|
创建ArchiveServiceImpl类,实现业务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| @Service public class ArchiveServiceImpl implements ArchiveService {
@Autowired private ArticleMapper articleMapper;
@Override public ResponseResult getArchiveList() { LambdaQueryWrapper<Article> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Article::getStatus, SystemConstants.ARTICLE_STATUS_NORMAL) .eq(Article::getDelFlag, SystemConstants.NOT_DELETED) .orderByDesc(Article::getCreateTime);
List<Article> articles = articleMapper.selectList(queryWrapper);
Map<String, List<Article>> groupedArticles = articles.stream() .collect(Collectors.groupingBy(article -> { Calendar calendar = Calendar.getInstance(); calendar.setTime(article.getCreateTime()); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; return year + "-" + month; }, LinkedHashMap::new, Collectors.toList()));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List<ArchiveVo> archiveVos = groupedArticles.entrySet().stream() .map(entry -> { String[] yearMonth = entry.getKey().split("-"); Integer year = Integer.parseInt(yearMonth[0]); Integer month = Integer.parseInt(yearMonth[1]);
List<ArchiveArticleVo> articleVos = entry.getValue().stream() .map(article -> new ArchiveArticleVo( article.getId(), article.getTitle(), sdf.format(article.getCreateTime()) )) .collect(Collectors.toList());
return new ArchiveVo(year, month, articleVos.size(), articleVos); }) .collect(Collectors.toList());
return ResponseResult.okResult(archiveVos); } }
|
创建ArchiveArticleVo
PS:该系列只做为作者学习开发项目做的笔记用
不一定符合读者来学习,仅供参考
预告
后续会记录博客的开发过程
每次学习会做一份笔记来进行发表
“一花一世界,一叶一菩提”
版权所有 © 2026 云梦泽
欢迎访问我的个人网站:https://hgt12.github.io/