筛选功能

This commit is contained in:
menxipeng
2025-08-19 15:08:12 +08:00
parent ef6b959ab5
commit 7c467fe498
6 changed files with 80 additions and 2 deletions

View File

@@ -99,4 +99,12 @@ public interface MusicInfoMapper
* @return 音乐图片URL
*/
String selectLikeMusicImageByUserId(@Param("userId") Long userId);
/**
* 根据作者名称或音乐名称模糊搜索音乐
*
* @param search 搜索关键词
* @return 音乐信息列表
*/
List<MusicInfo> selectMusicInfoBySearch(@Param("search") String search);
}

View File

@@ -116,4 +116,12 @@ public interface IMusicInfoService
* @return 音乐图片URL
*/
String findLikeMusicImageByUserId(Long userId);
/**
* 根据作者名称或音乐名称模糊搜索音乐
*
* @param search 搜索关键词
* @return 音乐信息列表,包含是否是当前用户喜欢的标识
*/
List<MusicInfo> findLikeSearch(String search);
}

View File

@@ -18,6 +18,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 音乐信息Service业务层处理
@@ -382,6 +383,38 @@ public class MusicInfoServiceImpl implements IMusicInfoService
public String findLikeMusicImageByUserId(Long userId) {
return musicInfoMapper.selectLikeMusicImageByUserId(userId);
}
/**
* 根据作者名称或音乐名称模糊搜索音乐
*
* @param search 搜索关键词
* @return 音乐信息列表,包含是否是当前用户喜欢的标识
*/
@Override
public List<MusicInfo> findLikeSearch(String search) {
// 根据作者名称或音乐名称模糊搜索音乐
List<MusicInfo> musicList = musicInfoMapper.selectMusicInfoBySearch(search);
// 获取当前用户ID
Long userId = SecurityUtils.getUserId();
if (userId != null) {
// 查询用户喜欢的音乐列表
List<MusicInfo> likeList = musicInfoMapper.selectLikeMusicByUser(userId);
List<Long> likeMusicIds = likeList.stream().map(MusicInfo::getMusicId).collect(Collectors.toList());
// 设置是否是用户喜欢的标识
for (MusicInfo music : musicList) {
if (likeMusicIds.contains(music.getMusicId())) {
music.setLike(true);
} else {
music.setLike(false);
}
}
}
return musicList;
}
//TODO: 待完善
public Map<String, String> getMixMusicInfo(String musicId){

View File

@@ -195,4 +195,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE ulm.user_id = #{userId} AND mi.is_del = 0 AND mi.img_addr IS NOT NULL AND mi.img_addr != ''
LIMIT 1
</select>
<select id="selectMusicInfoBySearch" resultMap="MusicInfoResult">
<include refid="selectMusicInfoVo"/>
WHERE (name LIKE concat(#{search}, '%') OR author LIKE concat(#{search}, '%'))
AND is_del = 0 AND shelf = 1
</select>
</mapper>