From c4e61671e6233d9dbaef116deca04c5ae3993680 Mon Sep 17 00:00:00 2001 From: suyl <770236076@qq.com> Date: Sat, 2 May 2020 13:28:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E4=BF=AE=E6=94=B9=E9=97=A8?= =?UTF-8?q?=E5=BA=97=E7=8A=B6=E6=80=81=E6=97=A0=E6=95=88=EF=BC=8C=E4=B8=B4?= =?UTF-8?q?=E6=97=B6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- platformapi/jdapi/store.go | 9 +++++++ platformapi/jdapi/store_page.go | 37 ++++++++++++++++++++++++++++ platformapi/jdapi/store_page_test.go | 10 ++++++++ 3 files changed, 56 insertions(+) diff --git a/platformapi/jdapi/store.go b/platformapi/jdapi/store.go index 8dbf0daa..769e7dcb 100644 --- a/platformapi/jdapi/store.go +++ b/platformapi/jdapi/store.go @@ -338,6 +338,15 @@ func (a *API) UpdateStoreInfo4Open2(updateParams *OpStoreParams, modifyCloseStat mapData := utils.Struct2MapByJson(updateParams) if !modifyCloseStatus { delete(mapData, "closeStatus") + } else { + jdStoreID, err := a.GetJdStoreID(int(utils.Str2Int64(updateParams.OutSystemID))) + if err != nil { + return err + } + err = a.UpdateClosetStatus(jdStoreID, updateParams.CloseStatus) + if err != nil { + return err + } } if updateParams.ServiceTimeStart1 == 0 && updateParams.ServiceTimeEnd1 == 0 { delete(mapData, "serviceTimeStart1") diff --git a/platformapi/jdapi/store_page.go b/platformapi/jdapi/store_page.go index 309bbbbd..fd058f7c 100644 --- a/platformapi/jdapi/store_page.go +++ b/platformapi/jdapi/store_page.go @@ -22,6 +22,7 @@ const ( AccessStorePageCookieName2 = "lsp-store1.jddj.com" accessStorePageCookieName3 = "josl-privilege1.jddj.com" accessStorePageCookieName4 = "o2o-stock1.jddj.com" + accessStorePageCookieName5 = "sta-store.jddj.com" ) type SkuPageImg struct { @@ -305,10 +306,12 @@ var ( regexpJDUserIsManager = regexp.MustCompile(`
`) regexpJDStoreLevel = regexp.MustCompile(`门店分级 :(.*);`) regexpJDSkuDirectPrice = regexp.MustCompile(`([\s\S]*?)`) + regexpJDStoreID = regexp.MustCompile(``) htmlResponeURLs = []string{ "login-o2o.jddj.com/jpuser/", "sta-store.jddj.com/store/", "pms-store.jddj.com/ware", + "sta-store.jddj.com", } ) @@ -329,6 +332,8 @@ func (a *API) SetJdCookie(cookieValue string) { a.SetCookie(AccessStorePageCookieName2, cookieValue) a.SetCookie(accessStorePageCookieName3, cookieValue) a.SetCookie(accessStorePageCookieName4, cookieValue) + a.SetCookie(accessStorePageCookieName5, cookieValue) + } func (a *API) AccessStorePage2(fullURL string, params map[string]interface{}, isPost bool, resultKey string) (retVal interface{}, err error) { @@ -905,3 +910,35 @@ func (a *API) SearchDeleteWare(deleteTimeStart, deleteTimeEnd string, page, page } return searchDeleteWareResults, err } + +//获取京东的门店信息(内部id) +//https://sta-store.jddj.com/store/query +func (a *API) GetJdStoreID(storeID int) (jdStoreID int, err error) { + jdParams := map[string]interface{}{ + "outSystemId": storeID, + "pageSize": 10, + } + body, err := a.AccessStorePage2("https://sta-store.jddj.com/store/query", jdParams, true, "") + if body != nil { + result := regexpJDStoreID.FindStringSubmatch(body.(string)) + if len(result) > 0 { + if result[1] != "" { + return int(utils.Str2Int64(result[1])), err + } else { + return 0, err + } + } + } + return 0, err +} + +//更新京东门店营业状态 +//https://sta-store.jddj.com/store/updateClosetStatus +func (a *API) UpdateClosetStatus(jdStoreID, closeStatus int) (err error) { + jdParams := map[string]interface{}{ + "id": jdStoreID, + "closeStatus": closeStatus, + } + _, err = a.AccessStorePage2("https://sta-store.jddj.com/store/updateClosetStatus", jdParams, true, "") + return err +} diff --git a/platformapi/jdapi/store_page_test.go b/platformapi/jdapi/store_page_test.go index 739525c2..da6106ee 100644 --- a/platformapi/jdapi/store_page_test.go +++ b/platformapi/jdapi/store_page_test.go @@ -254,3 +254,13 @@ func TestSearchDeleteWare(t *testing.T) { } fmt.Println(utils.Format4Output(searchResults, false)) } + +func TestGetJdStoreID(t *testing.T) { + result, err := api.GetJdStoreID(801246) + fmt.Println("test1", result, err) +} + +func TestUpdateClosetStatus(t *testing.T) { + err := api.UpdateClosetStatus(801246, 1) + fmt.Println("test1", err) +}