- 整理饿百与京东PAGE API
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package jdapi
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
@@ -65,6 +66,76 @@ type CorporationInfo struct {
|
||||
} `json:"employees"`
|
||||
}
|
||||
|
||||
type PageShopInfo struct {
|
||||
DisCatName string `json:"disCatName"`
|
||||
DisplayType string `json:"displayType"`
|
||||
FreightWords string `json:"freightWords"`
|
||||
IsCart bool `json:"isCart"`
|
||||
IsJb int `json:"isJb"`
|
||||
IsWithHome bool `json:"isWithHome"`
|
||||
LogoURL string `json:"logoUrl"`
|
||||
StoreActPageList []interface{} `json:"storeActPageList"`
|
||||
StoreCommentVO struct {
|
||||
BuyerShowName string `json:"buyerShowName"`
|
||||
CreateTime string `json:"createTime"`
|
||||
IsOrgComment int `json:"isOrgComment"`
|
||||
OrgCommentContent string `json:"orgCommentContent"`
|
||||
Score4 int `json:"score4"`
|
||||
Score4Content string `json:"score4Content"`
|
||||
ScoreAvg float64 `json:"scoreAvg"`
|
||||
ShowTotalCount bool `json:"showTotalCount"`
|
||||
Skus []interface{} `json:"skus"`
|
||||
StoreStar float64 `json:"storeStar"`
|
||||
TagInfoItemList []string `json:"tagInfoItemList"`
|
||||
TotalCount int `json:"totalCount"`
|
||||
} `json:"storeCommentVO"`
|
||||
StoreDesc string `json:"storeDesc"`
|
||||
StoreInfo struct {
|
||||
BackgroundType string `json:"backgroundType"`
|
||||
CarrierNo int `json:"carrierNo"`
|
||||
CloseStatus int `json:"closeStatus"`
|
||||
DeliveryFirst string `json:"deliveryFirst"`
|
||||
DeliverySecond string `json:"deliverySecond"`
|
||||
ExpectArrivedTips []struct {
|
||||
Msg string `json:"msg"`
|
||||
Type int `json:"type"`
|
||||
} `json:"expectArrivedTips"`
|
||||
Flag bool `json:"flag"`
|
||||
FollowNo string `json:"followNo"`
|
||||
FreightTag struct {
|
||||
BelongIndustry int `json:"belongIndustry"`
|
||||
Type int `json:"type"`
|
||||
Words string `json:"words"`
|
||||
} `json:"freightTag"`
|
||||
FreightWords string `json:"freightWords"`
|
||||
InSaleNum string `json:"inSaleNum"`
|
||||
Industry string `json:"industry"`
|
||||
IsFollow bool `json:"isFollow"`
|
||||
IsMembership bool `json:"isMembership"`
|
||||
IsOverZone bool `json:"isOverZone"`
|
||||
IsTimeFight int `json:"isTimeFight"`
|
||||
LogoURL string `json:"logoUrl"`
|
||||
MonthSaleNum string `json:"monthSaleNum"`
|
||||
OrgCode string `json:"orgCode"`
|
||||
Params string `json:"params"`
|
||||
SearchLinkageFlag bool `json:"searchLinkageFlag"`
|
||||
ServiceTimes []struct {
|
||||
EndTime string `json:"endTime"`
|
||||
StartTime string `json:"startTime"`
|
||||
} `json:"serviceTimes"`
|
||||
ShowType string `json:"showType"`
|
||||
StationStatus int `json:"stationStatus"`
|
||||
StoreAddress string `json:"storeAddress"`
|
||||
StoreCertificateURL string `json:"storeCertificateUrl"`
|
||||
StoreID string `json:"storeId"`
|
||||
StoreName string `json:"storeName"`
|
||||
StoreTel string `json:"storeTel"`
|
||||
To string `json:"to"`
|
||||
UpToSendprice int `json:"upToSendprice"`
|
||||
} `json:"storeInfo"`
|
||||
StoreShareURL string `json:"storeShareUrl"`
|
||||
}
|
||||
|
||||
func (a *API) SetStoreCookie(storeCookie string) {
|
||||
a.locker.Lock()
|
||||
defer a.locker.Unlock()
|
||||
@@ -192,12 +263,37 @@ func (a *API) GetSkuPageImageInfo(skuId int64) (imgList []*SkuPageImg, err error
|
||||
}
|
||||
|
||||
func (a *API) GetStoreInfo(storeId string) (storeInfo map[string]interface{}, err error) {
|
||||
retVal, err := a.AccessStorePage(fmt.Sprintf("https://daojia.jd.com/client?functionId=store/storeDetailV220&body={\"storeId\":\"%s\"}&appVersion=6.1.0", storeId), nil)
|
||||
body := map[string]interface{}{
|
||||
"storeId": storeId,
|
||||
}
|
||||
retVal, err := a.AccessStorePage(fmt.Sprintf("https://daojia.jd.com/client?functionId=store/storeDetailV220&body=%s&appVersion=6.1.0", utils.Format4Output(body, true)), nil)
|
||||
return retVal, err
|
||||
}
|
||||
|
||||
func (a *API) GetStoreInfo2(storeID string) (storeInfo *PageShopInfo, err error) {
|
||||
retVal, err := a.GetStoreInfo(storeID)
|
||||
if err == nil {
|
||||
err = utils.Map2StructByJson(retVal, &storeInfo, false)
|
||||
}
|
||||
return storeInfo, err
|
||||
}
|
||||
|
||||
func signGetStoreList(bodyStr string) (signResult string) {
|
||||
wb := "923047ae3f8d11d8b19aeb9f3d1bc200"
|
||||
return fmt.Sprintf("%X", md5.Sum([]byte(bodyStr+wb)))
|
||||
}
|
||||
|
||||
func (a *API) GetStoreList(lng string, lat string) (retVal map[string]interface{}, err error) {
|
||||
retVal, err = a.AccessStorePage(fmt.Sprintf("https://daojia.jd.com/client?platCode=h5&appVersion=6.5.0&functionId=zone/recommendStoreList&body={\"channelId\":\"3997\",\"currentPage\":1,\"pageSize\":999,\"coordType\":\"2\",\"platform\":\"1\"}&signKey=b63f63fa9e27123b84a0c80ef5cd210d&lng=%s&lat=%s", lng, lat), nil)
|
||||
body := map[string]interface{}{
|
||||
"channelId": "3997",
|
||||
"currentPage": 1,
|
||||
"pageSize": 999,
|
||||
"coordType": "2",
|
||||
"platform": "1",
|
||||
}
|
||||
bodyStr := utils.Format4Output(body, true)
|
||||
signResult := signGetStoreList(bodyStr)
|
||||
retVal, err = a.AccessStorePage(fmt.Sprintf("https://daojia.jd.com/client?platCode=h5&appVersion=6.5.0&functionId=zone/recommendStoreList&body=%s&signKey=%s&lng=%s&lat=%s", bodyStr, signResult, lng, lat), nil)
|
||||
return retVal, err
|
||||
}
|
||||
|
||||
|
||||
@@ -78,3 +78,11 @@ func TestGetStoreInfo(t *testing.T) {
|
||||
}
|
||||
t.Log(utils.Format4Output(result, false))
|
||||
}
|
||||
|
||||
func TestGetStoreInfo2(t *testing.T) {
|
||||
result, err := api.GetStoreInfo2("11750116")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log(utils.Format4Output(result, false))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user