92 lines
2.5 KiB
Go
92 lines
2.5 KiB
Go
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
|
|
}
|