From 0400ffeefa86c7322566249e04fcb99621bdae41 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com>
Date: Fri, 13 Dec 2019 16:39:38 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E9=97=A8=E5=BA=97=E7=AD=89?=
=?UTF-8?q?=E7=BA=A7=E8=8E=B7=E5=8F=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
platformapi/jdapi/store_page.go | 49 ++++++++++++++++++++++++----
platformapi/jdapi/store_page_test.go | 4 +++
2 files changed, 46 insertions(+), 7 deletions(-)
diff --git a/platformapi/jdapi/store_page.go b/platformapi/jdapi/store_page.go
index 3cee6edc..a28550ef 100644
--- a/platformapi/jdapi/store_page.go
+++ b/platformapi/jdapi/store_page.go
@@ -21,8 +21,6 @@ const (
accessStorePageCookieName = "shop.o2o.jd.com1"
accessStorePageCookieName2 = "lsp-store1.jddj.com"
accessStorePageCookieName3 = "josl-privilege1.jddj.com"
-
- htmlResponeURL = "login-o2o.jddj.com/jpuser/"
)
type SkuPageImg struct {
@@ -276,9 +274,14 @@ var (
regexpTd = regexp.MustCompile(`
([0-9].*) | `)
regexpJDUserPage = regexp.MustCompile(`共([\s\S].*)页/([\s\S].*)条记录`)
regexpJDTr = regexp.MustCompile(`([\s\S]*?)
`)
- regexpJDUserInfo = regexp.MustCompile(`([\s\S]*?) | `)
+ regexpJDTdInfo = regexp.MustCompile(`([\s\S]*?) | `)
regexpJDUserID = regexp.MustCompile(`value="(.*)"`)
regexpJDUserIsManager = regexp.MustCompile(``)
+ regexpJDStoreLevel = regexp.MustCompile(`门店分级 :(.*);`)
+ htmlResponeURLs = []string{
+ "login-o2o.jddj.com/jpuser/",
+ "sta-store.jddj.com/store/",
+ }
)
const (
@@ -346,9 +349,11 @@ func (a *API) AccessStorePage2(fullURL string, params map[string]interface{}, is
if jsonResult1 == nil {
return platformapi.ErrLevelRecoverableErr, fmt.Errorf("mapData is nil")
}
- if strings.Index(fullURL, htmlResponeURL) >= 0 && jsonResult1[platformapi.KeyData] != nil {
- retVal = bodyStr
- return platformapi.ErrLevelSuccess, nil
+ for _, v := range htmlResponeURLs {
+ if strings.Index(fullURL, v) >= 0 && jsonResult1[platformapi.KeyData] != nil {
+ retVal = bodyStr
+ return platformapi.ErrLevelSuccess, nil
+ }
}
retVal = jsonResult1
var errMsg string
@@ -635,7 +640,7 @@ func (a *API) PrivilegeSearchUser(pageNo int) (storeUserList []*StoreUserInfo, t
totalCount = int(utils.Str2Int64(regexpJDUserPage.FindStringSubmatch(bodyStr)[2]))
totalPage = int(utils.Str2Int64(regexpJDUserPage.FindStringSubmatch(bodyStr)[1]))
for _, v := range list {
- tdList := regexpJDUserInfo.FindAllStringSubmatch(v[1], -1)
+ tdList := regexpJDTdInfo.FindAllStringSubmatch(v[1], -1)
if len(tdList) > 0 {
id := regexpJDUserID.FindStringSubmatch(tdList[10][0])[1]
storeUserInfo := &StoreUserInfo{
@@ -720,3 +725,33 @@ func (a *API) IsJdManagerUser(id int64) (isManager bool, err error) {
return true, err
}
}
+
+// 查询京东门店等级
+// 无法得到总数,循环50页后放弃寻找。。
+// https://sta-store.jddj.com/store/logquery?venderId=320406&stationNo=11733018¤tPage=1&pageSize=20
+func (a *API) GetJdStoreLevel(vendorOrgCode, vendorStoreID string) (level string, err error) {
+ for i := 1; i < 51; i++ {
+ jdParams := map[string]interface{}{
+ "venderId": vendorOrgCode,
+ "stationNo": vendorStoreID,
+ "currentPage": i,
+ "pageSize": 20,
+ }
+ body, err := a.AccessStorePage2("https://sta-store.jddj.com/store/logquery", jdParams, false, "")
+ if err != nil {
+ return "0", err
+ }
+ bodyStr := body.(string)
+ levelList := regexpJDStoreLevel.FindAllStringSubmatch(bodyStr, 1)
+ if len(levelList) > 0 {
+ level = levelList[0][1]
+ }
+ if level != "" {
+ break
+ }
+ if i == 50 {
+ level = "0"
+ }
+ }
+ return level, err
+}
diff --git a/platformapi/jdapi/store_page_test.go b/platformapi/jdapi/store_page_test.go
index ba66dc63..fdf41ce6 100644
--- a/platformapi/jdapi/store_page_test.go
+++ b/platformapi/jdapi/store_page_test.go
@@ -226,3 +226,7 @@ func TestIsJdManagerUser(t *testing.T) {
aa, _ := api.IsJdManagerUser(334683)
fmt.Println(aa)
}
+
+func TestGetJdStoreLevel(t *testing.T) {
+ api.GetJdStoreLevel("320406", "11732427")
+}