From 8e6d720d4782e883249b3fd8c24d25dfd8736924 Mon Sep 17 00:00:00 2001 From: gazebo Date: Sun, 16 Jun 2019 10:15:17 +0800 Subject: [PATCH] - jd page api:GetCorporationInfo --- platformapi/jdapi/store_page.go | 71 ++++++++++++++++++++++++++-- platformapi/jdapi/store_page_test.go | 8 ++++ 2 files changed, 74 insertions(+), 5 deletions(-) diff --git a/platformapi/jdapi/store_page.go b/platformapi/jdapi/store_page.go index 0800f6d0..b1dca787 100644 --- a/platformapi/jdapi/store_page.go +++ b/platformapi/jdapi/store_page.go @@ -4,6 +4,7 @@ import ( "fmt" "net/http" "net/url" + "strings" "git.rosy.net.cn/baseapi" "git.rosy.net.cn/baseapi/platformapi" @@ -21,6 +22,48 @@ type SkuPageImg struct { Small string `json:"small"` } +type CorporationInfo struct { + Scope string `json:"scope"` + OperName string `json:"oper_name"` + Status string `json:"status"` + BelongOrg string `json:"belong_org"` + CreditNo string `json:"credit_no"` + RegNo string `json:"reg_no"` + ID string `json:"id"` + OrgNo string `json:"org_no"` + EconKind string `json:"econ_kind"` + EndDate string `json:"end_date"` + TermEnd string `json:"term_end"` + NeedID bool `json:"needID"` + Address string `json:"address"` + Partners []struct { + IdentifyType string `json:"identify_type"` + ShouldCapiItems []interface{} `json:"should_capi_items"` + StockType string `json:"stock_type"` + IdentifyNo string `json:"identify_no"` + RealCapiItems []interface{} `json:"real_capi_items"` + Name string `json:"name"` + } `json:"partners"` + Name string `json:"name"` + Province string `json:"province"` + TermStart string `json:"term_start"` + AbnormalItems []interface{} `json:"abnormal_items"` + CheckDate string `json:"check_date"` + RegistCapi string `json:"regist_capi"` + StartDate string `json:"start_date"` + Changerecords []struct { + BeforeContent string `json:"before_content"` + ChangeDate string `json:"change_date"` + ChangeItem string `json:"change_item"` + AfterContent string `json:"after_content"` + } `json:"changerecords"` + Branches []interface{} `json:"branches"` + Employees []struct { + JobTitle string `json:"job_title"` + Name string `json:"name"` + } `json:"employees"` +} + func (a *API) SetStoreCookie(storeCookie string) { a.locker.Lock() defer a.locker.Unlock() @@ -33,14 +76,21 @@ func (a *API) GetStoreCookie() string { return a.storeCookie } -func (a *API) AccessStorePage(fullURL string) (retVal map[string]interface{}, err error) { +func (a *API) AccessStorePage(fullURL string, formData map[string]interface{}) (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 { - request, _ := http.NewRequest(http.MethodGet, fullURL, nil) + var request *http.Request + if formData == nil { + request, _ = http.NewRequest(http.MethodGet, fullURL, nil) + } else { + request, _ = http.NewRequest(http.MethodPost, fullURL, strings.NewReader(utils.Map2URLValues(formData).Encode())) + request.Header.Set("charset", "UTF-8") + request.Header.Set("Content-Type", "application/x-www-form-urlencoded") + } if err != nil { return nil } @@ -88,7 +138,7 @@ func (a *API) GetStoreOrderInfo(orderId, stationNo string) (storeOrderInfo map[s if stationNo != "" { urlStr += "&stationNo=" + stationNo } - retVal, err := a.AccessStorePage(urlStr) + retVal, err := a.AccessStorePage(urlStr, nil) // baseapi.SugarLogger.Debug(utils.Format4Output(retVal, false)) if err == nil { newOrderinfoMains := retVal["newOrderinfoMains"].(map[string]interface{}) @@ -106,7 +156,7 @@ func (a *API) GetStoreOrderInfoList(fromTime, toTime string) (storeOrderList []m pageNo := 1 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))) + retVal, err := a.AccessStorePage(fmt.Sprintf(urlTemplate, pageNo, pageSize, url.QueryEscape(fromTime), url.QueryEscape(toTime)), nil) // baseapi.SugarLogger.Debug(utils.Format4Output(retVal, false)) if err == nil { newOrderinfoMains := retVal["newOrderinfoMains"].(map[string]interface{}) @@ -128,7 +178,7 @@ func (a *API) GetSkuPageInfo(skuId int64) (skuPageInfo map[string]interface{}, e "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))) + skuPageInfo, err = a.AccessStorePage(fmt.Sprintf("https://daojia.jd.com/client?platCode=H5&functionId=product/detailV6_0&body=%s", utils.Format4Output(skuIDMap, true)), nil) return skuPageInfo, err } @@ -139,3 +189,14 @@ func (a *API) GetSkuPageImageInfo(skuId int64) (imgList []*SkuPageImg, err error } return imgList, err } + +func (a *API) GetCorporationInfo(stationNo, qualifyNumber string) (corporatonInfo *CorporationInfo, err error) { + result, err := a.AccessStorePage("https://sta-store.jddj.com/store/requestQualify.o2o", map[string]interface{}{ + "stationNo": stationNo, + "qualifyNumber": qualifyNumber, + }) + if err == nil { + err = utils.Map2StructByJson(result, &corporatonInfo, false) + } + return corporatonInfo, err +} diff --git a/platformapi/jdapi/store_page_test.go b/platformapi/jdapi/store_page_test.go index 55c881b4..d638342e 100644 --- a/platformapi/jdapi/store_page_test.go +++ b/platformapi/jdapi/store_page_test.go @@ -54,3 +54,11 @@ func TestGetSkuPageImageInfo(t *testing.T) { } baseapi.SugarLogger.Debug(utils.Format4Output(imgList, false)) } + +func TestGetCorporationInfo(t *testing.T) { + imgList, err := api.GetCorporationInfo("", "915101003431062533") + if err != nil { + t.Fatal(err) + } + baseapi.SugarLogger.Debug(utils.Format4Output(imgList, false)) +}