Add internal/service/music.go

This commit is contained in:
ata
2026-07-10 10:06:29 +00:00
committed by Gitee
parent 13feb9e46e
commit 30cb0e6da5

70
internal/service/music.go Normal file
View File

@@ -0,0 +1,70 @@
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
}