diff --git a/src/main/java/com/yolo/keyborad/config/SaTokenConfigure.java b/src/main/java/com/yolo/keyborad/config/SaTokenConfigure.java index a91191b..fabce72 100644 --- a/src/main/java/com/yolo/keyborad/config/SaTokenConfigure.java +++ b/src/main/java/com/yolo/keyborad/config/SaTokenConfigure.java @@ -92,6 +92,7 @@ public class SaTokenConfigure implements WebMvcConfigurer { "/themes/purchase/list", "/themes/detail", "/themes/recommended", + "/themes/search", "/user-themes/batch-delete", "/products/listByType", "/products/detail", diff --git a/src/main/java/com/yolo/keyborad/controller/ThemesController.java b/src/main/java/com/yolo/keyborad/controller/ThemesController.java index 0e6030a..db4074d 100644 --- a/src/main/java/com/yolo/keyborad/controller/ThemesController.java +++ b/src/main/java/com/yolo/keyborad/controller/ThemesController.java @@ -91,4 +91,12 @@ public class ThemesController { return ResultUtils.success(result); } + @GetMapping("/search") + @Operation(summary = "搜索主题", description = "根据主题名称模糊搜索主题") + public BaseResponse> searchThemes(@RequestParam String themeName) { + Long userId = StpUtil.getLoginIdAsLong(); + List result = themesService.searchThemesByName(themeName, userId); + return ResultUtils.success(result); + } + } diff --git a/src/main/java/com/yolo/keyborad/service/KeyboardThemesService.java b/src/main/java/com/yolo/keyborad/service/KeyboardThemesService.java index 8e23099..6c2ffc3 100644 --- a/src/main/java/com/yolo/keyborad/service/KeyboardThemesService.java +++ b/src/main/java/com/yolo/keyborad/service/KeyboardThemesService.java @@ -36,4 +36,12 @@ public interface KeyboardThemesService extends IService{ */ List getRecommendedThemes(Long userId); + /** + * 根据主题名称模糊搜索主题 + * @param themeName 主题名称关键字 + * @param userId 用户ID + * @return 主题列表 + */ + List searchThemesByName(String themeName, Long userId); + } 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 b0667d9..a18cd02 100644 --- a/src/main/java/com/yolo/keyborad/service/impl/KeyboardThemesServiceImpl.java +++ b/src/main/java/com/yolo/keyborad/service/impl/KeyboardThemesServiceImpl.java @@ -157,4 +157,30 @@ public class KeyboardThemesServiceImpl extends ServiceImpl searchThemesByName(String themeName, Long userId) { + // 根据主题名称模糊搜索 + List themesList = this.lambdaQuery() + .eq(KeyboardThemes::getDeleted, false) + .eq(KeyboardThemes::getThemeStatus, true) + .like(KeyboardThemes::getThemeName, themeName) + .list(); + + // 查询用户已购买的主题ID集合 + Set purchasedThemeIds = purchaseService.lambdaQuery() + .eq(KeyboardThemePurchase::getUserId, userId) + .eq(KeyboardThemePurchase::getPayStatus, (short) 1) + .list() + .stream() + .map(KeyboardThemePurchase::getThemeId) + .collect(Collectors.toSet()); + + // 转换为VO并设置购买状态 + return themesList.stream().map(theme -> { + KeyboardThemesRespVO vo = BeanUtil.copyProperties(theme, KeyboardThemesRespVO.class); + vo.setIsPurchased(purchasedThemeIds.contains(theme.getId())); + return vo; + }).collect(Collectors.toList()); + } }