54 lines
1.6 KiB
Go
54 lines
1.6 KiB
Go
package processors
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"errors"
|
|
|
|
"hyapi-server/internal/infrastructure/external/tianyuanapi"
|
|
)
|
|
|
|
// CallTianyuanByProduct 将处理器入参 JSON 转发至天远平台对应产品(使用天远侧产品编号)
|
|
func CallTianyuanByProduct(ctx context.Context, deps *ProcessorDependencies, productCode string, params []byte) ([]byte, error) {
|
|
if deps == nil || deps.TianyuanapiService == nil {
|
|
return nil, errors.Join(ErrSystem, errors.New("天远 API 服务未配置"))
|
|
}
|
|
|
|
var paramsMap map[string]interface{}
|
|
if err := json.Unmarshal(params, ¶msMap); err != nil {
|
|
return nil, errors.Join(ErrSystem, err)
|
|
}
|
|
|
|
respBytes, err := deps.TianyuanapiService.CallAPI(ctx, productCode, paramsMap)
|
|
if err != nil {
|
|
if errors.Is(err, tianyuanapi.ErrNotFound) {
|
|
return nil, errors.Join(ErrNotFound, err)
|
|
}
|
|
if errors.Is(err, tianyuanapi.ErrDatasource) {
|
|
return nil, errors.Join(ErrDatasource, err)
|
|
}
|
|
if errors.Is(err, tianyuanapi.ErrSystem) {
|
|
return nil, errors.Join(ErrSystem, err)
|
|
}
|
|
return nil, errors.Join(ErrSystem, err)
|
|
}
|
|
return respBytes, nil
|
|
}
|
|
|
|
// MapTianyuanError 将天远服务错误映射为处理器层错误(直接调用 CallAPI 时使用)
|
|
func MapTianyuanError(err error) error {
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
if errors.Is(err, tianyuanapi.ErrNotFound) {
|
|
return errors.Join(ErrNotFound, err)
|
|
}
|
|
if errors.Is(err, tianyuanapi.ErrDatasource) {
|
|
return errors.Join(ErrDatasource, err)
|
|
}
|
|
if errors.Is(err, tianyuanapi.ErrSystem) {
|
|
return errors.Join(ErrSystem, err)
|
|
}
|
|
return errors.Join(ErrSystem, err)
|
|
}
|