携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情
从喜欢列表移除音乐
请求和响应设计
请求:
{
get,
/lovemusic/deleteloveMusic,
data:{id}
}
响应:
{
status:0,
message:"取消收藏成功",
data:true
}
代码实现
LoveMusicMapper接口新增方法
/**
* 通过用户id和音乐id取消音乐收藏
* @param user_id
* @param music_id
* @return
*/
int deleteLoveMusicByUidAndMusicId(int user_id, int music_id);
/**
* 通过音乐id删除lovemusic表中的信息
* @param music_id
* @return
*/
int deleteLoveMusicByMusicId(int music_id);
xml实现接口
<!--通过用户id和音乐id移除收藏歌曲-->
<delete id="deleteLoveMusicByUidAndMusicId">
delete from lovemusic where user_id = #{user_id} and music_id = #{music_id}
</delete>
<!--通过musicId移除收藏列表-->
<delete id="deleteLoveMusicByMusicId">
delete from lovemusic where music_id = #{music_id}
</delete>
LoveMusicMapperController代码实现
//通过收藏表中的id取消收藏歌曲信息
@RequestMapping("/deleteloveMusic")
public ResponseBodyMessage<Boolean> deleteLoveMusic(@RequestParam Integer id,HttpServletRequest request){
//1.检查登入状态,未登入不创建回话
HttpSession session = request.getSession(false);
if(session==null||null==request.getSession().getAttribute(Contant.USERINFO_SESSION_KEY)){
//未登入状态
return new ResponseBodyMessage<>(-1,"请登入用户",false);
}
//登入状态,可进行取消音乐收藏功能
//1.获取到用户id
User user = (User)session.getAttribute(Contant.USERINFO_SESSION_KEY);
int user_id = user.getId();
//取消收藏!
int ret = loveMusicMapper.deleteLoveMusicByUidAndMusicId(user_id,id);
if(ret!=1){
return new ResponseBodyMessage<>(-1,"取消收藏失败",false);
}
return new ResponseBodyMessage<>(0,"取消收藏成功",true);
}
验证结果
数据库信息:
- 歌曲不存在,移除失败
- 歌曲存在,取消收藏成功
完善删除音乐模块代码
我们对项目增添了收藏列表后,发现一个问题!我们上传的音乐删除后,收藏的音乐就不存在了,那么收藏列表中关于这首歌曲的信息也要删除,所以我们对我们的删除音乐代码进行完善!
- 删除音乐时,要先检查该音乐是否在收藏列表中,如果在就将歌曲移除收藏列表
我们只需要添加一个通过music_id取消收藏音乐的方法即可
LoveMusicMapper新增方法
/**
* 通过音乐id删除lovemusic表中的信息
* @param music_id
* @return
*/
int deleteLoveMusicByMusicId(int music_id);
xml实现
<!--通过musicId移除收藏列表-->
<delete id="deleteLoveMusicByMusicId">
delete from lovemusic where music_id = #{music_id}
</delete>
//删除单个音乐
@RequestMapping("/delete")
public ResponseBodyMessage<Boolean> deleteMusic(@RequestParam Integer id){
//1.首先找到该音乐信息
Music music = musicMapper.getMusicById(id);
if(music==null){//音乐不存在
//未找到该音乐
return new ResponseBodyMessage<>(-1,"需要删除的音乐不存在",false);
}
//2.进行音乐删除
//2.1 删除服务器下的音乐文件
//找到服务器下该音乐文件路径
File file = new File(SAVE_PATH+File.separator+music.getTitle()+".mp3");
System.out.println("musicPath:"+file.getPath());
if(file==null){//服务器下不存在该文件
return new ResponseBodyMessage<>(-1,"删除失败,服务器下未找到该文件信息",false);
}
//删除
if(!file.delete()){
//删除失败
return new ResponseBodyMessage<>(-1,"服务器删除失败",false);
}
//2.2 删除数据库下的音乐信息
//2.2.1删除music表中的音乐信息
int ret = musicMapper.deleteById(id);
if(ret!=1){//数据库删除失败
return new ResponseBodyMessage<>(-1,"数据库信息删除失败",false);
}
//2.2.2删除lovemusic表中的音乐信息
loveMusicMapper.deleteLoveMusicByMusicId(id);
return new ResponseBodyMessage<>(0,"删除成功!",true);
}
//批量删除音乐
@RequestMapping("/deleteAll")
public ResponseBodyMessage<Boolean> deleteMusicAll(@RequestParam(value = "id[]") List<Integer> ids){
String message = "";
for (Integer id:ids) {
//1.首先找到该音乐信息
Music music = musicMapper.getMusicById(id);
if(music==null){//音乐不存在
//未找到该音乐
//保存这个音乐id信息
message += id+" ";
continue;
//return new ResponseBodyMessage<>(-1,"需要删除的音乐不存在",false);
}
//2.进行音乐删除
//2.1 删除服务器下的音乐文件
//找到服务器下该音乐文件路径
File file = new File(SAVE_PATH+File.separator+music.getTitle()+".mp3");
System.out.println("musicPath:"+file.getPath());
if(file==null){//服务器下不存在该文件
//保存这个id信息
message += id + "";
continue;
//return new ResponseBodyMessage<>(-1,"删除失败,服务器下未找到该文件信息",false);
}
//删除
if(!file.delete()){
//删除失败
message += id + "";
continue;
//return new ResponseBodyMessage<>(-1,"服务器删除失败",false);
}
//2.2 删除数据库下的音乐信息
int ret = musicMapper.deleteById(id);
if(ret!=1){//数据库删除失败
message += id+" ";
continue;
//return new ResponseBodyMessage<>(-1,"数据库信息删除失败",false);
}
//取消该歌曲的所有收藏
loveMusicMapper.deleteLoveMusicByMusicId(id);
}
if(message==""){
return new ResponseBodyMessage<>(0,"删除成功!",true);
}
//部分删除失败
return new ResponseBodyMessage<>(0,"id:" + message+" 删除失败!",true);
}
验证结果:
数据库信息:
我们将music_id为51音乐删除!