diff --git a/pkg/service/cast/analysis.go b/pkg/service/cast/analysis.go index a3f62c36..40462ab2 100644 --- a/pkg/service/cast/analysis.go +++ b/pkg/service/cast/analysis.go @@ -565,14 +565,14 @@ func ArtistMetricsSeries(ctx *gin.Context) { var subInfoResp *accountFiee.UserInfoResponse var subInfoErr error - var dataListResp *cast.ArtistDataListResp + var workStatsResp *cast.GetArtistWorkStatsResp var metricsResp *cast.ArtistMetricsSeriesResp - var dataListErr, metricsErr error + var workStatsErr, metricsErr error wg := sync.WaitGroup{} - wg.Add(3) + wg.Add(2) - // 并行调用 SubNumGetInfo、ArtistDataList、ArtistMetricsSeries + // 并行调用 SubNumGetInfo、ArtistMetricsSeries go func() { defer wg.Done() subInfoResp, subInfoErr = service.AccountFieeProvider.SubNumGetInfo(context.Background(), &accountFiee.SubNumGetInfoRequest{ @@ -581,15 +581,6 @@ func ArtistMetricsSeries(ctx *gin.Context) { }) }() - go func() { - defer wg.Done() - dataListResp, dataListErr = service.CastProvider.ArtistDataList(context.Background(), &cast.ArtistDataListReq{ - SubNum: subNum, - Page: 1, - PageSize: 1, - }) - }() - go func() { defer wg.Done() metricsResp, metricsErr = service.CastProvider.ArtistMetricsSeries(context.Background(), req) @@ -607,13 +598,30 @@ func ArtistMetricsSeries(ctx *gin.Context) { } req.ArtistUUID = fmt.Sprint(subInfoResp.Id) + // 将 ArtistMetricsSeriesReq 中 int 类型日期(YYYYMMDD)格式化为时间字符串,作为快照截止时间 + statusUpdateTime := "" + if req.Date > 0 { + parsedDate, parseErr := time.Parse("20060102", strconv.Itoa(int(req.Date))) + if parseErr == nil { + statusUpdateTime = parsedDate.Add(17 * time.Hour).Format("2006-01-02 15:04:05") + } + } + + newCtx := NewCtxWithUserInfo(ctx) + workStatsResp, workStatsErr = service.CastProvider.GetArtistWorkStats(newCtx, &cast.GetArtistWorkStatsReq{ + ArtistUuid: req.ArtistUUID, + StatusUpdateTime: statusUpdateTime, + }) + var accountConsumptionNumber int32 var videoCount int64 var imageCount int64 - if dataListErr == nil && dataListResp != nil && len(dataListResp.Data) > 0 && dataListResp.Data[0] != nil { - accountConsumptionNumber = dataListResp.Data[0].AccountConsumptionNumber - videoCount = dataListResp.Data[0].VideoCount - imageCount = dataListResp.Data[0].ImageCount + if workStatsErr == nil && workStatsResp != nil { + accountConsumptionNumber = int32(workStatsResp.AccountCount) + videoCount = workStatsResp.VideoCount + imageCount = workStatsResp.ImageCount + } else if workStatsErr != nil { + zap.L().Warn("GetArtistWorkStats failed", zap.Error(workStatsErr), zap.String("artistUUID", req.ArtistUUID), zap.String("statusUpdateTime", statusUpdateTime)) } if metricsErr != nil {