diff --git a/platformapi/autonavi/autonavi_test.go b/platformapi/autonavi/autonavi_test.go index 465b9acd..8d6be7ca 100644 --- a/platformapi/autonavi/autonavi_test.go +++ b/platformapi/autonavi/autonavi_test.go @@ -85,7 +85,7 @@ func TestGetDistricts(t *testing.T) { } func TestGetCoordinateFromAddress(t *testing.T) { - lng, lat, districtCode := autonaviAPI.GetCoordinateFromAddress("天府广场", "成都市") + lng, lat, districtCode := autonaviAPI.GetCoordinateFromAddress("辽宁铁岭市铁岭县凡河新区3区3号楼4单元301", "") t.Logf("lng:%f, lat:%f, districtCode:%d", lng, lat, districtCode) } @@ -151,7 +151,7 @@ func TestBatchWalkingDistance(t *testing.T) { } func TestAA(t *testing.T) { - result, err := autonaviAPI.GetCoordinateAreaInfo(116.331471, 39.909837) + result, err := autonaviAPI.GetCoordinateAreaInfo(123.715455, 42.221651) if err != nil { t.Fatal(err) } diff --git a/platformapi/jdshopapi/jxshopapi_test.go b/platformapi/jdshopapi/jxshopapi_test.go index 753397fb..74304db3 100644 --- a/platformapi/jdshopapi/jxshopapi_test.go +++ b/platformapi/jdshopapi/jxshopapi_test.go @@ -16,6 +16,6 @@ func init() { baseapi.Init(sugarLogger) api = New("de8157b447584885910f429011e49cb93yjq", "E1D746D42474D5F1F1A10CECE75D99F6", "efa7e1d1a22640fa990e6cf164b28608") api.SetCookieWithStr(` - thor=80FAF09E9A09B6E618A68057BDFCFCB83C345398FC0EA96BB93E21F628E09F69ABC4812E3C973FC424A9790F0EFBB575F0B38D3D40ED8C7FE094307204922296A626E5E990526A84EEA9E1F52BE923D06899DA48B400EBFCDB1F7934C84EAE4AA0D9454C7173B79CE6780DC12463FF8101D2D81F1975356E1E062C3B7A5EA9CF6DB6EFEF59F75691F88E2E044ADA79EF; + thor=80FAF09E9A09B6E618A68057BDFCFCB88A0E4CE7743FBEC84F10D992F9C6A4119DF98DA3CAAE9C7F17BEB62884625B4E7BC82422A90F45F02EA293572D951B055EF0B5F603AEA568DFD4234138F841EC1AC1F67B30B48AAC9EAD5FBAE7943E1DCC99E99D8358C82F7832B71A2BCB31624E16BBF561720443DE966BDA3588406233A90224D9089710B102AA98B979B9B3; `) } diff --git a/platformapi/jdshopapi/order.go b/platformapi/jdshopapi/order.go index 2db41987..3eedd452 100644 --- a/platformapi/jdshopapi/order.go +++ b/platformapi/jdshopapi/order.go @@ -1,17 +1,15 @@ package jdshopapi -import "encoding/json" - //查询单个订单 //https://open.jd.com/home/home#/doc/api?apiCateId=55&apiId=2389&apiName=jingdong.pop.order.enGet func (a *API) EnGet(orderID int64) (err error) { - dataMap := map[string]interface{}{ - "order_id": orderID, - "optional_fields": "orderType,payType", - } - data, _ := json.Marshal(dataMap) - _, err = a.AccessAPI("jingdong.pop.order.enGet", prodURL, map[string]interface{}{ - "360buy_param_json": string(data), + // dataMap := map[string]interface{}{ + // "order_id": orderID, + // "optional_fields": "orderType,payType", + // } + // data, _ := json.Marshal(dataMap) + _, err = a.AccessAPI("jingdong.pop.order.shipment", prodURL, map[string]interface{}{ + "orderId": orderID, }) return err } diff --git a/platformapi/jdshopapi/sku.go b/platformapi/jdshopapi/sku.go index cc996186..8b2a7abe 100644 --- a/platformapi/jdshopapi/sku.go +++ b/platformapi/jdshopapi/sku.go @@ -150,6 +150,7 @@ type UpdateWareParam struct { MobileDesc string `json:"mobileDesc"` // 是 无 移动版的商品介绍 长度限制10W个字符 Introduction string `json:"introduction"` // 是 无 PC版的商品介绍 长度限制10W个字符 Features []*CreateSkuParamFeatures `json:"features"` // 否 无 商品维度的特殊属性 目前两个特殊属性 IBS、FBP、FCS、SCF 4种商家类型【规格型号】 model和【销售单位】 unit 字段且为必填(如 个、盒、袋等)请勿填写公司名称。 + // ExtendFeatures []*CreateSkuParamFeatures `json:"extendFeatures"` // 否 无 商品维度的特殊属性 目前两个特殊属性 IBS、FBP、FCS、SCF 4种商家类型【规格型号】 model和【销售单位】 unit 字段且为必填(如 个、盒、袋等)请勿填写公司名称。 } type QueryPictureReuslt struct { diff --git a/platformapi/jdshopapi/sku_test.go b/platformapi/jdshopapi/sku_test.go index 1220d3b3..3a228425 100644 --- a/platformapi/jdshopapi/sku_test.go +++ b/platformapi/jdshopapi/sku_test.go @@ -273,9 +273,14 @@ func TestUpOrDown(t *testing.T) { func TestUpdateWare(t *testing.T) { err := api.UpdateWare(&UpdateWareParam{ - WareID: 14521014949, - Title: "大青菜1", - VenderID: 10374877, + WareID: 14545996691, + Title: "进口凤梨", + Features: []*CreateSkuParamFeatures{ + &CreateSkuParamFeatures{ + Key: "fdms", + Value: "1", + }, + }, }) if err != nil { t.Fatal(err) diff --git a/platformapi/jdshopapi/store_page.go b/platformapi/jdshopapi/store_page.go index 3b770aee..7b15c03f 100644 --- a/platformapi/jdshopapi/store_page.go +++ b/platformapi/jdshopapi/store_page.go @@ -4,6 +4,7 @@ import ( "encoding/json" "fmt" "net/http" + "regexp" "strings" "git.rosy.net.cn/baseapi" @@ -11,6 +12,11 @@ import ( "git.rosy.net.cn/baseapi/utils" ) +var ( + regexpOrderDetailTable = regexp.MustCompile(`([\s\S]*?)
`) + regexpOrderDetailTd = regexp.MustCompile(`(.*?)`) +) + func (a *API) AccessStorePage(fullURL string, bizParams map[string]interface{}, isPost bool) (retVal map[string]interface{}, err error) { if a.GetCookieCount() == 0 { return nil, fmt.Errorf("需要设置Store Cookie才能使用此方法") @@ -65,6 +71,9 @@ func (a *API) AccessStorePage2(fullURL string, bizParams map[string]interface{}) if jsonResult1 == nil { return platformapi.ErrLevelRecoverableErr, fmt.Errorf("mapData is nil") } + if strings.Contains(bodyStr, "登录") { + return platformapi.ErrLevelRecoverableErr, fmt.Errorf("cookie可能过期了!") + } if err == nil { if jsonResult1["error_response"] != nil { errLevel = platformapi.ErrLevelGeneralFail @@ -90,12 +99,15 @@ type CreateShopCategoryParam struct { //京东商城创建或修改店内分类 //https://seller.shop.jd.com/vendershop/vendershop_shopCategory.action# -func (a *API) CreateShopCategory(createShopCategoryParam []*CreateShopCategoryParam) (err error) { - result, _ := json.MarshalIndent(createShopCategoryParam, "", "") - _, err = a.AccessStorePage("https://seller.shop.jd.com/vendershop/vendershop_doShopCategory.action", map[string]interface{}{ - "categoryJson": string(result), +func (a *API) CreateShopCategory(createShopCategoryParam []*CreateShopCategoryParam) (status int64, err error) { + data, _ := json.MarshalIndent(createShopCategoryParam, "", "") + result, err := a.AccessStorePage("https://seller.shop.jd.com/vendershop/vendershop_doShopCategory.action", map[string]interface{}{ + "categoryJson": string(data), }, true) - return err + if err == nil { + status = utils.Interface2Int64WithDefault(result["fakeData"], -1) + } + return status, err } //京东商城设置门店营业状态 @@ -350,13 +362,37 @@ type AllOrdersResult struct { //https://porder.shop.jd.com/order/orderlist/allOrders func (a *API) AllOrders(allOrdersParam *AllOrdersParam) (allOrdersResult *AllOrdersResult, err error) { result, err := a.AccessStorePage2("https://porder.shop.jd.com/order/orderlist", map[string]interface{}{ - "current": allOrdersParam.Current, - "pageSize": allOrdersParam.PageSize, - "selectedTabName": "allOrders", - "sortName": "desc", + "current": allOrdersParam.Current, + "pageSize": allOrdersParam.PageSize, + "selectedTabName": "allOrders", + "sortName": "desc", + "orderCreateDateRange": allOrdersParam.OrderCreateDateRange, + // "storeId": allOrdersParam.StoreID, + "orderStatusArray": allOrdersParam.OrderStatusArray, }) if err == nil { utils.Map2StructByJson(result, &allOrdersResult, false) } return allOrdersResult, err } + +//订单详情 +//https://neworder.shop.jd.com/order/orderDetail?orderId=122367441996 +func (a *API) OrderDetail(orderId string) (consigneeName, consigneeAddress string, err error) { + result, err := a.AccessStorePage("https://neworder.shop.jd.com/order/orderDetail", map[string]interface{}{ + "orderId": orderId, + }, false) + if err == nil { + body := result["fakeData"].(string) + consigneeTable := regexpOrderDetailTable.FindStringSubmatch(body) + fmt.Println("test1", consigneeTable) + if len(consigneeTable) > 0 { + consigneeTd := regexpOrderDetailTd.FindAllStringSubmatch(consigneeTable[1], -1) + if len(consigneeTd) > 0 { + consigneeName = consigneeTd[0][1] + consigneeAddress = consigneeTd[1][1] + } + } + } + return consigneeName, consigneeAddress, err +} diff --git a/platformapi/jdshopapi/store_page_test.go b/platformapi/jdshopapi/store_page_test.go index b0c1c855..dc007e06 100644 --- a/platformapi/jdshopapi/store_page_test.go +++ b/platformapi/jdshopapi/store_page_test.go @@ -21,7 +21,8 @@ func TestCreateShopCategory(t *testing.T) { Type: "3", }, } - api.CreateShopCategory(CreateShopCategoryParams) + result, _ := api.CreateShopCategory(CreateShopCategoryParams) + fmt.Println(result) } func TestUpdateStoreStatus(t *testing.T) { @@ -40,10 +41,10 @@ func TestNewInfoList(t *testing.T) { } func Test11(t *testing.T) { - request, _ := http.NewRequest(http.MethodGet, "https://stores.shop.jd.com/stores/updateStoreStatus?storeId=24332466&storeStatus=1", nil) + request, _ := http.NewRequest(http.MethodGet, "https://stores.shop.jd.com/stores/updateStoreStatus?storeId=24339301&storeStatus=1", nil) c := &http.Cookie{ Name: "thor", - Value: "80FAF09E9A09B6E618A68057BDFCFCB8C86E8252DC9F7D3B34572625904FBA0AB6BF053A5325612EC0407791BB05F5301356E71E8B282C40C06D0B5DF3439DEECB102A78FAFF7AC0FC4E2D1FA8DD8BBAE1A011E50B5C74F1870AD982D7BF453F470F31F2241B73AC4C25485025C2ABEBC8A538AF7257824D2FAEE300A1435175B0B451FB5C19B78D729FC83152CA3BAF", + Value: "80FAF09E9A09B6E618A68057BDFCFCB88A0E4CE7743FBEC84F10D992F9C6A4119DF98DA3CAAE9C7F17BEB62884625B4E7BC82422A90F45F02EA293572D951B055EF0B5F603AEA568DFD4234138F841EC1AC1F67B30B48AAC9EAD5FBAE7943E1DCC99E99D8358C82F7832B71A2BCB31624E16BBF561720443DE966BDA3588406233A90224D9089710B102AA98B979B9B3", } request.AddCookie(c) client := &http.Client{} @@ -58,9 +59,18 @@ func TestAllOrders(t *testing.T) { result, err := api.AllOrders(&AllOrdersParam{ Current: 1, PageSize: 10, + StoreID: "24339648", }) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } + +func TestOrderDetail(t *testing.T) { + result1, result2, err := api.OrderDetail("122367441996") + if err != nil { + t.Fatal(err) + } + fmt.Println("test1", result1, result2) +} diff --git a/platformapi/jdshopapi/store_test.go b/platformapi/jdshopapi/store_test.go index 9e8649a4..5e6ddb43 100644 --- a/platformapi/jdshopapi/store_test.go +++ b/platformapi/jdshopapi/store_test.go @@ -63,7 +63,7 @@ func TestGetCounty(t *testing.T) { } func TestFindSkuSiteStock(t *testing.T) { - result, err := api.FindSkuSiteStock(24340329, 69353633443) + result, err := api.FindSkuSiteStock(24339305, 69353498265) if err != nil { t.Fatal(err) }