package provider import ( "context" "time" appErrors "github.com/topfans/backend/pkg/errors" "github.com/topfans/backend/pkg/logger" pb "github.com/topfans/backend/pkg/proto/ranking" pbCommon "github.com/topfans/backend/pkg/proto/common" "github.com/topfans/backend/services/assetService/service" "go.uber.org/zap" ) // RankingProvider 排行榜服务Provider实现 // 实现 Triple 协议生成的 RankingServiceHandler 接口 type RankingProvider struct { rankingService service.RankingService } // 确保 RankingProvider 实现了 RankingServiceHandler 接口 var _ pb.RankingServiceHandler = (*RankingProvider)(nil) // NewRankingProvider 创建排行榜服务Provider实例 func NewRankingProvider(rankingService service.RankingService) *RankingProvider { return &RankingProvider{ rankingService: rankingService, } } // GetHotRanking 获取热度排行榜 func (p *RankingProvider) GetHotRanking(ctx context.Context, req *pb.GetRankingRequest) (*pb.GetRankingResponse, error) { logger.Logger.Info("Received GetHotRanking request", zap.String("dimension", req.Dimension), zap.Int64("star_id", req.StarId), zap.Int32("page", req.Page), zap.Int32("page_size", req.PageSize), ) // 调用Service层 resp, err := p.rankingService.GetHotRanking(ctx, req) if err != nil { logger.Logger.Error("GetHotRanking failed", zap.Error(err), ) return &pb.GetRankingResponse{ Base: &pbCommon.BaseResponse{ Code: appErrors.ToStatusCode(err), Message: err.Error(), Timestamp: time.Now().UnixMilli(), }, }, err } logger.Logger.Debug("GetHotRanking successful", zap.Int("items_count", len(resp.Items)), ) return resp, nil } // GetOriginalRanking 获取自制排行榜 func (p *RankingProvider) GetOriginalRanking(ctx context.Context, req *pb.GetRankingRequest) (*pb.GetRankingResponse, error) { logger.Logger.Info("Received GetOriginalRanking request", zap.String("dimension", req.Dimension), zap.Int64("star_id", req.StarId), zap.Int32("page", req.Page), zap.Int32("page_size", req.PageSize), ) // 调用Service层 resp, err := p.rankingService.GetOriginalRanking(ctx, req) if err != nil { logger.Logger.Error("GetOriginalRanking failed", zap.Error(err), ) return &pb.GetRankingResponse{ Base: &pbCommon.BaseResponse{ Code: appErrors.ToStatusCode(err), Message: err.Error(), Timestamp: time.Now().UnixMilli(), }, }, err } logger.Logger.Debug("GetOriginalRanking successful", zap.Int("items_count", len(resp.Items)), ) return resp, nil }