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 acf06ff3..518a90ec 100644 --- a/src/main/java/com/ai/da/service/impl/PortfolioServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/PortfolioServiceImpl.java @@ -430,7 +430,7 @@ 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 列表 - // 执行分页查询 - IPage page = portfolioMapper.selectPage(new Page<>(query.getPage(), query.getSize()), qw); + // 获取前三点赞和前三浏览的作品集,并将其排除在分页查询之外 + 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 (!topThree.isEmpty() && (query.getGetMyPortfolio() != 1 && query.getGetLikePortfolio() != 1)) { - List records = page.getRecords(); - records.addAll(0, topThree); // 添加到查询结果的开头 - page.setRecords(records); + // 获取前三点赞的作品集 + 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); } // 将 Portfolio 转换为 PortfolioVO 并进行相关处理