package service import ( "gotest/internal/repository" ) // MusicService 音乐服务 type MusicService struct { repo *repository.MusicRepository } // NewMusicService 创建音乐服务实例 func NewMusicService(repo *repository.MusicRepository) *MusicService { return &MusicService{repo: repo} } // ListCategories 获取音乐分类 func (s *MusicService) ListCategories() (interface{}, error) { return s.repo.ListCategories() } // ListSongs 获取歌曲列表 func (s *MusicService) ListSongs(categoryID uint, keyword, sort string, page, pageSize int) (map[string]interface{}, error) { songs, total, err := s.repo.ListSongs(categoryID, keyword, sort, page, pageSize) if err != nil { return nil, err } return map[string]interface{}{ "list": songs, "total": total, "page": page, "page_size": pageSize, }, nil } // GetSong 获取歌曲详情 func (s *MusicService) GetSong(id uint) (interface{}, error) { return s.repo.GetSong(id) } // ListHot 获取热门歌曲 func (s *MusicService) ListHot(limit int) (interface{}, error) { return s.repo.ListHotSongs(limit) } // ListNew 获取新歌 func (s *MusicService) ListNew(limit int) (interface{}, error) { return s.repo.ListNewSongs(limit) } // GetHomeData 获取音乐首页数据(分类 + 热门 + 新歌) func (s *MusicService) GetHomeData() (map[string]interface{}, error) { categories, err := s.repo.ListCategories() if err != nil { return nil, err } hot, err := s.repo.ListHotSongs(8) if err != nil { return nil, err } newSongs, err := s.repo.ListNewSongs(4) if err != nil { return nil, err } return map[string]interface{}{ "categories": categories, "hot": hot, "new": newSongs, }, nil }