Add internal/service/music.go
This commit is contained in:
70
internal/service/music.go
Normal file
70
internal/service/music.go
Normal 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
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user