custom combwd01
This commit is contained in:
@@ -190,6 +190,7 @@ func registerAllProcessors(combService *comb.CombService) {
|
|||||||
// COMB系列处理器 - 只注册有自定义逻辑的组合包
|
// COMB系列处理器 - 只注册有自定义逻辑的组合包
|
||||||
"COMB86PM": comb.ProcessCOMB86PMRequest, // 有自定义逻辑:重命名ApiCode
|
"COMB86PM": comb.ProcessCOMB86PMRequest, // 有自定义逻辑:重命名ApiCode
|
||||||
"COMBHZY2": comb.ProcessCOMBHZY2Request, // 自定义处理:生成合规报告
|
"COMBHZY2": comb.ProcessCOMBHZY2Request, // 自定义处理:生成合规报告
|
||||||
|
"COMBWD01": comb.ProcessCOMBWD01Request, // 自定义处理:将返回结构从数组改为对象
|
||||||
|
|
||||||
// QCXG系列处理器
|
// QCXG系列处理器
|
||||||
"QCXG7A2B": qcxg.ProcessQCXG7A2BRequest,
|
"QCXG7A2B": qcxg.ProcessQCXG7A2BRequest,
|
||||||
|
|||||||
@@ -0,0 +1,92 @@
|
|||||||
|
package comb
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"tyapi-server/internal/domains/api/services/processors"
|
||||||
|
"tyapi-server/internal/shared/logger"
|
||||||
|
|
||||||
|
"go.uber.org/zap"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessCOMBWD01Request 处理 COMBWD01 组合包请求
|
||||||
|
// 将返回结构从数组改为以 api_code 为 key 的对象结构
|
||||||
|
func ProcessCOMBWD01Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||||
|
log := logger.GetGlobalLogger()
|
||||||
|
|
||||||
|
// 调用组合包服务处理请求
|
||||||
|
combinedResult, err := deps.CombService.ProcessCombRequest(ctx, params, deps, "COMBWD01")
|
||||||
|
if err != nil {
|
||||||
|
log.Error("COMBWD01组合包服务调用失败",
|
||||||
|
zap.Error(err),
|
||||||
|
zap.String("api_code", "COMBWD01"),
|
||||||
|
)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if combinedResult == nil {
|
||||||
|
log.Error("COMBWD01组合包响应为空",
|
||||||
|
zap.String("api_code", "COMBWD01"),
|
||||||
|
)
|
||||||
|
return nil, errors.New("组合包响应为空")
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Info("COMBWD01组合包服务调用成功",
|
||||||
|
zap.Int("子产品数量", len(combinedResult.Responses)),
|
||||||
|
zap.String("api_code", "COMBWD01"),
|
||||||
|
)
|
||||||
|
|
||||||
|
// 将数组结构转换为对象结构
|
||||||
|
responsesMap := make(map[string]*ResponseItem)
|
||||||
|
for _, resp := range combinedResult.Responses {
|
||||||
|
item := &ResponseItem{
|
||||||
|
ApiCode: resp.ApiCode,
|
||||||
|
Success: resp.Success,
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据成功/失败状态设置 data 和 error 字段
|
||||||
|
if resp.Success {
|
||||||
|
// 成功时:data 有值(可能为 nil),error 为 null
|
||||||
|
item.Data = resp.Data
|
||||||
|
item.Error = nil
|
||||||
|
} else {
|
||||||
|
// 失败时:data 为 null,error 有值
|
||||||
|
item.Data = nil
|
||||||
|
if resp.Error != "" {
|
||||||
|
item.Error = resp.Error
|
||||||
|
} else {
|
||||||
|
item.Error = "未知错误"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
responsesMap[resp.ApiCode] = item
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构建新的响应结构
|
||||||
|
result := map[string]interface{}{
|
||||||
|
"responses": responsesMap,
|
||||||
|
}
|
||||||
|
|
||||||
|
// 序列化并返回
|
||||||
|
resultBytes, err := json.Marshal(result)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("COMBWD01响应序列化失败",
|
||||||
|
zap.Error(err),
|
||||||
|
zap.String("api_code", "COMBWD01"),
|
||||||
|
)
|
||||||
|
return nil, errors.Join(processors.ErrSystem, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultBytes, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResponseItem 响应项结构
|
||||||
|
type ResponseItem struct {
|
||||||
|
ApiCode string `json:"api_code"`
|
||||||
|
Success bool `json:"success"`
|
||||||
|
Data interface{} `json:"data"`
|
||||||
|
Error interface{} `json:"error"`
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user