From 77e71e32968abf51363b77d7673196df4b480f70 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Sun, 20 Oct 2024 13:27:45 +0800 Subject: [PATCH] =?UTF-8?q?TASK:aida=E4=BD=9C=E5=93=81=E9=9B=86=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/service/impl/PortfolioServiceImpl.java | 91 +++++++++---------- 1 file changed, 41 insertions(+), 50 deletions(-) diff --git a/src/main/java/com/ai/da/service/impl/PortfolioServiceImpl.java b/src/main/java/com/ai/da/service/impl/PortfolioServiceImpl.java index 2773a006..6936a532 100644 --- a/src/main/java/com/ai/da/service/impl/PortfolioServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/PortfolioServiceImpl.java @@ -474,60 +474,51 @@ public class PortfolioServiceImpl extends ServiceImpl topThree = new ArrayList<>(); + List excludeIds = new ArrayList<>(); // 存放需要排除的 ID 列表 + // 获取前三点赞和前三浏览的作品集,并将其排除在分页查询之外 + if (query.getPage() == 1 && (query.getGetMyPortfolio() != 1 || query.getGetLikePortfolio() != 1)) { + // 获取前三点赞的作品集 ID + List topThreeLike = getTopThreeLikeFromRedis(RedisUtil.PORTFOLIO_LIKE_KEY); + List topThreeView = getTopThreeViewFromRedis(RedisUtil.PORTFOLIO_VIEW_KEY, topThreeLike); + // 获取前三点赞的作品集 + if (!CollectionUtils.isEmpty(topThreeLike)) { + QueryWrapper queryLike = new QueryWrapper<>(); + queryLike.in("id", topThreeLike); + List topThreeLikePortfolio = baseMapper.selectList(queryLike); + topThree.addAll(topThreeLikePortfolio); + excludeIds.addAll(topThreeLike); // 添加到排除 ID 列表 + } + // 获取前三浏览的作品集 + if (!CollectionUtils.isEmpty(topThreeView)) { + QueryWrapper queryView = new QueryWrapper<>(); + queryView.in("id", topThreeView); + List topThreeViewPortfolio = baseMapper.selectList(queryView); + topThree.addAll(topThreeViewPortfolio); + excludeIds.addAll(topThreeView); // 添加到排除 ID 列表 + } + } + // 在正常分页查询中排除前三点赞和前三浏览的作品集 + if (!CollectionUtils.isEmpty(excludeIds)) { + qw.lambda().notIn(Portfolio::getId, excludeIds); + }*/ + // 按更新时间排序 qw.lambda().orderByDesc(Portfolio::getUpdateDate); - IPage page; - if (Objects.isNull(query.getAccountId()) && query.getGetMyPortfolio() != 1 && query.getGetLikePortfolio() != 1) { - List topThree = new ArrayList<>(); - List excludeIds = new ArrayList<>(); // 存放需要排除的 ID 列表 - // 获取前三点赞和前三浏览的作品集,并将其排除在分页查询之外 - if (query.getPage() == 1 && (query.getGetMyPortfolio() != 1 && query.getGetLikePortfolio() != 1)) { - // 获取前三点赞的作品集 ID - List topThreeLike = getTopThreeLikeFromRedis(RedisUtil.PORTFOLIO_LIKE_KEY); - List topThreeView = getTopThreeViewFromRedis(RedisUtil.PORTFOLIO_VIEW_KEY, topThreeLike); + // 执行分页查询 + IPage page = portfolioMapper.selectPage(new Page<>(query.getPage(), query.getSize()), qw); - // 获取前三点赞的作品集 - if (!CollectionUtils.isEmpty(topThreeLike)) { - QueryWrapper queryLike = new QueryWrapper<>(); - queryLike.in("id", topThreeLike); - List topThreeLikePortfolio = baseMapper.selectList(queryLike); - topThree.addAll(topThreeLikePortfolio); - excludeIds.addAll(topThreeLike); // 添加到排除 ID 列表 - } - - // 获取前三浏览的作品集 - if (!CollectionUtils.isEmpty(topThreeView)) { - QueryWrapper queryView = new QueryWrapper<>(); - queryView.in("id", topThreeView); - List topThreeViewPortfolio = baseMapper.selectList(queryView); - topThree.addAll(topThreeViewPortfolio); - excludeIds.addAll(topThreeView); // 添加到排除 ID 列表 - } - } - - // 在正常分页查询中排除前三点赞和前三浏览的作品集 - if (!CollectionUtils.isEmpty(excludeIds)) { - qw.lambda().notIn(Portfolio::getId, excludeIds); - } - - // 执行分页查询 - page = portfolioMapper.selectPage(new Page<>(query.getPage(), query.getSize()), qw); - - // 如果前三点赞和浏览不为空,将它们添加到分页查询的结果最前面 - if (!topThree.isEmpty()) { - List records = page.getRecords(); - if (!CollectionUtils.isEmpty(records)) { - records.addAll(0, topThree); // 添加到查询结果的开头 - }else { - records = topThree; - } - page.setRecords(records); - } - }else { - // 执行分页查询 - page = portfolioMapper.selectPage(new Page<>(query.getPage(), query.getSize()), qw); - } + /*// 如果前三点赞和浏览不为空,将它们添加到分页查询的结果最前面 + if (!topThree.isEmpty()) { + List records = page.getRecords(); + records.addAll(0, topThree); // 添加到查询结果的开头 + page.setRecords(records); + }*/ // 将 Portfolio 转换为 PortfolioVO 并进行相关处理 IPage convert = page.convert((Function) portfolio -> {