This commit is contained in:
邹宗楠
2024-03-11 10:09:32 +08:00
parent ee869d01ca
commit 42071c776c
3 changed files with 88 additions and 66 deletions

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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,