修复收藏等问题

This commit is contained in:
menxipeng
2025-09-07 19:21:00 +08:00
parent efeaec3708
commit 69ff450a57
9 changed files with 57 additions and 19 deletions

View File

@@ -2,6 +2,7 @@ package com.ruoyi.system.mapper;
import com.ruoyi.common.core.domain.entity.CategoryInfo;
import com.ruoyi.common.core.domain.entity.MusicInfo;
import com.ruoyi.common.core.domain.entity.UserLikeMusic;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -78,7 +79,7 @@ public interface MusicInfoMapper
List<MusicInfo> selectLikeMusicByUser(Long userId);
int delLikeMusic(@Param("userId") Long userId,@Param("musicId") String musicId);
int delLikeMusic(@Param("userId") Long userId,@Param("musicId") String[] musicId);
int insertHistory(@Param("userId") Long userId,@Param("musicId") String musicId);
@@ -107,4 +108,8 @@ public interface MusicInfoMapper
* @return 音乐信息列表
*/
List<MusicInfo> selectMusicInfoBySearch(@Param("search") String search);
String selectListRandomMusic(String currentMusicId);
UserLikeMusic selectMusicAndUserLike(@Param("userId") Long userId,@Param("musicId") String musicId);
}

View File

@@ -74,7 +74,7 @@ public interface IMusicInfoService
List<MusicInfo> findLikeMusicByUser(Long userId);
int cancelLikeMusic(String musicId);
int cancelLikeMusic(String[] musicId);
int addHistoryMusic(String musicId);

View File

@@ -137,6 +137,11 @@ public class MusicInfoServiceImpl implements IMusicInfoService
@Override
public int addLikeMusic(String musicId) {
Long userId = SecurityUtils.getUserId();
//查找是否已经存在我喜欢的音乐
UserLikeMusic userLikeMusic = musicInfoMapper.selectMusicAndUserLike(userId,musicId);
if (userLikeMusic != null){
return 1;
}
return musicInfoMapper.insertLikeMusic(userId,musicId);
}
@@ -146,7 +151,7 @@ public class MusicInfoServiceImpl implements IMusicInfoService
}
@Override
public int cancelLikeMusic(String musicId) {
public int cancelLikeMusic(String[] musicId) {
Long userId = SecurityUtils.getUserId();
return musicInfoMapper.delLikeMusic(userId,musicId);
}
@@ -298,6 +303,8 @@ public class MusicInfoServiceImpl implements IMusicInfoService
case 5: // 喜欢播放
musicList = musicInfoMapper.selectLikeMusicByUser(userId);
break;
case 6: // 喜欢播放
return musicInfoMapper.selectListRandomMusic(currentMusicId);
default:
return null;
}
@@ -357,7 +364,7 @@ public class MusicInfoServiceImpl implements IMusicInfoService
*
* @param userId 用户ID
* @param playMode 播放模式1-顺序播放2-随机播放
* @param playlistType 播放列表类型1-历史播放2-分类播放3-推荐播放4-收藏播放5-喜欢播放
* @param playlistType 播放列表类型1-历史播放2-分类播放3-推荐播放4-收藏播放5-喜欢播放 6-列表随机
* @param categoryId 分类ID当playlistType=2时必填
* @param collectId 收藏ID当playlistType=4时必填
* @param currentMusicId 当前播放的音乐ID用于顺序播放时获取下一首
@@ -393,6 +400,8 @@ public class MusicInfoServiceImpl implements IMusicInfoService
case 5: // 喜欢播放
musicList = musicInfoMapper.selectLikeMusicByUser(userId);
break;
case 6: // 喜欢播放
return musicInfoMapper.selectListRandomMusic(currentMusicId);
default:
return null;
}

View File

@@ -60,6 +60,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</delete>
<delete id="delBindMusic">
delete from music_collect where music_id= #{musicId} and collect_id=#{collectId}
delete from music_collect where collect_id=#{collectId} and music_id in
<foreach collection="musicIds" item="musicId" open="(" close=")" separator=",">
#{musicId}
</foreach>
</delete>
</mapper>

View File

@@ -156,7 +156,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<delete id="delLikeMusic">
DELETE FROM user_like_music where music_id=#{musicId} and user_id=#{userId}
DELETE FROM user_like_music where user_id=#{userId} and music_id in
<foreach collection="musicId" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
<insert id="insertHistory">
@@ -202,4 +205,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE (name LIKE concat(#{search}, '%') OR author LIKE concat(#{search}, '%'))
AND is_del = 0 AND shelf = 1
</select>
<select id="selectListRandomMusic" resultType="java.lang.String">
SELECT music_info.music_id from music_info where music_id != #{currentMusicId} ORDER BY RAND() LIMIT 1
</select>
<select id="selectMusicAndUserLike" resultType="com.ruoyi.common.core.domain.entity.UserLikeMusic">
SELECT user_id as userId , music_id as musicId FROm user_like_music where user_id=#{userId} and music_id=#{musicId} limit 1
</select>
</mapper>