update
This commit is contained in:
@ -28,7 +28,7 @@ func NewBrandService(brands repository.BrandRepository) BrandService {
|
||||
return &brandService{brands: brands}
|
||||
}
|
||||
|
||||
// List 查询品牌列表并附带每个品牌的档案数。
|
||||
// List 查询品牌列表。
|
||||
//
|
||||
// featured=1 时先按指标算出"代表品牌"集合,再把列表收敛到该集合内 ——
|
||||
// 全库 1600+ 有档案品牌对 A-Z 索引来说过多,精选前 200 更符合导航场景。
|
||||
@ -52,17 +52,7 @@ func (s *brandService) List(ctx context.Context, q dto.BrandQuery) ([]dto.Public
|
||||
return nil, 0, internalErr(err.Error())
|
||||
}
|
||||
|
||||
ids := make([]uint32, 0, len(items))
|
||||
for _, b := range items {
|
||||
ids = append(ids, b.ID)
|
||||
}
|
||||
counts, err := s.brands.ArticleCountByBrandIDs(ctx, ids)
|
||||
if err != nil {
|
||||
return nil, 0, internalErr(err.Error())
|
||||
}
|
||||
|
||||
list := s.toPublicBrands(items, counts, q.Locale)
|
||||
return list, total, nil
|
||||
return s.toPublicBrands(items, q.Locale), total, nil
|
||||
}
|
||||
|
||||
// Hot 返回热门品牌:按走秀图片总数排名取前 limit 个,结果按热度顺序(而非字母序)排列。
|
||||
@ -82,10 +72,6 @@ func (s *brandService) Hot(ctx context.Context, limit int, locale string) ([]dto
|
||||
if err != nil {
|
||||
return nil, internalErr(err.Error())
|
||||
}
|
||||
counts, err := s.brands.ArticleCountByBrandIDs(ctx, ids)
|
||||
if err != nil {
|
||||
return nil, internalErr(err.Error())
|
||||
}
|
||||
|
||||
// IN 查询不保证顺序,这里重排回 FeaturedIDs 的热度排名顺序。
|
||||
pos := make(map[uint32]int, len(ids))
|
||||
@ -94,20 +80,18 @@ func (s *brandService) Hot(ctx context.Context, limit int, locale string) ([]dto
|
||||
}
|
||||
sort.Slice(items, func(i, j int) bool { return pos[items[i].ID] < pos[items[j].ID] })
|
||||
|
||||
return s.toPublicBrands(items, counts, locale), nil
|
||||
return s.toPublicBrands(items, locale), nil
|
||||
}
|
||||
|
||||
// toPublicBrands 把仓储层品牌行映射为对外精简结构(编码 id + 双语名 + 档案数)。
|
||||
func (s *brandService) toPublicBrands(items []model.Brand, counts map[uint32]int, locale string) []dto.PublicBrand {
|
||||
// toPublicBrands 把仓储层品牌行映射为对外精简结构(编码 id + 双语名)。
|
||||
func (s *brandService) toPublicBrands(items []model.Brand, locale string) []dto.PublicBrand {
|
||||
list := make([]dto.PublicBrand, 0, len(items))
|
||||
for _, b := range items {
|
||||
list = append(list, dto.PublicBrand{
|
||||
UID: hashid.Encode(b.ID),
|
||||
Name: pickLocale(b.NameEn, b.NameCn, locale),
|
||||
NameEn: b.NameEn,
|
||||
NameCn: b.NameCn,
|
||||
ShowName: b.NameCn,
|
||||
ArticleCount: counts[b.ID],
|
||||
UID: hashid.Encode(b.ID),
|
||||
Name: pickLocale(b.NameEn, b.NameCn, locale),
|
||||
NameEn: b.NameEn,
|
||||
NameCn: b.NameCn,
|
||||
})
|
||||
}
|
||||
return list
|
||||
|
||||
Reference in New Issue
Block a user