64 lines
1.2 KiB
Go
64 lines
1.2 KiB
Go
package goods_add
|
||
|
||
import (
|
||
"ai_scheduler/internal/config"
|
||
"ai_scheduler/internal/pkg/l_request"
|
||
"ai_scheduler/internal/pkg/util"
|
||
"context"
|
||
"encoding/json"
|
||
"fmt"
|
||
)
|
||
|
||
type Client struct {
|
||
cfg config.ToolConfig
|
||
}
|
||
|
||
func New(cfg config.ToolConfig) *Client {
|
||
return &Client{
|
||
cfg: cfg,
|
||
}
|
||
}
|
||
|
||
func (c *Client) Call(ctx context.Context, req *GoodsAddRequest) (*GoodsAddResponse, error) {
|
||
apiReq, _ := util.StructToMap(req)
|
||
|
||
r := l_request.Request{
|
||
Method: "Post",
|
||
Url: c.cfg.BaseURL,
|
||
Json: apiReq,
|
||
Headers: map[string]string{
|
||
"Content-Type": "application/json",
|
||
},
|
||
}
|
||
|
||
res, err := r.Send()
|
||
if err != nil {
|
||
return nil, fmt.Errorf("请求失败,err: %v", err)
|
||
}
|
||
|
||
type resType struct {
|
||
Code int `json:"code"`
|
||
Msg string `json:"msg"`
|
||
Data struct {
|
||
Id int `json:"id"` // 商品 ID
|
||
} `json:"data"`
|
||
}
|
||
|
||
var resData resType
|
||
if err := json.Unmarshal([]byte(res.Text), &resData); err != nil {
|
||
return nil, fmt.Errorf("解析响应失败,err: %v", err)
|
||
}
|
||
|
||
if resData.Code != 200 {
|
||
return nil, fmt.Errorf("业务错误,code: %d, msg: %s", resData.Code, resData.Msg)
|
||
}
|
||
|
||
toolResp := &GoodsAddResponse{
|
||
PreviewUrl: c.cfg.AddURL,
|
||
SpuCode: req.SpuCode,
|
||
Id: resData.Data.Id,
|
||
}
|
||
|
||
return toolResp, nil
|
||
}
|