Untitled

 avatar
unknown
abap
2 years ago
1.8 kB
2
Indexable
func (s *ratingService) getRatingTemplate(ctx context.Context, code string) (*dtos.RatingTemplate, error) {
	var (
		ratingTemplate dtos.RatingTemplate
		cacheKey       = fmt.Sprintf("vinshop_public:rating_template:%v", code)
	)

	if featureflag.IsEnabled(ctx, models.FlagEnableCacheRatingTemplate) &&
		s.CheckCacheHit(ctx, s.redisClient, cacheKey, &ratingTemplate) {
		return &ratingTemplate, nil
	}

	payload := cms.GetRatingTemplateRequest {
		Type: code,
	}

	logger.Errorf(ctx, "get rating template by queries: %+v", payload)
	data, err := s.ratingGetter.GetRatingTemplate(ctx, payload)
	if err != nil {
		logger.Errorf(ctx, "failed to fetch rating template from CMS, queries: %+v, err: %v", payload.Type, err)
		return nil, apperrors.New(apperrors.ErrCommonInvalidRequestInfo, apperrors.WithError(err))
	}

	// Transform data
	var (
		categories []dtos.RatingCategory
	)

	for _, cate := range data.Categories {
		categories = append(categories, dtos.RatingCategory{
			ImageURL:     cate.ImageURL,
			CategoryName: cate.CategoryName,
		})
	}

	ratingTemplate = dtos.RatingTemplate{
		Service:           data.Service,
		Module:            data.Module,
		Type:              data.Type,
		BackgroundColor:   data.BackgroundColor,
		ShowDetails:       data.ShowDetails,
		ShowRatingResult:  data.ShowRatingResult,
		AllowRateAgain:    data.AllowRateAgain,
		Title:             data.Title,
		SubTitle:          data.SubTitle,
		IconURL:           data.IconURL,
		Categories:        categories,
		TitleLowRating:    data.TitleLowRating,
		TitleHighRating:   data.TitleHighRating,
		SuccessfulMessage: data.SuccessfulMessage,
		CTATitle:          data.CTATitle,
	}

	if featureflag.IsEnabled(ctx, models.FlagEnableCacheRatingTemplate) {
		s.SetToCache(ctx, s.redisClient, cacheKey, ratingTemplate, 86400)
	}

	return &ratingTemplate, nil
}
Editor is loading...