From 8aa076ded1e7e4b826bcc919ab5fc5feb36b4919 Mon Sep 17 00:00:00 2001 From: ikmkj <1@qq,com> Date: Tue, 29 Jul 2025 19:48:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(search):=20=E5=AE=9E=E7=8E=B0=E6=AD=8C?= =?UTF-8?q?=E5=8D=95=E6=90=9C=E7=B4=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在前端 Playlist.vue 中添加搜索结果展示逻辑 - 在后端 PlaylistServiceImpl 中实现关键词搜索的查询条件 - 优化搜索性能,使用 distinct 查询避免重复结果 - 搜索范围包括歌单名、描述、创建者用户名以及歌单内的音乐名 --- music-houduan/pom.xml | 12 ++++++------ .../service/impl/PlaylistServiceImpl.java | 8 +++++++- music-qianduan/src/views/Playlist.vue | 5 +++-- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/music-houduan/pom.xml b/music-houduan/pom.xml index da190c4..44afb67 100644 --- a/music-houduan/pom.xml +++ b/music-houduan/pom.xml @@ -33,12 +33,12 @@ - - - - - - + + org.springframework.boot + spring-boot-devtools + runtime + true + diff --git a/music-houduan/src/main/java/com/test/musichouduan/service/impl/PlaylistServiceImpl.java b/music-houduan/src/main/java/com/test/musichouduan/service/impl/PlaylistServiceImpl.java index 60630d9..6404b26 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/service/impl/PlaylistServiceImpl.java +++ b/music-houduan/src/main/java/com/test/musichouduan/service/impl/PlaylistServiceImpl.java @@ -90,10 +90,16 @@ public class PlaylistServiceImpl implements PlaylistService { // 构建查询条件 Specification spec = (root, query, cb) -> { List predicates = new ArrayList<>(); + query.distinct(true); // 添加 distinct 查询 // 关键字查询 if (StringUtils.hasText(keyword)) { - predicates.add(cb.like(root.get("name"), "%" + keyword + "%")); + // 搜索歌单名、描述、创建者用户名以及歌单内的音乐名 + Predicate p1 = cb.like(root.get("name"), "%" + keyword + "%"); + Predicate p2 = cb.like(root.get("description"), "%" + keyword + "%"); + Predicate p3 = cb.like(root.join("creator").get("username"), "%" + keyword + "%"); + Predicate p4 = cb.like(root.join("musics", jakarta.persistence.criteria.JoinType.LEFT).get("name"), "%" + keyword + "%"); + predicates.add(cb.or(p1, p2, p3, p4)); } // 类型查询 diff --git a/music-qianduan/src/views/Playlist.vue b/music-qianduan/src/views/Playlist.vue index fa6f9c9..848acf0 100644 --- a/music-qianduan/src/views/Playlist.vue +++ b/music-qianduan/src/views/Playlist.vue @@ -243,7 +243,7 @@ onMounted(() => { -
+

热门歌单

{
-

全部歌单

+

搜索结果

+

全部歌单