筛选功能

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

@@ -1,6 +1,7 @@
package com.ruoyi.web.controller.client; package com.ruoyi.web.controller.client;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; 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.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; 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<MusicInfo> musicInfos = musicService.findLikeSearch(search);
return AjaxResult.success(musicInfos);
}
} }

View File

@@ -28,7 +28,11 @@ public class SecurityUtils
{ {
try try
{ {
return getLoginUser().getUserId(); LoginUser logUse = getLoginUser();
if (logUse != null){
return logUse.getUserId();
}
return null;
} }
catch (Exception e) catch (Exception e)
{ {
@@ -75,7 +79,10 @@ public class SecurityUtils
{ {
try try
{ {
return (LoginUser) getAuthentication().getPrincipal(); if (getAuthentication().getPrincipal() instanceof LoginUser){
return (LoginUser) getAuthentication().getPrincipal();
}
return null;
} }
catch (Exception e) catch (Exception e)
{ {

View File

@@ -99,4 +99,12 @@ public interface MusicInfoMapper
* @return 音乐图片URL * @return 音乐图片URL
*/ */
String selectLikeMusicImageByUserId(@Param("userId") Long userId); 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 * @return 音乐图片URL
*/ */
String findLikeMusicImageByUserId(Long userId); 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.io.IOException;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 音乐信息Service业务层处理 * 音乐信息Service业务层处理
@@ -382,6 +383,38 @@ public class MusicInfoServiceImpl implements IMusicInfoService
public String findLikeMusicImageByUserId(Long userId) { public String findLikeMusicImageByUserId(Long userId) {
return musicInfoMapper.selectLikeMusicImageByUserId(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: 待完善 //TODO: 待完善
public Map<String, String> getMixMusicInfo(String musicId){ 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 != '' WHERE ulm.user_id = #{userId} AND mi.is_del = 0 AND mi.img_addr IS NOT NULL AND mi.img_addr != ''
LIMIT 1 LIMIT 1
</select> </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> </mapper>