This commit is contained in:
2025-11-02 20:33:28 +08:00
parent bb88c78c82
commit 2773c1a60b
13 changed files with 521 additions and 132 deletions

View File

@@ -5,6 +5,7 @@ import (
"encoding/json"
"fmt"
"sort"
"strings"
"sync"
"tyapi-server/internal/domains/api/services/processors"
@@ -136,11 +137,37 @@ func (cs *CombService) processSingleSubProduct(
}
// combineResults 组合所有子产品的结果
// 只要至少有一个子产品成功,就返回成功结果(部分成功也算成功)
// 只有当所有子产品都失败时,才返回错误
func (cs *CombService) combineResults(results []*processors.SubProductResult) (*processors.CombinedResult, error) {
// 检查是否至少有一个成功的子产品
hasSuccess := false
for _, result := range results {
if result.Success {
hasSuccess = true
break
}
}
// 构建组合结果
combinedResult := &processors.CombinedResult{
Responses: results,
}
// 如果所有子产品都失败,返回错误
if !hasSuccess && len(results) > 0 {
// 构建错误信息,包含所有失败的原因
errorMessages := make([]string, 0, len(results))
for _, result := range results {
if result.Error != "" {
errorMessages = append(errorMessages, fmt.Sprintf("%s: %s", result.ApiCode, result.Error))
}
}
errorMsg := fmt.Sprintf("组合包所有子产品调用失败: %s", strings.Join(errorMessages, "; "))
return nil, fmt.Errorf(errorMsg)
}
// 至少有一个成功,返回成功结果
return combinedResult, nil
}