package com.test.musichouduan.service; import com.test.musichouduan.dto.PageResult; import com.test.musichouduan.dto.SingerDTO; import com.test.musichouduan.entity.Singer; import org.springframework.web.multipart.MultipartFile; import java.util.List; /** * 歌手服务接口 */ public interface SingerService { /** * 根据ID获取歌手 * * @param id 歌手ID * @return 歌手DTO */ SingerDTO getSingerById(Long id); /** * 分页获取歌手列表 * * @param page 页码 * @param size 每页大小 * @param keyword 关键字 * @param typeId 类型ID * @return 分页结果 */ PageResult getSingerList(Integer page, Integer size, String keyword, Long typeId); /** * 获取最新歌手列表 * * @param limit 限制数量 * @return 歌手列表 */ List getLatestSinger(Integer limit); /** * 获取热门歌手列表 * * @param limit 限制数量 * @return 歌手列表 */ List getHotSinger(Integer limit); /** * 添加歌手 * * @param singerDTO 歌手DTO * @param avatar 头像文件 * @return 歌手DTO */ SingerDTO addSinger(SingerDTO singerDTO, MultipartFile avatar); /** * 更新歌手 * * @param id 歌手ID * @param singerDTO 歌手DTO * @param avatar 头像文件 * @return 歌手DTO */ SingerDTO updateSinger(Long id, SingerDTO singerDTO, MultipartFile avatar); /** * 删除歌手 * * @param id 歌手ID * @return 是否成功 */ boolean deleteSinger(Long id); /** * 收藏歌手 * * @param id 歌手ID * @return 是否成功 */ boolean collectSinger(Long id); /** * 取消收藏歌手 * * @param id 歌手ID * @return 是否成功 */ boolean uncollectSinger(Long id); /** * 获取用户收藏的歌手列表 * * @param page 页码 * @param size 每页大小 * @return 分页结果 */ PageResult getCollectedSinger(Integer page, Integer size); /** * 添加音乐到歌手 * @param singerId 歌手ID * @param musicId 音乐ID * @return 是否成功 */ boolean addMusicToSinger(Long singerId, Long musicId); /** * 从歌手移除音乐 * @param singerId 歌手ID * @param musicId 音乐ID * @return 是否成功 */ boolean removeMusicFromSinger(Long singerId, Long musicId); /** * 根据ID获取歌手实体 * * @param id 歌手ID * @return 歌手实体 */ Singer getById(Long id); }