diff --git a/platformapi/jdapi/jdapi_test.go b/platformapi/jdapi/jdapi_test.go index f6641d40..bd2ed51b 100644 --- a/platformapi/jdapi/jdapi_test.go +++ b/platformapi/jdapi/jdapi_test.go @@ -30,6 +30,7 @@ func init() { // const cookieValue = "YYJV3NHVBPHLD36FWP6F3EM5PTXJ2XZQS7U4HWRIDPP4IWGUKUIB4XG5N26CZRDLDF7PKOXBPD6BNTUAJLETLZOIWMCVFI3K6MYZIY4QBIXIMXYDJNUKFGJVQTN5356SAD6WPCIHWNQAG7DDMF7L7S3SHCT3RM3CQG7IJIPUQ3THS5UIUYWMKINM7ETUOQB7OBPOPZVCT3ZJY55243TDVXLO25PP4UYSPTTPMNQ7HPMWOJKJ3BJWGVHD243MXH7NZWW264TKN5UOCJBSSSOKD2QQII" const cookieValue = "YYJV3NHVBPHLD36FWP6F3EM5PTXJ2XZQS7U4HWRIDPP4IWGUKUIB4XG5N26CZRDLDF7PKOXBPD6BNTUAJLETLZOIWMCVFI3K6MYZIY4QBIXIMXYDJNUKFGJVQTN5356SAD6WPCIHWNQAG7DDMF7L7S3SHD6O37OTAHUCKU6ALXATYTGMHNFLM4XRLVSFUQAJR77M4URSZRKVO55243TDVXLO25PP4UYSPTTPMNRUFXDNP4WPE566Q6V4AH32F7HT" api.SetJdCookie(cookieValue) + api.SetCookie("user", "VCQUVHVJI4ELNGFZOYMCDYDUSHEJMPXZRZXSNBRB4MVBNENP72REAAZR3R4SGDJ5ZI4FLYLLN5EGBBMTFCWHZVESIWBNLKZPLHWD6UIBTPXOF5IXM6AVA3V6TUNZD5UJS43AROJ2IRPZWEN5AGZYBUEGD3MSKKBKBSRP3DSEQXLITYNBLFZCHXCA7L4KGOSJRMM7R5IQP7QGLGRQB27AOE4YMLRJ3UPTZADPWJOYB3UZ7UZHLBVZRREEX647O3WQUU4BYXUOFZPIPRR77W3PQV543E") } func TestTest(t *testing.T) { diff --git a/platformapi/jdapi/store_page.go b/platformapi/jdapi/store_page.go index fd058f7c..0118a8cf 100644 --- a/platformapi/jdapi/store_page.go +++ b/platformapi/jdapi/store_page.go @@ -424,6 +424,59 @@ func (a *API) AccessStorePage2(fullURL string, params map[string]interface{}, is return retVal, err } +func (a *API) AccessStorePage3(fullURL string, params map[string]interface{}, resultKey string) (retVal interface{}, err error) { + if a.GetCookieCount() == 0 { + return nil, fmt.Errorf("需要设置Store Cookie才能使用此方法") + } + err = platformapi.AccessPlatformAPIWithRetry(a.client, + func() *http.Request { + request, _ := http.NewRequest(http.MethodGet, utils.GenerateGetURL(fullURL, "", params), nil) + if err != nil { + return nil + } + a.FillRequestCookies(request) + return request + }, + a.config, + func(response *http.Response, bodyStr string, jsonResult1 map[string]interface{}) (errLevel string, err error) { + if jsonResult1 == nil { + return platformapi.ErrLevelRecoverableErr, fmt.Errorf("mapData is nil") + } + retVal = jsonResult1 + var errMsg string + code, ok := jsonResult1["resultCode"].(string) + if !ok { + if statusMap, ok := jsonResult1["status"].(map[string]interface{}); !ok { + if jsonResult1["operTag"] != nil { + return platformapi.ErrLevelSuccess, nil + } + return platformapi.ErrLevelGeneralFail, utils.NewErrorCode(utils.Format4Output(jsonResult1, true), "999") + } else { + code = utils.Int64ToStr(utils.ForceInterface2Int64(statusMap["errorCode"])) + errMsg = utils.Interface2String(statusMap["message"]) + } + } else { + errMsg = utils.Interface2String(jsonResult1["msg"]) + } + if code == "200" { + if resultKey != "" { + retVal = jsonResult1[resultKey] + } + return platformapi.ErrLevelSuccess, nil + } + newErr := utils.NewErrorCode(errMsg, code) + if _, ok := pageExceedLimitCodes[code]; ok { + return platformapi.ErrLevelExceedLimit, newErr + } else if _, ok := pageCanRetryCodes[code]; ok { + return platformapi.ErrLevelRecoverableErr, newErr + } else { + baseapi.SugarLogger.Debugf("jd AccessStorePage failed, jsonResult1:%s", utils.Format4Output(jsonResult1, true)) + return platformapi.ErrLevelCodeIsNotOK, newErr + } + }) + return retVal, err +} + func (a *API) AccessStorePage(fullURL string, params map[string]interface{}, isPost bool) (retVal map[string]interface{}, err error) { result, err := a.AccessStorePage2(fullURL, params, isPost, ResultKeyResult) if err == nil { @@ -942,3 +995,82 @@ func (a *API) UpdateClosetStatus(jdStoreID, closeStatus int) (err error) { _, err = a.AccessStorePage2("https://sta-store.jddj.com/store/updateClosetStatus", jdParams, true, "") return err } + +type GetJdShopOrdersResult struct { + SummaryDueAmount float64 `json:"summaryDueAmount"` + BillList struct { + Result []struct { + OrderTypeCode int `json:"orderTypeCode"` + PayChannelName string `json:"payChannelName"` + BaseCommissionInvoiceFee int `json:"baseCommissionInvoiceFee"` + TieredCommissionInvoiceFee int `json:"tieredCommissionInvoiceFee"` + OrderID int64 `json:"orderId"` + Subsidy float64 `json:"subsidy"` + SettleStatus string `json:"settleStatus"` + PaymentSubsidies float64 `json:"paymentSubsidies"` + DeliveryTypeStr string `json:"deliveryTypeStr"` + PackageBill float64 `json:"packageBill"` + StoreFreightSubsidy float64 `json:"storeFreightSubsidy"` + OfflineSettlementAmount float64 `json:"offlineSettlementAmount"` + EffectiveGMV int `json:"effectiveGMV"` + TieredCommissionFee int `json:"tieredCommissionFee"` + OrgCode int `json:"orgCode"` + AfsAmount int `json:"afsAmount"` + StationName string `json:"stationName"` + Commission float64 `json:"commission"` + ID int `json:"id"` + WithdrawID string `json:"withdrawId"` + BusinessFinishTime int64 `json:"businessFinishTime"` + StationID int `json:"stationId"` + SettleOrderIDStr string `json:"settleOrderIdStr"` + FreightBill int `json:"freightBill"` + GiftcardBill int `json:"giftcardBill"` + OrgName string `json:"orgName"` + OrderSourceName string `json:"orderSourceName"` + PickupServiceAmount float64 `json:"pickupServiceAmount"` + RelationID int `json:"relationId"` + GoodsBill float64 `json:"goodsBill"` + SettleOrderID int64 `json:"settleOrderId"` + MarketBill float64 `json:"marketBill"` + StoreFreightAmount float64 `json:"storeFreightAmount"` + BusinessStartTime int64 `json:"businessStartTime"` + OriginalAmount float64 `json:"originalAmount"` + DueAmount float64 `json:"dueAmount"` + BillOrderType int `json:"billOrderType"` + StoreSubsidy float64 `json:"storeSubsidy"` + AccountTime string `json:"accountTime"` + PickupAmount float64 `json:"pickupAmount"` + SettleFinishTime int `json:"settleFinishTime"` + BaseCommissionFee int `json:"baseCommissionFee"` + } `json:"result"` + Total int `json:"total"` + Pages int `json:"pages"` + StartRow int `json:"startRow"` + PageSize int `json:"pageSize"` + EndRow int `json:"endRow"` + PageNum int `json:"pageNum"` + } `json:"billList"` + SummaryGoodsBill float64 `json:"summaryGoodsBill"` + CurrentDueAmount float64 `json:"currentDueAmount"` + SummaryPositiveAmount float64 `json:"summaryPositiveAmount"` + CurrentGoodsBill float64 `json:"currentGoodsBill"` +} + +//获取京东商城订单结算价 +//https://dfsc.imdada.cn/settle/search/daoJiaBillList +func (a *API) GetJdShopOrders(orderStartTime, orderEndTime, orgCode, loginName string) (getJdShopOrdersResult *GetJdShopOrdersResult, err error) { + jdParams := map[string]interface{}{ + "orgCode": orgCode, + "orderStartTime": orderStartTime, + "orderEndTime": orderEndTime, + "pageNum": 1, + "pageSize": 100, + "loginName": loginName, + "jdFusion": true, + } + result, err := a.AccessStorePage3("https://dfsc.imdada.cn/settle/search/daoJiaBillList", jdParams, "") + if err == nil { + utils.Map2StructByJson(result.(map[string]interface{})["content"], &getJdShopOrdersResult, false) + } + return getJdShopOrdersResult, err +} diff --git a/platformapi/jdapi/store_page_test.go b/platformapi/jdapi/store_page_test.go index da6106ee..62d085c3 100644 --- a/platformapi/jdapi/store_page_test.go +++ b/platformapi/jdapi/store_page_test.go @@ -264,3 +264,11 @@ func TestUpdateClosetStatus(t *testing.T) { err := api.UpdateClosetStatus(801246, 1) fmt.Println("test1", err) } + +func TestGetJdShopOrders(t *testing.T) { + result, err := api.GetJdShopOrders("20200506", "20200508", "320406", "jd_jxcs1223") + if err != nil { + t.Fatal(err) + } + t.Log(utils.Format4Output(result, false)) +}