This commit is contained in:
Mrx
2026-06-01 14:18:39 +08:00
parent 5d2d49f0e8
commit c94cc944bf
3 changed files with 39 additions and 56 deletions

View File

@@ -106,9 +106,27 @@ type responseWrapper struct {
// CallAPI2Response CallAPI2 的响应结构体
type CallAPI2Response struct {
Code string `json:"code"`
Data map[string]interface{} `json:"data"`
Msg string `json:"msg"`
Code string `json:"code"`
Data map[string]interface{} `json:"data"`
Message string `json:"message"`
Msg string `json:"msg"`
OrderNo string `json:"orderNo"`
Charge bool `json:"charge"`
Pcode string `json:"pcode"`
Param interface{} `json:"param"`
Time json.RawMessage `json:"time"`
}
// extractCallAPI2Data 从已解析的 CallAPI2 响应中提取 data 字段,不透传 code/orderNo/charge 等外层元数据
func extractCallAPI2Data(response *CallAPI2Response) ([]byte, error) {
if response == nil || response.Data == nil {
return []byte("{}"), nil
}
dataBytes, err := json.Marshal(response.Data)
if err != nil {
return nil, fmt.Errorf("data 序列化失败: %w", err)
}
return dataBytes, nil
}
func NewHuiboService(config HuiboConfig, logger *external_logger.ExternalServiceLogger) *HuiboService {
@@ -561,7 +579,6 @@ func (s *HuiboService) CallAPI2(ctx context.Context, pcode string, requestData m
// 根据业务状态码进行处理
switch response.Code {
case CallAPI2StatusSuccess:
// 查询成功
if s.logger != nil {
s.logger.LogInfo(
"汇博 CallAPI2 查询成功",
@@ -571,7 +588,6 @@ func (s *HuiboService) CallAPI2(ctx context.Context, pcode string, requestData m
)
}
case CallAPI2StatusNoData:
// 查询成功,无数据
if s.logger != nil {
s.logger.LogInfo(
"汇博 CallAPI2 查询成功但无数据",
@@ -580,8 +596,17 @@ func (s *HuiboService) CallAPI2(ctx context.Context, pcode string, requestData m
zap.String("transaction_id", transactionID),
)
}
if s.logger != nil {
s.logger.LogInfo(
"汇博 CallAPI2 请求响应",
zap.String("curl", curlCmd),
zap.String("response_body", string(respBody)),
zap.String("transaction_id", transactionID),
)
s.logger.LogResponse("", transactionID, "huibo_callapi2", http.StatusOK, time.Since(startTime))
}
return []byte("{}"), nil
default:
// 其他错误状态码
message := GetCallAPI2StatusMessage(response.Code)
if s.logger != nil {
s.logger.LogErrorWithFields("汇博 CallAPI2 业务状态异常",
@@ -594,7 +619,6 @@ func (s *HuiboService) CallAPI2(ctx context.Context, pcode string, requestData m
return nil, errors.Join(ErrDatasource, fmt.Errorf("业务状态异常(code=%s,msg=%s)", response.Code, message))
}
// 记录 curl 命令和响应
if s.logger != nil {
s.logger.LogInfo(
"汇博 CallAPI2 请求响应",
@@ -604,9 +628,14 @@ func (s *HuiboService) CallAPI2(ctx context.Context, pcode string, requestData m
)
}
dataBytes, err := extractCallAPI2Data(&response)
if err != nil {
return nil, errors.Join(ErrDatasource, err)
}
if s.logger != nil {
s.logger.LogResponse("", transactionID, "huibo_callapi2", http.StatusOK, time.Since(startTime))
}
return respBody, nil
return dataBytes, nil
}