From 42071c776cd0809ad35456be646b1abc21971d4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 11 Mar 2024 10:09:32 +0800 Subject: [PATCH] 1 --- platformapi/ebaiapi/order.go | 80 ++++++++++++------------------ platformapi/ebaiapi/order_model.go | 37 ++++++++++++-- platformapi/ebaiapi/order_test.go | 37 ++++++++------ 3 files changed, 88 insertions(+), 66 deletions(-) diff --git a/platformapi/ebaiapi/order.go b/platformapi/ebaiapi/order.go index f9ffb83b..090d1ce6 100644 --- a/platformapi/ebaiapi/order.go +++ b/platformapi/ebaiapi/order.go @@ -2,6 +2,7 @@ package ebaiapi import ( "fmt" + "git.rosy.net.cn/jx-callback/globals" "time" "git.rosy.net.cn/baseapi/utils" @@ -133,42 +134,6 @@ func (a *API) OrderCancelDelivery(orderID string) (err error) { return err } -//饿了么自配送订单接入骑手状态 -func (a *API) OrderselfDeliveryStateSync(orderID, phone string) (err error) { - _, err = a.AccessAPI("order.selfDeliveryStateSync", map[string]interface{}{ - "order_id": orderID, - "phone": phone, - "distributor_id": 201, - "state": 21, - }) - return err -} - -// OrderselfDeliveryStateSync2 饿了么自配送订单接入骑手状态 -func (a *API) OrderselfDeliveryStateSync2(info *PushRiderInfo) (err error) { - _, err = a.AccessAPI("order.selfDeliveryStateSync", utils.Struct2MapByJson(info)) - return err -} - -// 饿了么自配送订单回传订单已送出状态 -// 此接口目前只支持饿了么侧订单调用 -func (a *API) OrderSendOut(orderID, phone string) (err error) { - _, err = a.AccessAPI("order.sendout", map[string]interface{}{ - "order_id": orderID, - "phone": phone, - }) - return err -} - -// 饿了么自配送订单回传订单送达状态,调用成功后订单状态变为已完成。需先调用订单送出接口,且接单5分钟后可调用 -func (a *API) OrderComplete(orderID, phone string) (err error) { - _, err = a.AccessAPI("order.complete", map[string]interface{}{ - "order_id": orderID, - // "phone": phone, - }) - return err -} - // 提供给合作方在配送异常或物流拒单后选择自行配送 func (a *API) OrderSwitchselfdelivery(orderID string) (err error) { _, err = a.AccessAPI("order.switchselfdelivery", map[string]interface{}{ @@ -307,17 +272,6 @@ func (a *API) OrderListAll(shopID string, baiduShopID int64, startTime, endTime return listOrder, nil } -// 查看部分退款订单详情(平台已经不再维护这个接口改用下面接口) -func (a *API) OrderPartRefundGet(orderID string) (orderMap map[string]interface{}, err error) { - result, err := a.AccessAPI("order.partrefund.get", map[string]interface{}{ - "order_id": orderID, - }) - if err == nil { - return result.Data.(map[string]interface{}), nil - } - return nil, err -} - func (a *API) SmartOrderIdConvert(orderID string) (convertedOrderID string, err error) { return a.OrderIdConvert(orderID, isOrderIDEleme(orderID)) } @@ -406,6 +360,17 @@ func (a *API) EbaiRefundOrder(param *RefundOrderExamine) error { return err } +// 查看部分退款订单详情(平台已经不再维护这个接口改用下面接口) +func (a *API) OrderPartRefundGet(orderID string) (orderMap map[string]interface{}, err error) { + result, err := a.AccessAPI("order.reverse.query", map[string]interface{}{ + "order_id": orderID, + }) + if err == nil { + return result.Data.(map[string]interface{}), nil + } + return nil, err +} + // GetReverseOrder 根据订单号获取详细订单详情 func (a *API) GetReverseOrder(orderId string) ([]interface{}, bool, error) { refundOrder, err := a.AccessAPI("order.reverse.query", map[string]interface{}{ @@ -449,5 +414,26 @@ func (a *API) OrderCancel(orderID, cancelType, cancelReason string) (err error) // OrderReverseApply 商户发起全退和部分退款(整合OrderPartRefund/OrderCancel) func (a *API) OrderReverseApply(param *OrderReverseApplyParam) error { _, err := a.AccessAPI("order.reverse.apply", utils.Struct2MapByJson(param)) + if err != nil { + globals.SugarLogger.Debugf("OrderReverseApply err : %s --- %v", utils.Format4Output(param, false), err) + } + return err +} + +// OrderselfDeliveryStateSync2 饿了么自配送订单接入骑手状态 +func (a *API) OrderselfDeliveryStateSync2(info *PushRiderInfo) (err error) { + _, err = a.AccessAPI("order.selfDeliveryStateSync", utils.Struct2MapByJson(info)) + if err != nil { + globals.SugarLogger.Debugf("OrderReverseApply err : %s --- %v", utils.Format4Output(info, false), err) + } + return err +} + +// SelfDeliveryLocationSync 自配送定时更新骑手坐标信息 +func (a *API) SelfDeliveryLocationSync(param *OrderSelfDeliveryLocationSync) (err error) { + _, err = a.AccessAPI("order.selfDeliveryLocationSync", utils.Struct2MapByJson(param)) + if err != nil { + globals.SugarLogger.Debugf("OrderReverseApply err : %s --- %v", utils.Format4Output(param, false), err) + } return err } diff --git a/platformapi/ebaiapi/order_model.go b/platformapi/ebaiapi/order_model.go index b598b4c4..a2a85f80 100644 --- a/platformapi/ebaiapi/order_model.go +++ b/platformapi/ebaiapi/order_model.go @@ -7,6 +7,23 @@ const ( MerchantOrderReverseApplyPartCancel = "2" // 商户发起部分退款 ) +const ( + OrderCommodityType = 4 // 商品子单类型 1:称重品、2:标品、3:按件称重、4:虚拟商品子单 + OrderVirtualType = 0 // 商品类型为虚拟商品是有效;0:普通实物商品 1:包装费子单 2:处方服务费子单、3:附加0.01费子单、4:配送费子单 +) + +const ( + OrderDeliveryStatusCreate = 1 // 生成运单 + OrderDeliveryStatusWaitRider = 2 // 配送待分配 + OrderDeliveryStatusReceived = 3 // 骑士接单 + OrderDeliveryStatusToStore = 8 // 骑手到店 + OrderDeliveryStatusSend = 20 // 骑手送出 + OrderDeliveryStatusSendOver = 30 // 配送完成 + OrderDeliveryStatusCancel = 6 // 配送取消 + OrderDeliveryStatusAbnormal = 7 // 配送异常 + OrderDeliveryStatusRefusal = 110 // 配送拒单 +) + type ExpressInfo struct { OrderID string `json:"order_id"` ExpressID string `json:"express_id"` @@ -228,9 +245,9 @@ type ListOrderInfo struct { type PushRiderInfo struct { DistributorId int `json:"distributor_id"` // 固定值:201 Knight Knight `json:"knight"` - OrderId string // 订单id - State int // 配送状态,传固定值:21 开始配送(已废弃,已接入商家不影响) - SelfStatus int `json:"selfStatus"` // 配送状态 + OrderId string `json:"order_id"` // 订单id + State int `json:"state"` // 配送状态,传固定值:21 开始配送(已废弃,已接入商家不影响) + SelfStatus int `json:"selfStatus"` // 配送状态 1:生成运单 2:配送待分配3:骑士接单(必传)8:骑士到店(必传)20:骑手送出(必传)30:配送完成(必传)6:配送取消(必传)7:配送异常(必传)101:配送拒单 SelfStatusDesc string `json:"selfStatusDesc"` // 配送状态文案描述 SelfSubStatus int `json:"selfSubStatus"` // 配送取消(6)子原因: SelfSubStatusDesc string `json:"selfSubStatusDesc"` // 配送异常子状态文案描述 @@ -285,3 +302,17 @@ type RefundProductListParam struct { RefundAmount string `json:"refund_amount"` // 申请退款金额(单位 分,整型) FundCalculateType string `json:"fund_calculate_type"` // 非必填,部分退类型:0按件数退,1按照金额退, 默认为按件数退(0); 按件退 number字段必传, 按金额退 refund_amount字段必传 } + +// OrderSelfDeliveryLocationSync 自配送订单骑手位置回传 +type OrderSelfDeliveryLocationSync struct { + OrderId string `json:"order_id"` // 订单号 + Location *RiderLocation `json:"location"` +} + +// RiderLocation 骑手坐标 +type RiderLocation struct { + UTC string `json:"utc"` // 当前时间,格式:10位时间戳 + Altitude string `json:"altitude"` // 海拔高度,如无,可传入固定值 + Latitude string `json:"latitude"` // 纬度,建议使用高德坐标 39.90038 + Longitude string `json:"longitude"` // 经度,建议使用高德坐标 116.389149 +} diff --git a/platformapi/ebaiapi/order_test.go b/platformapi/ebaiapi/order_test.go index b2a072f1..ac0a5a1b 100644 --- a/platformapi/ebaiapi/order_test.go +++ b/platformapi/ebaiapi/order_test.go @@ -114,11 +114,30 @@ func TestOrderListAll(t *testing.T) { } func TestOrderPartRefundGet(t *testing.T) { - result, err := api.OrderPartRefundGet("4033790060039747082") + result, err := api.OrderPartRefundGet("4083800066973664800") if err != nil { t.Fatal(err) } else { - t.Log(utils.Format4Output(result, false)) + fmt.Println(utils.Interface2String(result["order_id"])) + fmt.Println(utils.MustInterface2Int64(result["remain_user_total_amount"])) + fmt.Println(utils.MustInterface2Int64(result["merchant_income"])) + if result["reverse_order_list"] != nil { + refundDetail := result["reverse_order_list"].([]interface{}) + refundSkuList := refundDetail[len(refundDetail)-1].(map[string]interface{})["sub_reverse_order_list"].([]interface{}) + for _, refundInfo := range refundSkuList { + xMap := refundInfo.(map[string]interface{}) + if utils.Interface2String(xMap["sku_name"]) != "包装费" { // 暂时跳出包装费 + globals.SugarLogger.Debugf("========map := %s", utils.Format4Output(xMap, false)) + fmt.Println(utils.Int64ToStr(utils.MustInterface2Int64(xMap["platform_sku_id"]))) + fmt.Println(int(utils.Str2Int64WithDefault(utils.Interface2String(xMap["custom_sku_id"]), 0))) + fmt.Println(utils.Interface2String(xMap["sku_name"])) + fmt.Println(utils.MustInterface2Int64(xMap["refund_user_amount"])) + + aa := utils.Interface2Int64WithDefault(xMap["discount_detail"].(map[string]interface{})["platform_discount_amount"], 0) + utils.Interface2Int64WithDefault(xMap["discount_detail"].(map[string]interface{})["agent_discount_amount"], 0) + utils.Interface2Int64WithDefault(xMap["discount_detail"].(map[string]interface{})["user_discount_amount"], 0) + fmt.Println(aa) + } + } + } } } @@ -159,13 +178,6 @@ func TestOrderSwitchselfdelivery(t *testing.T) { } } -func TestOrderComplete(t *testing.T) { - err := api.OrderComplete("4016410136237474551", "") - if err != nil { - t.Fatal(err) - } -} - func TestOrderPrivateInfo(t *testing.T) { _, err := api.OrderPrivateInfo("1542178206811884") if err != nil { @@ -216,13 +228,6 @@ func TestOrderQueryAcceptancecode(t *testing.T) { } } -func TestAPI_OrderselfDeliveryStateSync(t *testing.T) { - err := api.OrderselfDeliveryStateSync("4457139638483820157", "199999999999") - if err != nil { - t.Fatal(err) - } -} - func TestForAA(t *testing.T) { var a = []int64{6044969,