fix(service): 优化苹果卡密请求的超时与重试逻辑

- 将请求超时时间从30秒调整为5秒
- 增加请求重试次数至3次,提高请求成功率
- 请求中添加上下文传递,改进日志记录与追踪
- 修正返回信息中的中文标点及格式细节
- 升级go-resty/resty依赖版本以支持新功能
- 升级goquery依赖版本,保持依赖最新状态
This commit is contained in:
danial
2025-12-06 15:36:03 +08:00
parent 6caed1bf17
commit 3014d1cddc
3 changed files with 8 additions and 7 deletions

4
go.mod
View File

@@ -5,14 +5,14 @@ go 1.24.0
toolchain go1.24.6 toolchain go1.24.6
require ( require (
github.com/PuerkitoBio/goquery v1.10.3 github.com/PuerkitoBio/goquery v1.11.0
github.com/beego/beego/v2 v2.3.8 github.com/beego/beego/v2 v2.3.8
github.com/bytedance/gopkg v0.1.3 github.com/bytedance/gopkg v0.1.3
github.com/bytedance/sonic v1.14.2 github.com/bytedance/sonic v1.14.2
github.com/dubonzi/otelresty v1.6.0 github.com/dubonzi/otelresty v1.6.0
github.com/duke-git/lancet/v2 v2.3.8 github.com/duke-git/lancet/v2 v2.3.8
github.com/forgoer/openssl v1.8.0 github.com/forgoer/openssl v1.8.0
github.com/go-resty/resty/v2 v2.16.5 github.com/go-resty/resty/v2 v2.17.0
github.com/go-sql-driver/mysql v1.9.3 github.com/go-sql-driver/mysql v1.9.3
github.com/go-stomp/stomp/v3 v3.1.5 github.com/go-stomp/stomp/v3 v3.1.5
github.com/google/uuid v1.6.0 github.com/google/uuid v1.6.0

5
go.sum
View File

@@ -1,7 +1,7 @@
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
github.com/PuerkitoBio/goquery v1.10.3 h1:pFYcNSqHxBD06Fpj/KsbStFRsgRATgnf3LeXiUkhzPo= github.com/PuerkitoBio/goquery v1.11.0 h1:jZ7pwMQXIITcUXNH83LLk+txlaEy6NVOfTuP43xxfqw=
github.com/PuerkitoBio/goquery v1.10.3/go.mod h1:tMUX0zDMHXYlAQk6p35XxQMqMweEKB7iK7iLNd4RH4Y= github.com/PuerkitoBio/goquery v1.11.0/go.mod h1:wQHgxUOU3JGuj3oD/QFfxUdlzW6xPHfqyHre6VMY4DQ=
github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kktS1LM= github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kktS1LM=
github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA= github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA=
github.com/beego/beego/v2 v2.3.8 h1:wplhB1pF4TxR+2SS4PUej8eDoH4xGfxuHfS7wAk9VBc= github.com/beego/beego/v2 v2.3.8 h1:wplhB1pF4TxR+2SS4PUej8eDoH4xGfxuHfS7wAk9VBc=
@@ -46,6 +46,7 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM= github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM=
github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA= github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA=
github.com/go-resty/resty/v2 v2.17.0/go.mod h1:kCKZ3wWmwJaNc7S29BRtUhJwy7iqmn+2mLtQrOyQlVA=
github.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo= github.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo=
github.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= github.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU=
github.com/go-stomp/stomp/v3 v3.1.5 h1:Pikz1OSusmSKUm5mRKYfXQZaDatfZ+EnBBA1JJ2xENQ= github.com/go-stomp/stomp/v3 v3.1.5 h1:Pikz1OSusmSKUm5mRKYfXQZaDatfZ+EnBBA1JJ2xENQ=

View File

@@ -95,15 +95,15 @@ func (c *AppleCardImpl) SendCard(ctx context.Context, jsonStr string, cardInfo s
if err != nil { if err != nil {
return false, "获取苹果卡密地址失败!" return false, "获取苹果卡密地址失败!"
} }
webClient := resty.New().SetTimeout(time.Second * 30) webClient := resty.New().SetTimeout(time.Second * 5).SetRetryCount(3)
otelresty.TraceClient(webClient) otelresty.TraceClient(webClient)
response, err := webClient.R().SetBody(params).SetHeaders(map[string]string{ response, err := webClient.R().SetBody(params).SetHeaders(map[string]string{
"Content-Type": "application/json", "Content-Type": "application/json",
"tokenFrom": "iframe", "tokenFrom": "iframe",
}).Post(url) }).SetContext(ctx).Post(url)
if err != nil { if err != nil {
otelTrace.Logger.WithContext(ctx).Error("Map转化为byte数组失败,异常。", zap.Error(err)) otelTrace.Logger.WithContext(ctx).Error("Map转化为byte数组失败,异常。", zap.Error(err))
return false, "内部错误请稍后再试试" return false, "内部错误请稍后再试试"
} }
otelTrace.Logger.WithContext(ctx).Info("远端请求返回数据", zap.String("response", response.String())) otelTrace.Logger.WithContext(ctx).Info("远端请求返回数据", zap.String("response", response.String()))
if gojson.Json(response.String()).Get("code").Tostring() == "" { if gojson.Json(response.String()).Get("code").Tostring() == "" {