```
feat(supplier): 优化第三方供应商接口调用与代理池逻辑- 移除 unused 依赖 `fakeuseragent`、`golang/freetype` 和 `golang.org/x/image` - 新增 `useragent` 工具包引入,用于生成请求头 -修复 `nuclear.go` 中响应数据解析逻辑,增加对返回码的判断及错误信息提取 - 增加 JSON 标签以正确解析嵌套结构体 `Payload`-修复 `GetProxy` 错误日志中使用错误变量的问题 - 优化代理池缓存键生成逻辑并移除无用代码注释 - 完善测试代码中 JSON 解析错误处理和结果校验逻辑```
This commit is contained in:
3
go.mod
3
go.mod
@@ -17,9 +17,7 @@ require (
|
||||
github.com/go-resty/resty/v2 v2.16.5
|
||||
github.com/go-sql-driver/mysql v1.9.3
|
||||
github.com/go-stomp/stomp/v3 v3.1.3
|
||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/iunary/fakeuseragent v1.0.0
|
||||
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826
|
||||
github.com/natefinch/lumberjack v2.0.0+incompatible
|
||||
github.com/prometheus/client_golang v1.23.2
|
||||
@@ -42,7 +40,6 @@ require (
|
||||
go.opentelemetry.io/otel/trace v1.38.0
|
||||
go.uber.org/zap v1.27.0
|
||||
golang.org/x/exp v0.0.0-20250718183923-645b1fa84792
|
||||
golang.org/x/image v0.31.0
|
||||
)
|
||||
|
||||
require (
|
||||
|
||||
6
go.sum
6
go.sum
@@ -55,8 +55,6 @@ github.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1
|
||||
github.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU=
|
||||
github.com/go-stomp/stomp/v3 v3.1.3 h1:5/wi+bI38O1Qkf2cc7Gjlw7N5beHMWB/BxpX+4p/MGI=
|
||||
github.com/go-stomp/stomp/v3 v3.1.3/go.mod h1:ztzZej6T2W4Y6FlD+Tb5n7HQP3/O5UNQiuC169pIp10=
|
||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
|
||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
|
||||
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
|
||||
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
|
||||
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
|
||||
@@ -70,8 +68,6 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnV
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs=
|
||||
github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c=
|
||||
github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
|
||||
github.com/iunary/fakeuseragent v1.0.0 h1:QlxZqFFzb9oDd6p7478/AYeljJJwI74IRfxi/vs/Egs=
|
||||
github.com/iunary/fakeuseragent v1.0.0/go.mod h1:opcHYShMkPA8s621QaycSxAyFnFgfOnu2bxb07HzuUE=
|
||||
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
|
||||
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
|
||||
github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=
|
||||
@@ -191,8 +187,6 @@ golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
|
||||
golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
|
||||
golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 h1:R9PFI6EUdfVKgwKjZef7QIwGcBKu86OEFpJ9nUEP2l4=
|
||||
golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc=
|
||||
golang.org/x/image v0.31.0 h1:mLChjE2MV6g1S7oqbXC0/UcKijjm5fnJLUYKIYrLESA=
|
||||
golang.org/x/image v0.31.0/go.mod h1:R9ec5Lcp96v9FTF+ajwaH3uGxPH4fKfHHAVbUILxghA=
|
||||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"gateway/internal/config"
|
||||
"gateway/internal/otelTrace"
|
||||
"gateway/internal/utils"
|
||||
"gateway/internal/utils/useragent"
|
||||
"net/url"
|
||||
"testing"
|
||||
|
||||
@@ -17,7 +18,6 @@ import (
|
||||
"github.com/duke-git/lancet/v2/random"
|
||||
"github.com/duke-git/lancet/v2/structs"
|
||||
"github.com/go-resty/resty/v2"
|
||||
"github.com/iunary/fakeuseragent"
|
||||
"github.com/widuu/gojson"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
@@ -36,11 +36,17 @@ func TestNuclearImpl_sendCard(t *testing.T) {
|
||||
BankId int `json:"BankId"`
|
||||
Data string `json:"Data"`
|
||||
DataType int `json:"DataType"`
|
||||
}
|
||||
} `json:"Payload"`
|
||||
}{}
|
||||
|
||||
response, _ := webClient.R().SetFormData(params).Post("https://gate.nuclearpow.net:2087/api/order/create")
|
||||
_ = json.Unmarshal(response.Body(), &respData)
|
||||
if err := json.Unmarshal(response.Body(), &respData); err != nil {
|
||||
otelTrace.Logger.WithContext(t.Context()).Error("请求结果解析失败", zap.Error(err))
|
||||
}
|
||||
if respData.Code != "0" {
|
||||
otelTrace.Logger.WithContext(t.Context()).Error("请求失败", zap.Any("result", respData))
|
||||
return
|
||||
}
|
||||
otelTrace.Logger.WithContext(t.Context()).Info("请求结果", zap.Any("result", respData))
|
||||
t.Log(response.String())
|
||||
}
|
||||
|
||||
@@ -155,6 +155,7 @@ func (s *SendCardTaskTypeNuclear) CreateOrder(ctx context.Context, roadUid strin
|
||||
}
|
||||
respData := struct {
|
||||
Code string `json:"Code"`
|
||||
Msg string `json:"Msg"`
|
||||
Payload struct {
|
||||
OrderId string `json:"OrderId"`
|
||||
TradeOrderId string `json:"TradeOrderId"`
|
||||
@@ -163,14 +164,16 @@ func (s *SendCardTaskTypeNuclear) CreateOrder(ctx context.Context, roadUid strin
|
||||
BankId int `json:"BankId"`
|
||||
Data string `json:"Data"`
|
||||
DataType int `json:"DataType"`
|
||||
}
|
||||
} `json:"Payload"`
|
||||
}{}
|
||||
otelTrace.Logger.WithContext(ctx).Info("请求结果", zap.Any("response", response.String()))
|
||||
if err2 := json.Unmarshal(response.Body(), &respData); err2 != nil {
|
||||
otelTrace.Logger.WithContext(ctx).Error("请求结果解析失败", zap.Error(err2))
|
||||
return orderPoolItem, err2
|
||||
}
|
||||
|
||||
if respData.Code != "0" {
|
||||
return orderPoolItem, errors.New(respData.Msg)
|
||||
}
|
||||
//创建session
|
||||
webClient2 := resty.New().SetTimeout(3 * time.Second).SetHeaders(map[string]string{
|
||||
"Origin": "pay50.baolong18080.com",
|
||||
@@ -263,7 +266,7 @@ func (s *SendCardTaskTypeNuclear) HandleSendCardTask(ctx context.Context, orderI
|
||||
span.AddEvent("getProxy")
|
||||
proxy, err2 := utils.GetProxy(ctx, needChangeProxyId, SendCardTaskTypeEnumNuclear.String())
|
||||
if err2 != nil {
|
||||
otelTrace.Logger.WithContext(ctx).Error("获取代理失败", zap.Error(err))
|
||||
otelTrace.Logger.WithContext(ctx).Error("获取代理失败", zap.Error(err2))
|
||||
continue
|
||||
}
|
||||
span.AddEvent("endGetProxy")
|
||||
|
||||
@@ -132,7 +132,6 @@ func (p *OrderBasedProxyStrategy) getInnerProxy(ctx context.Context, proxyReques
|
||||
if proxyRequest.OrderPerIP == 0 {
|
||||
proxyRequest.OrderPerIP = 1
|
||||
}
|
||||
|
||||
// 生成代理缓存键:channel_orderID
|
||||
cacheKey := fmt.Sprintf("%s_%s", proxyRequest.Channel, proxyRequest.OrderNo)
|
||||
|
||||
@@ -280,7 +279,6 @@ func (p *OrderBasedProxyStrategy) getNewProxy(ctx context.Context, proxyRequest
|
||||
zap.String("proxy", proxy),
|
||||
zap.String("orderID", proxyRequest.OrderNo),
|
||||
zap.String("channel", proxyRequest.Channel))
|
||||
//return proxy, nil
|
||||
}
|
||||
lastErr = err
|
||||
break
|
||||
|
||||
Reference in New Issue
Block a user