基于SpringBoot的online_music_player(查询_收藏音乐模块)

121 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第13天,点击查看活动详情 

查询音乐模块

我们的查询需要支持一下功能

  • 查询给定名称的歌曲

    • 给定歌曲名称全

      查询到单个歌曲

    • 给定名称字段(支持模糊匹配查询)

      查询到多个歌曲

  • 未给定歌曲名

    就查询所有歌曲

请求响应设计

请求:
{
    get
    /music/findMusic
    musicName
}
响应:
{
    status:0
    message:"查询成功"
    data:
    {
        {
           id:2
           title:"隆里电丝"
           singer:"大傻"
           time:"2022年8月1日"
           url:/music/get?path="隆里电丝"
        },
       ....
    }
}

代码实现

  • MusicMapper接口新增方法

    • 查询所有音乐
    • 模糊匹配查询某些音乐
    /**
     *查询所有歌曲
     * @return
     */
    List<Music> findMusic();
​
    /**
     * 通过名称查询到歌曲信息,支持模糊查询
     * @return
     */
    List<Music> findMusicByName(String musicName);
  • MusicMapper.xml实现
 <!--查询所有歌曲-->
    <select id="findMusic" resultType="com.example.onlinemusic.model.Music">
        select * from music;
    </select>
    <!--模糊查询指定歌曲-->
    <select id="findMusicByName" resultType="com.example.onlinemusic.model.Music">
        select * from music where title like concat('%',#{musicName},'%')
    </select>
  • MusicController实现
  //模糊查询
    @RequestMapping("/findMusic")
    public ResponseBodyMessage<List<Music>> findMusic(@RequestParam(required =false) String musicName){
        List<Music> musicList = new LinkedList<>();
        if(musicName==null){
            //查询名称为空,查询所有音乐返回
            musicList = musicMapper.findMusic();
            return new ResponseBodyMessage<>(0,"查询成功!",musicList);
        }
        //进行模糊查询!
        musicList = musicMapper.findMusicByName(musicName);
         return new ResponseBodyMessage<>(0,"查询成功!",musicList);
    }

验证结果

image-20220801164808889

  • 查询名称为空

image-20220801165026072

  • 模糊查询

    image-20220801165309472

    收藏音乐模块

添加音乐到收藏列表

请求响应设计

请求:
{
    post,
    /lovemusic/likeMusic
    data:user_id,music_id
}
响应:
{
    status:0,
    message:"收藏音乐成功",
    data:true
}

代码实现

我们要将一首音乐收藏分为2步

  • 找到该音乐信息,判断是否收藏过(查询lovemusic表)
  • 收藏该音乐(添加到lovemusic表)
  • 新增LoveMusicMapper接口
package com.example.onlinemusic.mapper;
​
import com.example.onlinemusic.model.LoveMusic;
import org.apache.ibatis.annotations.Mapper;
​
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: hold on
 * Date: 2022-08-01
 * Time: 19:54
 */
@Mapper
public interface LoveMusicMapper {
    /**
     * 通过用户id和音乐id查询喜欢音乐
     * @param user_id
     * @param music_id
     * @return
     */
    LoveMusic findLoveMusicByUidAndMusicId(int user_id, int music_id);
​
    /**
     * 添加音乐到收藏列表
     * @param user_id
     * @param music_id
     * @return
     */
    int insetLoveMusic(int user_id,int music_id);
}
​
  • LoveMusicMapper.xml实现接口
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.onlinemusic.mapper.LoveMusicMapper">
    <!--添加音乐到收藏列表-->
    <insert id="insetLoveMusic">
      insert into lovemusic (user_id,music_id) values(#{user_id},#{music_id})
    </insert>
    <!--通过用户id和音乐id查询收藏列表-->
    <select id="findLoveMusicByUidAndMusicId" resultType="com.example.onlinemusic.model.LoveMusic">
        select * from lovemusic where
        user_id = #{user_id} and music_id = #{music_id}
    </select>
</mapper>
  • LoveMusicController代码实现
package com.example.onlinemusic.controller;
​
import com.example.onlinemusic.mapper.LoveMusicMapper;
import com.example.onlinemusic.model.Contant;
import com.example.onlinemusic.model.LoveMusic;
import com.example.onlinemusic.model.User;
import com.example.onlinemusic.tools.ResponseBodyMessage;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
​
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
​
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: hold on
 * Date: 2022-08-01
 * Time: 20:25
 */
@RestController
@RequestMapping("/lovemusic")
public class LoveMusicController {
​
    //注入LoveMusicMapper
    @Resource
    private LoveMusicMapper loveMusicMapper;
​
    //收藏音乐
    @RequestMapping("/likeMusic")
    public ResponseBodyMessage<Boolean> insertLoveMusic(@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();
        System.out.println("user_id:"+user_id+" music_id:"+id);
        //2.查询该歌曲是否已存在收藏列表
        LoveMusic loveMusic = loveMusicMapper.findLoveMusicByUidAndMusicId(user_id,id);
        if(loveMusic!=null){
            //该歌曲已收藏!
            System.out.println("lovemusic:"+loveMusic);
            return new ResponseBodyMessage<>(-1,"收藏失败,该歌曲收藏",false);
        }
        //未收藏,将其收藏!
        int flg = loveMusicMapper.insetLoveMusic(user_id,id);
        if(flg!=1){
            return new ResponseBodyMessage<>(-1,"收藏失败",false);
        }
        return new ResponseBodyMessage<>(0,"收藏成功!",true);
    }
}

验证结果

image-20220801221914863

  • 歌曲已收藏,收藏失败

image-20220801221743298

  • 歌曲未收藏,收藏成功

image-20220801221849636