From 30cb0e6da5b2f67ae42fa31632f7ec5f4dbd7224 Mon Sep 17 00:00:00 2001 From: ata <17314593+asdxzaaaaa@user.noreply.gitee.com> Date: Fri, 10 Jul 2026 10:06:29 +0000 Subject: [PATCH] Add internal/service/music.go --- internal/service/music.go | 70 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 internal/service/music.go diff --git a/internal/service/music.go b/internal/service/music.go new file mode 100644 index 0000000..c57fe4d --- /dev/null +++ b/internal/service/music.go @@ -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 +}