From 404b9b9b38bed6da5dea3d0a53889a3e8e542f46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 21 Jan 2020 11:55:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=AC=E4=B8=9Capi=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=BA=AC=E4=B8=9C=E6=8C=87=E5=AF=BC=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- platformapi/jdapi/store_page.go | 47 ++++++++++++++++++++++------ platformapi/jdapi/store_page_test.go | 5 +++ 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/platformapi/jdapi/store_page.go b/platformapi/jdapi/store_page.go index 974eb12c..d3497432 100644 --- a/platformapi/jdapi/store_page.go +++ b/platformapi/jdapi/store_page.go @@ -21,6 +21,7 @@ const ( accessStorePageCookieName = "shop.o2o.jd.com1" accessStorePageCookieName2 = "lsp-store1.jddj.com" accessStorePageCookieName3 = "josl-privilege1.jddj.com" + accessStorePageCookieName4 = "o2o-stock1.jddj.com" ) type SkuPageImg struct { @@ -292,16 +293,17 @@ var ( pageExceedLimitCodes = map[string]int{ "403": 1, } - pageCanRetryCodes = map[string]int{} - regexpTable = regexp.MustCompile(`([\s\S]*?)
`) - regexpTd = regexp.MustCompile(`([0-9].*)`) - regexpJDUserPage = regexp.MustCompile(`共([\s\S].*)页/([\s\S].*)条记录`) - regexpJDTr = regexp.MustCompile(`([\s\S]*?)`) - regexpJDTdInfo = regexp.MustCompile(`([\s\S]*?)`) - regexpJDUserID = regexp.MustCompile(`value="(.*)"`) - regexpJDUserIsManager = regexp.MustCompile(`
`) - regexpJDStoreLevel = regexp.MustCompile(`门店分级 :(.*);`) - htmlResponeURLs = []string{ + pageCanRetryCodes = map[string]int{} + regexpTable = regexp.MustCompile(`([\s\S]*?)
`) + regexpTd = regexp.MustCompile(`([0-9].*)`) + regexpJDUserPage = regexp.MustCompile(`共([\s\S].*)页/([\s\S].*)条记录`) + regexpJDTr = regexp.MustCompile(`([\s\S]*?)`) + regexpJDTdInfo = regexp.MustCompile(`([\s\S]*?)`) + regexpJDUserID = regexp.MustCompile(`value="(.*)"`) + regexpJDUserIsManager = regexp.MustCompile(`
`) + regexpJDStoreLevel = regexp.MustCompile(`门店分级 :(.*);`) + regexpJDSkuDirectPrice = regexp.MustCompile(`([\s\S]*?)`) + htmlResponeURLs = []string{ "login-o2o.jddj.com/jpuser/", "sta-store.jddj.com/store/", } @@ -323,6 +325,7 @@ func (a *API) SetJdCookie(cookieValue string) { a.SetCookie(accessStorePageCookieName, cookieValue) a.SetCookie(accessStorePageCookieName2, cookieValue) a.SetCookie(accessStorePageCookieName3, cookieValue) + a.SetCookie(accessStorePageCookieName4, cookieValue) } func (a *API) AccessStorePage2(fullURL string, params map[string]interface{}, isPost bool, resultKey string) (retVal interface{}, err error) { @@ -812,3 +815,27 @@ func (a *API) GetJdUpcCodeByName(name, upcCode string, pageNo, pageSize int) (pr } return productInfos, err } + +//获取京东商品的指导价格 +//https://stock-store.jddj.com/storeproduct/query +func (a *API) GetJdSkuDirectPrice(skuID int) (price int64, err error) { + jdParams := map[string]interface{}{ + "outSkuId": skuID, + "fixedStatus": 1, + "stationNo": "allStation", + "numStatus": 0, + "currentPage": 1, + "pageSize": 1, + } + body, err := a.AccessStorePage2("https://stock-store.jddj.com/storeproduct/query", jdParams, true, "") + bodyStr := body.(map[string]interface{})["fakeData"].(string) + result := regexpJDSkuDirectPrice.FindAllStringSubmatch(bodyStr, -1) + if len(result) > 0 { + if result[3][1] != "" { + return utils.Float64TwoInt64(utils.Str2Float64(result[3][1]) * 100), err + } else { + return 0, err + } + } + return price, err +} diff --git a/platformapi/jdapi/store_page_test.go b/platformapi/jdapi/store_page_test.go index bfcd08b9..168cd643 100644 --- a/platformapi/jdapi/store_page_test.go +++ b/platformapi/jdapi/store_page_test.go @@ -234,3 +234,8 @@ func TestGetJdStoreLevel(t *testing.T) { func TestGetJdUpcCodeByName(t *testing.T) { api.GetJdUpcCodeByName("", "6952395700895", 2, 5) } + +func TestGetJdSkuDirectPrice(t *testing.T) { + result, err := api.GetJdSkuDirectPrice(31031) + fmt.Println("test1", result, err) +}