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 e13a117..f5d2562 100644
--- a/src/main/java/com/yolo/keyborad/service/impl/KeyboardThemesServiceImpl.java
+++ b/src/main/java/com/yolo/keyborad/service/impl/KeyboardThemesServiceImpl.java
@@ -118,22 +118,13 @@ public class KeyboardThemesServiceImpl extends ServiceImpl推荐规则:根据真实下载量降序排序,排除用户已购买的主题和当前查看的主题,最多返回8个主题
+ 推荐规则:根据真实下载量降序排序,排除当前查看的主题,最多返回8个主题
@param userId 用户ID
@param themeId 当前主题ID,需要从推荐列表中排除
- * @return 推荐主题列表,包含主题详情和购买状态(推荐列表中的主题购买状态均为未购买)
+ * @return 推荐主题列表,包含主题详情和购买状态
*/
public List getRecommendedThemes(Long userId, Long themeId) {
- // 查询用户已购买的主题ID集合
- Set purchasedThemeIds = purchaseService.lambdaQuery()
- .eq(KeyboardThemePurchase::getUserId, userId)
- .eq(KeyboardThemePurchase::getPayStatus, (short) 1)
- .list()
- .stream()
- .map(KeyboardThemePurchase::getThemeId)
- .collect(Collectors.toSet());
-
// 构建查询器
LambdaQueryChainWrapper queryWrapper = this.lambdaQuery()
.eq(KeyboardThemes::getDeleted, false)
@@ -145,21 +136,25 @@ public class KeyboardThemesServiceImpl extends ServiceImpl themesList = queryWrapper.list();
- // 只取前8条数据
+ // 查询用户已购买的主题ID集合
+ Set purchasedThemeIds = purchaseService.lambdaQuery()
+ .eq(KeyboardThemePurchase::getUserId, userId)
+ .eq(KeyboardThemePurchase::getPayStatus, (short) 1)
+ .list()
+ .stream()
+ .map(KeyboardThemePurchase::getThemeId)
+ .collect(Collectors.toSet());
+
+ // 只取前8条数据并设置购买状态
return themesList.stream()
.limit(8)
.map(theme -> {
KeyboardThemesRespVO vo = BeanUtil.copyProperties(theme, KeyboardThemesRespVO.class);
- // 推荐列表中的主题均为未购买状态
- vo.setIsPurchased(false);
+ // 设置主题的实际购买状态
+ vo.setIsPurchased(purchasedThemeIds.contains(theme.getId()));
return vo;
}).collect(Collectors.toList());
}