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(() => {
-