diff --git a/platformapi/jdapi/jdapi.go b/platformapi/jdapi/jdapi.go index 373a4206..22455a4e 100644 --- a/platformapi/jdapi/jdapi.go +++ b/platformapi/jdapi/jdapi.go @@ -56,8 +56,6 @@ const ( AllPage = 0 DefaultPageSize = 50 - - storeURL = "http://store.jddj.com" ) type API struct { diff --git a/platformapi/jdapi/store_page.go b/platformapi/jdapi/store_page.go index 5ba7ffe5..53026468 100644 --- a/platformapi/jdapi/store_page.go +++ b/platformapi/jdapi/store_page.go @@ -14,6 +14,12 @@ const ( accessStorePageCookieName = "shop.o2o.jd.com1" ) +type SkuPageImg struct { + Big string `json:"big"` + Share string `json:"share"` + Small string `json:"small"` +} + func (a *API) SetStoreCookie(storeCookie string) { a.locker.Lock() defer a.locker.Unlock() @@ -26,15 +32,13 @@ func (a *API) GetStoreCookie() string { return a.storeCookie } -func (a *API) AccessStorePage(subURL string) (retVal map[string]interface{}, err error) { +func (a *API) AccessStorePage(fullURL string) (retVal map[string]interface{}, err error) { storeCookie := a.GetStoreCookie() if storeCookie == "" { return nil, fmt.Errorf("需要设置Store Cookie才能使用此方法") } err = platformapi.AccessPlatformAPIWithRetry(a.client, func() *http.Request { - fullURL := utils.GenerateGetURL(storeURL, subURL, nil) - // baseapi.SugarLogger.Debug(fullURL) request, _ := http.NewRequest(http.MethodGet, fullURL, nil) if err != nil { return nil @@ -50,7 +54,7 @@ func (a *API) AccessStorePage(subURL string) (retVal map[string]interface{}, err retVal = jsonResult1 code := jsonResult1["code"].(string) if code == ResponseCodeSuccess { - retVal = jsonResult1 + retVal = jsonResult1["result"].(map[string]interface{}) return platformapi.ErrLevelSuccess, nil } newErr := utils.NewErrorCode(jsonResult1["msg"].(string), code) @@ -75,14 +79,14 @@ func (a *API) GetRealMobile4Order(orderId, stationNo string) (mobile string, err } func (a *API) GetStoreOrderInfo(orderId, stationNo string) (storeOrderInfo map[string]interface{}, err error) { - urlStr := "order/newManager/search?pageNo=1&pageSize=1&orderBy=&desc=true¶m=" + orderId + urlStr := "http://store.jddj.com/order/newManager/search?pageNo=1&pageSize=1&orderBy=&desc=true¶m=" + orderId if stationNo != "" { urlStr += "&stationNo=" + stationNo } retVal, err := a.AccessStorePage(urlStr) // baseapi.SugarLogger.Debug(utils.Format4Output(retVal, false)) if err == nil { - newOrderinfoMains := retVal["result"].(map[string]interface{})["newOrderinfoMains"].(map[string]interface{}) + newOrderinfoMains := retVal["newOrderinfoMains"].(map[string]interface{}) resultList := newOrderinfoMains["resultList"].([]interface{}) if len(resultList) > 0 { return resultList[0].(map[string]interface{}), nil @@ -95,12 +99,12 @@ func (a *API) GetStoreOrderInfo(orderId, stationNo string) (storeOrderInfo map[s func (a *API) GetStoreOrderInfoList(fromTime, toTime string) (storeOrderList []map[string]interface{}, err error) { pageSize := 100 pageNo := 1 - urlTemplate := "order/newManager/tabQuery/all?o2oOrderType=10000&pageNo=%d&pageSize=%d&orderBy=&desc=true&startTimeQuery=%s&endTimeQuery=%s&stationNo=" + urlTemplate := "http://store.jddj.com/order/newManager/tabQuery/all?o2oOrderType=10000&pageNo=%d&pageSize=%d&orderBy=&desc=true&startTimeQuery=%s&endTimeQuery=%s&stationNo=" for { retVal, err := a.AccessStorePage(fmt.Sprintf(urlTemplate, pageNo, pageSize, url.QueryEscape(fromTime), url.QueryEscape(toTime))) // baseapi.SugarLogger.Debug(utils.Format4Output(retVal, false)) if err == nil { - newOrderinfoMains := retVal["result"].(map[string]interface{})["newOrderinfoMains"].(map[string]interface{}) + newOrderinfoMains := retVal["newOrderinfoMains"].(map[string]interface{}) resultList := newOrderinfoMains["resultList"].([]interface{}) storeOrderList = append(storeOrderList, utils.Slice2MapSlice(resultList)...) if len(storeOrderList) >= int(utils.MustInterface2Int64(newOrderinfoMains["totalCount"])) { @@ -113,3 +117,23 @@ func (a *API) GetStoreOrderInfoList(fromTime, toTime string) (storeOrderList []m } return nil, err } + +func (a *API) GetSkuPageInfo(skuId int64) (skuPageInfo map[string]interface{}, err error) { + skuIDMap := map[string]interface{}{ + "skuId": utils.Int64ToStr(skuId), + "storeId": "0", + } + skuPageInfo, err = a.AccessStorePage(fmt.Sprintf("https://daojia.jd.com/client?platCode=H5&functionId=product/detailV6_0&body=%s", utils.Format4Output(skuIDMap, true))) + if err == nil { + baseapi.SugarLogger.Debug(utils.Format4Output(skuPageInfo, false)) + } + return skuPageInfo, err +} + +func (a *API) GetSkuPageImageInfo(skuId int64) (imgList []*SkuPageImg, err error) { + skuPageInfo, err := a.GetSkuPageInfo(skuId) + if err == nil { + err = utils.Map2StructByJson(skuPageInfo["image"], &imgList, false) + } + return imgList, err +} diff --git a/platformapi/jdapi/store_page_test.go b/platformapi/jdapi/store_page_test.go index 43c5df90..55c881b4 100644 --- a/platformapi/jdapi/store_page_test.go +++ b/platformapi/jdapi/store_page_test.go @@ -8,9 +8,9 @@ import ( ) func TestGetRealMobileNumber4Order(t *testing.T) { - orderId := "900658736000042" - desiredMobile := "18569035610" - mobile, err := api.GetRealMobile4Order(orderId, "11738115") + orderId := "910170516000941" + desiredMobile := "13398196274" + mobile, err := api.GetRealMobile4Order(orderId, "") if err != nil { t.Fatal(err) } @@ -21,9 +21,8 @@ func TestGetRealMobileNumber4Order(t *testing.T) { } func TestGetStoreOrderInfo(t *testing.T) { - orderId := "826309564000021" - // desiredMobile := "18569035610" - orderInfo, err := api.GetStoreOrderInfo(orderId, "11738115") + orderId := "910170516000941" + orderInfo, err := api.GetStoreOrderInfo(orderId, "") if err != nil { t.Fatal(err) } @@ -39,3 +38,19 @@ func TestGetStoreOrderInfoList(t *testing.T) { baseapi.SugarLogger.Debug(utils.Format4Output(orderInfoList, false)) } } + +func TestGetSkuPageInfo(t *testing.T) { + skuInfo, err := api.GetSkuPageInfo(2023524346) + if err != nil { + t.Fatal(err) + } + baseapi.SugarLogger.Debug(utils.Format4Output(skuInfo, false)) +} + +func TestGetSkuPageImageInfo(t *testing.T) { + imgList, err := api.GetSkuPageImageInfo(2023524346) + if err != nil { + t.Fatal(err) + } + baseapi.SugarLogger.Debug(utils.Format4Output(imgList, false)) +}