- 移除了 conf/app.conf 中的 [gateway2]配置节 - 删除了 internal/config/config.go 中的 GetGateway2 和 GetRechargeTMall 函数 - 在 internal/utils/client/client.go 和 internal/integrations/scan_shop.go 中添加了请求超时设置
82 lines
2.0 KiB
Go
82 lines
2.0 KiB
Go
package client
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"io"
|
|
"net/http"
|
|
"net/url"
|
|
"shop/internal/traceRouter"
|
|
"time"
|
|
|
|
"github.com/beego/beego/v2/client/httplib"
|
|
"github.com/beego/beego/v2/core/logs"
|
|
"go.opentelemetry.io/otel"
|
|
"go.opentelemetry.io/otel/propagation"
|
|
)
|
|
|
|
type Response struct {
|
|
Msg string `json:"msg"`
|
|
Code int `json:"code"`
|
|
Data interface{} `json:"data"`
|
|
}
|
|
|
|
// Get 发送get请求
|
|
func Get(ctx context.Context, baseUrl string, params map[string]string) (result string, err error) {
|
|
urlParams := url.Values{}
|
|
for k, v := range params {
|
|
urlParams.Add(k, v)
|
|
}
|
|
realUrl, err := url.Parse(baseUrl)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
realUrl.RawQuery = urlParams.Encode()
|
|
logs.Info("请求地址", realUrl.String())
|
|
req, err := http.NewRequestWithContext(ctx, "GET", realUrl.String(), nil)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
// 设置请求头
|
|
req.Header.Set("tokenFrom", "iframe")
|
|
//设置trace
|
|
client := http.Client{}
|
|
client.Timeout = time.Second * 30
|
|
otel.GetTextMapPropagator().Inject(ctx, propagation.HeaderCarrier(req.Header))
|
|
resp, err := client.Do(req)
|
|
if resp != nil {
|
|
b, err := io.ReadAll(resp.Body)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return string(b), nil
|
|
}
|
|
return "", err
|
|
}
|
|
|
|
func Post(ctx context.Context, baseUrl string, params map[string]string, data map[string]interface{}) (result string, err error) {
|
|
ctx, span := traceRouter.CreateSpan(ctx, "通讯", "Post")
|
|
defer span.End()
|
|
urlParams := url.Values{}
|
|
for k, v := range params {
|
|
urlParams.Add(k, v)
|
|
}
|
|
realUrl, err := url.Parse(baseUrl)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
realUrl.RawQuery = urlParams.Encode()
|
|
req := httplib.NewBeegoRequestWithCtx(ctx, realUrl.String(), "POST")
|
|
otel.GetTextMapPropagator().Inject(ctx, propagation.HeaderCarrier(req.GetRequest().Header))
|
|
req.SetTimeout(30*time.Second, 30*time.Second)
|
|
_, _ = req.JSONBody(data)
|
|
response, err := req.String()
|
|
return response, err
|
|
}
|
|
|
|
func Unmarshal(s string) (Response, error) {
|
|
var r Response
|
|
err := json.Unmarshal([]byte(s), &r)
|
|
return r, err
|
|
}
|