jd fake api

This commit is contained in:
gazebo
2020-01-14 17:34:14 +08:00
parent 2245908e18
commit 23b58f605a
3 changed files with 207 additions and 2 deletions

View File

@@ -0,0 +1,92 @@
package jdapi
import (
"errors"
"git.rosy.net.cn/baseapi/utils"
)
func (a *API) FakeOrderQuery(jdParams map[string]interface{}) (retVal []interface{}, totalCount int, err error) {
retVal, totalCount, err = a.AccessAPIHavePage("order/orderQuery", jdParams, nil, nil, nil)
return retVal, totalCount, err
}
func (a *API) FakeQuerySingleOrder(orderId, deliveryStationNo string) (map[string]interface{}, error) {
jdParams := make(map[string]interface{})
jdParams["orderId"] = orderId
jdParams["deliveryStationNo "] = deliveryStationNo
result, _, err := a.FakeOrderQuery(jdParams)
if err != nil {
return nil, err
}
if len(result) == 0 {
return nil, ErrCanNotFindOrder
}
return result[0].(map[string]interface{}), nil
}
func (a *API) FakeBatchUpdateCurrentQtys(trackInfo, outStationNo, stationNo string, skuStockList []*SkuStock, userPin string) (responseList []*StoreSkuBatchUpdateResponse, err error) {
if (outStationNo == "" && stationNo == "") || (outStationNo != "" && stationNo != "") {
return nil, errors.New("outStationNo and stationNo can not all be empty or have value")
}
jdParams := map[string]interface{}{
"skuStockList": skuStockList,
"userPin": utils.GetAPIOperator(userPin),
}
if outStationNo != "" {
jdParams["outStationNo"] = outStationNo
} else {
jdParams["stationNo"] = stationNo
}
result, err := a.AccessAPINoPage2("stock/batchUpdateCurrentQtys", jdParams, nil, nil, genNoPageResultParser("retCode", "retMsg", "data", "0"), trackInfo)
if result != nil {
var err2 error
if responseList, err2 = a.handleBatchOpResult(outStationNo, stationNo, len(skuStockList), err, result, ""); err2 != nil && err == nil {
err = err2
}
}
return responseList, err
}
func (a *API) FakeBatchUpdateVendibility(trackInfo, outStationNo, stationNo string, stockVendibilityList []*StockVendibility, userPin string) (responseList []*StoreSkuBatchUpdateResponse, err error) {
if (outStationNo == "" && stationNo == "") || (outStationNo != "" && stationNo != "") {
return nil, errors.New("outStationNo and stationNo can not all be empty or have value")
}
jdParams := map[string]interface{}{
"stockVendibilityList": stockVendibilityList,
"userPin": utils.GetAPIOperator(userPin),
}
if outStationNo != "" {
jdParams["outStationNo"] = outStationNo
} else {
jdParams["stationNo"] = stationNo
}
// 此函数在全部失败时err仍然返回成功
result, err := a.AccessAPINoPage2("stock/batchUpdateVendibility", jdParams, nil, nil, genNoPageResultParser("retCode", "retMsg", "data", "0"), trackInfo)
if result != nil {
var err2 error
if responseList, err2 = a.handleBatchOpResult(outStationNo, stationNo, len(stockVendibilityList), err, result, ""); err2 != nil && err == nil {
err = err2
}
}
return responseList, err
}
func (a *API) FakeUpdateVendorStationPrice(trackInfo string, outStationNo, stationNo string, skuPriceInfoList []*SkuPriceInfo) (responseList []*StoreSkuBatchUpdateResponse, err error) {
jdParams := map[string]interface{}{
"skuPriceInfoList": skuPriceInfoList,
}
if outStationNo != "" {
jdParams["outStationNo"] = outStationNo
} else {
jdParams["stationNo"] = stationNo
}
result, err := a.AccessAPINoPage2("price/batchUpdateStationPrice", jdParams, nil, nil, genNoPageResultParser("code", "msg", "result", "0"), trackInfo)
if result != nil {
var err2 error
if responseList, err2 = a.handleBatchOpResult(outStationNo, stationNo, len(skuPriceInfoList), err, result, "json2"); err2 != nil && err == nil {
err = err2
}
}
return responseList, err
}

View File

@@ -0,0 +1,105 @@
package jdapi
import (
"testing"
"time"
"git.rosy.net.cn/baseapi/utils"
)
func TestFakeOrderQuery(t *testing.T) {
api := NewFakeJD("ndslkv9asl@djf_n7askdjfk$", "http://test.jxc4.com/qqqq")
retVal, err := api.FakeQuerySingleOrder("2000483691000741", "11866256")
t.Log(utils.Format4Output(retVal, false))
if err != nil {
t.Error(err)
}
if false {
t.Log(utils.Format4Output(retVal, false))
}
}
func TestFakeBatchUpdateCurrentQtys(t *testing.T) {
api := NewFakeJD("ndslkv9asl@djf_n7askdjfk$", "http://test.jxc4.com/qqqq")
retVal, err := api.FakeBatchUpdateCurrentQtys("", "", "11943257", []*SkuStock{
&SkuStock{
OutSkuId: "2029937911",
StockQty: 88,
},
}, "test")
t.Log(utils.Format4Output(retVal, false))
if err != nil {
t.Error(err)
}
if false {
t.Log(utils.Format4Output(retVal, false))
}
}
func TestFakeBatchUpdateVendibility(t *testing.T) {
api := NewFakeJD("ndslkv9asl@djf_n7askdjfk$", "http://test.jxc4.com/qqqq")
retVal, err := api.FakeBatchUpdateVendibility("", "", "11943257", []*StockVendibility{
&StockVendibility{
OutSkuId: "2029937911",
DoSale: true,
},
}, "test")
t.Log(utils.Format4Output(retVal, false))
if err != nil {
t.Error(err)
}
if false {
t.Log(utils.Format4Output(retVal, false))
}
}
func TestFakeUpdateVendorStationPrice(t *testing.T) {
api := NewFakeJD("ndslkv9asl@djf_n7askdjfk$", "http://test.jxc4.com/qqqq")
retVal, err := api.FakeUpdateVendorStationPrice("", "", "11943257", []*SkuPriceInfo{
&SkuPriceInfo{
OutSkuId: "2029937911",
Price: 4567,
},
})
t.Log(utils.Format4Output(retVal, false))
if err != nil {
t.Error(err)
}
if false {
t.Log(utils.Format4Output(retVal, false))
}
}
func TestFakeCreatePromotionSingle(t *testing.T) {
api := NewFakeJD("ndslkv9asl@djf_n7askdjfk$", "http://test.jxc4.com/qqqq")
infoId, err := api.CreatePromotionInfosSingle("测试1", time.Now(), time.Now().Add(24*time.Hour), "", "", "")
if err != nil {
t.Fatal(err)
}
t.Log(infoId)
err = api.CreatePromotionRulesSingle(infoId, "", 1, 1, 1, 1, "")
if err != nil {
t.Fatal(err)
}
skuInfos, err := api.CreatePromotionSkuSingle(infoId, "", []*PromotionSku{
&PromotionSku{
OutSkuID: "2216",
StationNo: 11943257,
PromotionPrice: 500,
LimitSkuCount: 2,
},
}, "")
if err != nil {
t.Fatal(err)
}
t.Log(skuInfos)
err = api.ConfirmPromotionSingle(infoId, "", "")
if err != nil {
t.Fatal(err)
}
}

View File

@@ -61,6 +61,7 @@ const (
type API struct {
platformapi.APICookie
baseURL string
token string
appKey string
appSecret string
@@ -134,6 +135,7 @@ func New(token, appKey, appSecret string, config ...*platformapi.APIConfig) *API
curConfig = *config[0]
}
return &API{
baseURL: prodURL,
token: token,
appKey: appKey,
appSecret: appSecret,
@@ -142,6 +144,12 @@ func New(token, appKey, appSecret string, config ...*platformapi.APIConfig) *API
}
}
func NewFakeJD(token, baseURL string, config ...*platformapi.APIConfig) *API {
a := New(token, "", "", config...)
a.baseURL = baseURL
return a
}
func NewPageOnly(cookie string, config ...*platformapi.APIConfig) *API {
api := New("", "", "", config...)
api.SetCookie(accessStorePageCookieName, cookie)
@@ -186,11 +194,11 @@ func (a *API) AccessAPI2(apiStr string, jdParams map[string]interface{}, traceIn
params[signKey] = sign
var request *http.Request
if userGet {
fullURL := utils.GenerateGetURL(prodURL, apiStr, params)
fullURL := utils.GenerateGetURL(a.baseURL, apiStr, params)
// baseapi.SugarLogger.Debug(fullURL)
request, _ = http.NewRequest(http.MethodGet, fullURL, nil)
} else {
fullURL := prodURL + "/" + apiStr
fullURL := utils.GenerateGetURL(a.baseURL, apiStr, nil)
// baseapi.SugarLogger.Debug(utils.Map2URLValues(params).Encode())
request, _ = http.NewRequest(http.MethodPost, fullURL, strings.NewReader(utils.Map2URLValues(params).Encode()))
request.Header.Set("charset", "UTF-8")