feat: 迁移渠道商务游戏排行榜及同期比较
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package business
|
||||
|
||||
import (
|
||||
"context"
|
||||
"kra/internal/biz/business"
|
||||
"kra/internal/service/dto"
|
||||
)
|
||||
|
||||
type RankingUsecase interface {
|
||||
List(context.Context, business.RankingKind, business.AnalyticsFilter) (*business.RankingPage, error)
|
||||
}
|
||||
type RankingService struct{ uc RankingUsecase }
|
||||
|
||||
func NewRankingService(uc *business.RankingUsecase) *RankingService { return &RankingService{uc: uc} }
|
||||
func rankingItems(rows []*business.RankingItem, kind business.RankingKind) []*dto.RankingItem {
|
||||
out := make([]*dto.RankingItem, 0, len(rows))
|
||||
for _, row := range rows {
|
||||
item := &dto.RankingItem{Rank: row.Rank, ObjectID: row.ObjectID, ObjectName: row.Name, MetricValue: row.Value, MoM: row.MoM, MoMStatus: row.MoMStatus}
|
||||
if kind != business.BusinessRanking {
|
||||
source, label := row.SourceDB, business.PlatformName(row.SourceDB)
|
||||
item.SourceDB, item.SourceDBLabel = &source, &label
|
||||
}
|
||||
out = append(out, item)
|
||||
}
|
||||
return out
|
||||
}
|
||||
func (s *RankingService) List(ctx context.Context, kind business.RankingKind, req *dto.RankingQuery) (*dto.RankingPage, error) {
|
||||
if req == nil {
|
||||
return nil, business.ErrAnalyticsInput
|
||||
}
|
||||
f, err := analyticsRequest(&dto.AnalyticsQuery{Sources: req.Sources, BeginTime: req.BeginTime, EndTime: req.EndTime})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
page, err := s.uc.List(ctx, kind, f)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &dto.RankingPage{Register: rankingItems(page.Register, kind), Recharge: rankingItems(page.Recharge, kind), PayRate: rankingItems(page.PayRate, kind), Active: rankingItems(page.Active, kind), Begin: page.Begin, End: page.End, Available: page.Available}, nil
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package dto
|
||||
|
||||
type RankingQuery struct {
|
||||
Sources []string `form:"sourceDb"`
|
||||
BeginTime string `form:"beginTime"`
|
||||
EndTime string `form:"endTime"`
|
||||
GameID *int64 `form:"gameId"`
|
||||
}
|
||||
type RankingItem struct {
|
||||
Rank int `json:"rank"`
|
||||
ObjectID string `json:"objectId"`
|
||||
ObjectName string `json:"objectName"`
|
||||
SourceDB *string `json:"sourceDb"`
|
||||
SourceDBLabel *string `json:"sourceDbLabel"`
|
||||
MetricValue string `json:"metricValue"`
|
||||
MoM *string `json:"momValue"`
|
||||
MoMStatus *int `json:"momStatus"`
|
||||
}
|
||||
type RankingPage struct {
|
||||
Register []*RankingItem `json:"registerRankList"`
|
||||
Recharge []*RankingItem `json:"rechargeRankList"`
|
||||
PayRate []*RankingItem `json:"payRateRankList"`
|
||||
Active []*RankingItem `json:"activeRankList"`
|
||||
Begin string `json:"beginTime"`
|
||||
End string `json:"endTime"`
|
||||
Available bool `json:"available"`
|
||||
}
|
||||
@@ -27,6 +27,7 @@ var ProviderSet = wire.NewSet(
|
||||
businessservice.NewAnalyticsService,
|
||||
businessservice.NewServerAnalysisService,
|
||||
businessservice.NewWorkbenchService,
|
||||
businessservice.NewRankingService,
|
||||
systemservice.ProviderSet,
|
||||
paymentservice.ProviderSet,
|
||||
integrationservice.ProviderSet,
|
||||
|
||||
Reference in New Issue
Block a user