diff --git a/src/main/java/com/yolo/keyborad/service/impl/KeyboardThemesServiceImpl.java b/src/main/java/com/yolo/keyborad/service/impl/KeyboardThemesServiceImpl.java index 22e985d..b0667d9 100644 --- a/src/main/java/com/yolo/keyborad/service/impl/KeyboardThemesServiceImpl.java +++ b/src/main/java/com/yolo/keyborad/service/impl/KeyboardThemesServiceImpl.java @@ -1,6 +1,7 @@ package com.yolo.keyborad.service.impl; import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.yolo.keyborad.model.entity.KeyboardThemePurchase; import com.yolo.keyborad.service.KeyboardThemePurchaseService; import jakarta.annotation.Resource; @@ -132,15 +133,23 @@ public class KeyboardThemesServiceImpl extends ServiceImpl queryWrapper = this.lambdaQuery() .eq(KeyboardThemes::getDeleted, false) .eq(KeyboardThemes::getThemeStatus, true) - .notIn(!purchasedThemeIds.isEmpty(), KeyboardThemes::getId, purchasedThemeIds) - .orderByDesc(KeyboardThemes::getRealDownloadCount) - .last("LIMIT 8") - .list() - .stream() + .orderByDesc(KeyboardThemes::getRealDownloadCount); + + // 如果有已购买的主题,排除它们 + if (!purchasedThemeIds.isEmpty()) { + queryWrapper.notIn(KeyboardThemes::getId, purchasedThemeIds); + } + + // 查询推荐主题列表,限制8条 + List themesList = queryWrapper.list(); + + // 只取前8条数据 + return themesList.stream() + .limit(8) .map(theme -> { KeyboardThemesRespVO vo = BeanUtil.copyProperties(theme, KeyboardThemesRespVO.class); // 推荐列表中的主题均为未购买状态