From 7c467fe49820f77270f12aa51b3b69eec8913da0 Mon Sep 17 00:00:00 2001 From: menxipeng Date: Tue, 19 Aug 2025 15:08:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=9B=E9=80=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/client/MusicController.java | 16 +++++++++ .../com/ruoyi/common/utils/SecurityUtils.java | 11 +++++-- .../ruoyi/system/mapper/MusicInfoMapper.java | 8 +++++ .../system/service/IMusicInfoService.java | 8 +++++ .../service/impl/MusicInfoServiceImpl.java | 33 +++++++++++++++++++ .../mapper/system/MusicInfoMapper.xml | 6 ++++ 6 files changed, 80 insertions(+), 2 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/client/MusicController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/client/MusicController.java index f5d354c..bd86255 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/client/MusicController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/client/MusicController.java @@ -1,6 +1,7 @@ package com.ruoyi.web.controller.client; +import cn.hutool.core.util.StrUtil; import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; @@ -15,6 +16,7 @@ import com.ruoyi.system.service.IMusicSceneService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -156,5 +158,19 @@ public class MusicController extends BaseController { } + /** + * 根据作者名称或音乐名称 模糊搜索音乐 + * @param search 作者名称 或 音乐名称 + * @return 音乐信息,增加是否是我喜欢的标识 + */ + @GetMapping("/find") + public AjaxResult findLikeSearch(@RequestParam("search") String search){ + if (search == null || StrUtil.isEmpty(search)){ + return AjaxResult.success(new ArrayList<>()); + } + // 根据作者名称或音乐名称 模糊搜索音乐,返回信息要包含是否是我喜欢的标识 + List musicInfos = musicService.findLikeSearch(search); + return AjaxResult.success(musicInfos); + } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java index 737b010..3e714b5 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java @@ -28,7 +28,11 @@ public class SecurityUtils { try { - return getLoginUser().getUserId(); + LoginUser logUse = getLoginUser(); + if (logUse != null){ + return logUse.getUserId(); + } + return null; } catch (Exception e) { @@ -75,7 +79,10 @@ public class SecurityUtils { try { - return (LoginUser) getAuthentication().getPrincipal(); + if (getAuthentication().getPrincipal() instanceof LoginUser){ + return (LoginUser) getAuthentication().getPrincipal(); + } + return null; } catch (Exception e) { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/MusicInfoMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/MusicInfoMapper.java index 9d62e42..50ce5ed 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/MusicInfoMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/MusicInfoMapper.java @@ -99,4 +99,12 @@ public interface MusicInfoMapper * @return 音乐图片URL */ String selectLikeMusicImageByUserId(@Param("userId") Long userId); + + /** + * 根据作者名称或音乐名称模糊搜索音乐 + * + * @param search 搜索关键词 + * @return 音乐信息列表 + */ + List selectMusicInfoBySearch(@Param("search") String search); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IMusicInfoService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IMusicInfoService.java index 000d1df..89feb5f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IMusicInfoService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IMusicInfoService.java @@ -116,4 +116,12 @@ public interface IMusicInfoService * @return 音乐图片URL */ String findLikeMusicImageByUserId(Long userId); + + /** + * 根据作者名称或音乐名称模糊搜索音乐 + * + * @param search 搜索关键词 + * @return 音乐信息列表,包含是否是当前用户喜欢的标识 + */ + List findLikeSearch(String search); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MusicInfoServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MusicInfoServiceImpl.java index c683a01..20e4ac1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MusicInfoServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MusicInfoServiceImpl.java @@ -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 findLikeSearch(String search) { + + + // 根据作者名称或音乐名称模糊搜索音乐 + List musicList = musicInfoMapper.selectMusicInfoBySearch(search); + + // 获取当前用户ID + Long userId = SecurityUtils.getUserId(); + if (userId != null) { + // 查询用户喜欢的音乐列表 + List likeList = musicInfoMapper.selectLikeMusicByUser(userId); + List 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 getMixMusicInfo(String musicId){ diff --git a/ruoyi-system/src/main/resources/mapper/system/MusicInfoMapper.xml b/ruoyi-system/src/main/resources/mapper/system/MusicInfoMapper.xml index cd95f93..4eaa02d 100644 --- a/ruoyi-system/src/main/resources/mapper/system/MusicInfoMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/MusicInfoMapper.xml @@ -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 + + \ No newline at end of file