From 13feb9e46e55b486cb7262b4452b1f6a6bcefd9b Mon Sep 17 00:00:00 2001 From: ata <17314593+asdxzaaaaa@user.noreply.gitee.com> Date: Fri, 10 Jul 2026 10:06:26 +0000 Subject: [PATCH] Add internal/service/app.go --- internal/service/app.go | 70 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 internal/service/app.go diff --git a/internal/service/app.go b/internal/service/app.go new file mode 100644 index 0000000..23b9c3b --- /dev/null +++ b/internal/service/app.go @@ -0,0 +1,70 @@ +package service + +import ( + "gotest/internal/repository" +) + +// AppService 应用服务 +type AppService struct { + repo *repository.AppRepository +} + +// NewAppService 创建应用服务实例 +func NewAppService(repo *repository.AppRepository) *AppService { + return &AppService{repo: repo} +} + +// ListCategories 获取应用分类 +func (s *AppService) ListCategories() (interface{}, error) { + return s.repo.ListCategories() +} + +// ListApps 获取应用列表 +func (s *AppService) ListApps(categoryID uint, keyword, sort string, page, pageSize int) (map[string]interface{}, error) { + apps, total, err := s.repo.ListApps(categoryID, keyword, sort, page, pageSize) + if err != nil { + return nil, err + } + return map[string]interface{}{ + "list": apps, + "total": total, + "page": page, + "page_size": pageSize, + }, nil +} + +// GetApp 获取应用详情 +func (s *AppService) GetApp(id uint) (interface{}, error) { + return s.repo.GetApp(id) +} + +// ListFeatured 获取精选应用 +func (s *AppService) ListFeatured(limit int) (interface{}, error) { + return s.repo.ListFeaturedApps(limit) +} + +// ListNew 获取新上架应用 +func (s *AppService) ListNew(limit int) (interface{}, error) { + return s.repo.ListNewApps(limit) +} + +// GetHomeData 获取应用首页数据(分类 + 精选 + 新上架) +func (s *AppService) GetHomeData() (map[string]interface{}, error) { + categories, err := s.repo.ListCategories() + if err != nil { + return nil, err + } + featured, err := s.repo.ListFeaturedApps(8) + if err != nil { + return nil, err + } + newApps, err := s.repo.ListNewApps(4) + if err != nil { + return nil, err + } + return map[string]interface{}{ + "categories": categories, + "featured": featured, + "new": newApps, + }, nil +}