daShangDao_xy_dll/controller/xyOrderSynchronization.go

46 lines
1.4 KiB
Go

package controller
import (
"encoding/json"
"fmt"
_type "xianyv/type"
"xianyv/utils/requestUtil"
)
type ExpressListResponse struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data *ExpressData `json:"data"`
}
type ExpressData struct {
List []ExpressCompany `json:"list"`
}
type ExpressCompany struct {
Code string `json:"code"` // 快递公司代码
ExpressAlias string `json:"express_alias"` // 快递别名(可能为空)
ExpressName string `json:"express_name"` // 快递公司全名
IsHot bool `json:"is_hot"` // 是否热门
}
func XyOrderSynchronization(body _type.GetOrderShip) ([]byte, error) {
companiesPath := "/api/open/express/companies"
var by _type.GetShopList
by.AppId = body.AppId
by.AppSecret = body.AppSecret
companiesResponse, err := requestUtil.MakeAPIRequest(body.AppId, body.AppSecret, "https://open.goofish.pro", companiesPath, by)
var expressListResponse ExpressListResponse
if err := json.Unmarshal(companiesResponse, &expressListResponse); err != nil {
return nil, fmt.Errorf("解析 errorWrapper 失败: %v", err)
}
for _, list := range expressListResponse.Data.List {
if body.ExpressName == list.ExpressName {
body.ExpressCode = list.Code
}
}
shipPath := "/api/open/order/ship"
shipResponse, err := requestUtil.MakeAPIRequest(body.AppId, body.AppSecret, "https://open.goofish.pro", shipPath, body)
return shipResponse, err
}