From 77c353288a89f2803df7edc37114c5cefe0ecd69 Mon Sep 17 00:00:00 2001 From: ata <17314593+asdxzaaaaa@user.noreply.gitee.com> Date: Fri, 10 Jul 2026 10:06:24 +0000 Subject: [PATCH] Add internal/service/shop.go --- internal/service/shop.go | 60 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 internal/service/shop.go diff --git a/internal/service/shop.go b/internal/service/shop.go new file mode 100644 index 0000000..a9d28c1 --- /dev/null +++ b/internal/service/shop.go @@ -0,0 +1,60 @@ +package service + +import ( + "gotest/internal/repository" +) + +// ShopService 电商商品服务 +type ShopService struct { + repo *repository.ShopRepository +} + +// NewShopService 创建电商服务实例 +func NewShopService(repo *repository.ShopRepository) *ShopService { + return &ShopService{repo: repo} +} + +// ListCategories 获取分类列表 +func (s *ShopService) ListCategories() (interface{}, error) { + return s.repo.ListCategories() +} + +// ListProducts 获取商品列表 +func (s *ShopService) ListProducts(categoryID uint, keyword, sort string, page, pageSize int) (map[string]interface{}, error) { + products, total, err := s.repo.ListProducts(categoryID, keyword, sort, page, pageSize) + if err != nil { + return nil, err + } + return map[string]interface{}{ + "list": products, + "total": total, + "page": page, + "page_size": pageSize, + }, nil +} + +// GetProduct 获取商品详情 +func (s *ShopService) GetProduct(id uint) (interface{}, error) { + return s.repo.GetProduct(id) +} + +// ListFeatured 获取推荐商品 +func (s *ShopService) ListFeatured(limit int) (interface{}, error) { + return s.repo.ListFeaturedProducts(limit) +} + +// GetHomeData 获取商城首页数据(分类 + 推荐商品) +func (s *ShopService) GetHomeData() (map[string]interface{}, error) { + categories, err := s.repo.ListCategories() + if err != nil { + return nil, err + } + featured, err := s.repo.ListFeaturedProducts(8) + if err != nil { + return nil, err + } + return map[string]interface{}{ + "categories": categories, + "featured": featured, + }, nil +}