diff --git a/pkg/service/cast/analysis.go b/pkg/service/cast/analysis.go index 984a1deb..7378f0ce 100644 --- a/pkg/service/cast/analysis.go +++ b/pkg/service/cast/analysis.go @@ -563,44 +563,64 @@ func ArtistMetricsSeries(ctx *gin.Context) { subNum = infoResp.SubNum } - subInfoResp, err1 := service.AccountFieeProvider.SubNumGetInfo(context.Background(), &accountFiee.SubNumGetInfoRequest{ - SubNum: subNum, - Domain: "app", - }) + var subInfoResp *accountFiee.UserInfoResponse + var subInfoErr error + var dataListResp *cast.ArtistDataListResp + var metricsResp *cast.ArtistMetricsSeriesResp + var dataListErr, metricsErr error - if err1 != nil { - err1 = errors.New("自媒体用户查询失败") - service.Error(ctx, err1) + wg := sync.WaitGroup{} + wg.Add(3) + + // 并行调用 SubNumGetInfo、ArtistDataList、ArtistMetricsSeries + go func() { + defer wg.Done() + subInfoResp, subInfoErr = service.AccountFieeProvider.SubNumGetInfo(context.Background(), &accountFiee.SubNumGetInfoRequest{ + SubNum: subNum, + Domain: "app", + }) + }() + + 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) + }() + + wg.Wait() + + if subInfoErr != nil { + service.Error(ctx, errors.New("自媒体用户查询失败")) return } if subInfoResp == nil || subInfoResp.Id == 0 { - err1 = errors.New("自媒体用户不存在") - service.Error(ctx, err1) + service.Error(ctx, errors.New("自媒体用户不存在")) return } req.ArtistUUID = fmt.Sprint(subInfoResp.Id) - newCtx := NewCtxWithUserInfo(ctx) var accountConsumptionNumber int32 var videoCount int64 var imageCount int64 - dataListResp, err := service.CastProvider.ArtistDataList(newCtx, &cast.ArtistDataListReq{ - SubNum: subNum, - Page: 1, - PageSize: 1, - }) - if err == nil && dataListResp != nil && len(dataListResp.Data) > 0 && dataListResp.Data[0] != nil { + 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 } - resp, err := service.CastProvider.ArtistMetricsSeries(newCtx, req) - if err != nil { - err = errors.New("查询失败") - service.Error(ctx, err) + if metricsErr != nil { + service.Error(ctx, errors.New("查询失败")) return } + resp := metricsResp raw, _ := json.Marshal(resp) respMap := make(map[string]interface{})