Files
kami_shop/internal/utils/client/client.go
danial a49e73bf33 refactor(conf): 删除未使用的配置项
- 移除了 conf/app.conf 中的 [gateway2]配置节
- 删除了 internal/config/config.go 中的 GetGateway2 和 GetRechargeTMall 函数
- 在 internal/utils/client/client.go 和 internal/integrations/scan_shop.go 中添加了请求超时设置
2025-02-23 19:33:06 +08:00

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
}