fix qygl8271

This commit is contained in:
2025-08-05 15:42:46 +08:00
parent 8ca672f1f4
commit f1478e475f
2 changed files with 107 additions and 77 deletions

View File

@@ -9,6 +9,8 @@ import (
"tyapi-server/internal/domains/api/dto"
"tyapi-server/internal/domains/api/services/processors"
"tyapi-server/internal/infrastructure/external/westdex"
"github.com/tidwall/gjson"
)
// ProcessQYGL8271Request QYGL8271 API处理方法
@@ -40,18 +42,46 @@ func ProcessQYGL8271Request(ctx context.Context, params []byte, deps *processors
"org_name": encryptedEntName,
"uscc": encryptedEntCode,
"auth_authorizeFileCode": encryptedAuthAuthorizeFileCode,
"inquired_auth": paramsDto.AuthDate, // AuthDate 有 encrypt:"false" 标签,不加密
"inquired_auth": fmt.Sprintf("authed:%s", paramsDto.AuthDate),
},
}
respBytes, err := deps.WestDexService.CallAPI("Q03SC01", reqData)
if err != nil {
// 数据源错误
if errors.Is(err, westdex.ErrDatasource) {
// 如果有返回内容,优先解析返回内容
if respBytes != nil {
parsed, parseErr := ParseJsonResponse(respBytes)
if parseErr == nil {
// 通过gjson获取指定路径的数据
contentResult := gjson.GetBytes(parsed, "Q03SC0101.Q03SC0102.content")
if contentResult.Exists() {
return []byte(contentResult.Raw), fmt.Errorf("%s: %w", processors.ErrDatasource, err)
}
return parsed, fmt.Errorf("%s: %w", processors.ErrDatasource, err)
}
// 解析失败,返回原始内容和系统错误
return respBytes, fmt.Errorf("%s: %w", processors.ErrSystem, parseErr)
}
// 没有返回内容,直接返回数据源错误
return nil, fmt.Errorf("%s: %w", processors.ErrDatasource, err)
} else {
return nil, fmt.Errorf("%s: %w", processors.ErrSystem, err)
}
// 其他系统错误
return nil, fmt.Errorf("%s: %w", processors.ErrSystem, err)
}
return respBytes, nil
// 正常返回 - 不管有没有deps.Options.Json都进行ParseJsonResponse
parsed, parseErr := ParseJsonResponse(respBytes)
if parseErr != nil {
return nil, fmt.Errorf("%s: %w", processors.ErrSystem, parseErr)
}
// 通过gjson获取指定路径的数据
contentResult := gjson.GetBytes(parsed, "Q03SC0101.Q03SC0102.content")
if contentResult.Exists() {
return []byte(contentResult.Raw), nil
} else {
return nil, fmt.Errorf("%s: %w", processors.ErrDatasource, err)
}
}