并发查询,优化接口速度

This commit is contained in:
cjy 2026-03-03 10:56:46 +08:00
parent bbc18f56af
commit 08a70e8399

View File

@ -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{})