diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 3e861e5a9..2358c0f24 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -994,14 +994,12 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf } } - if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil { - savedOrderInfo.retryCount++ - } else { - partner.CurOrderManager.OnOrderMsg(order, utils.Int2Str(vendorID), fmt.Sprintf("发起自动创建三方运单,目标创建运单平台[%s],创建失败:%v", jxutils.GetVendorName(vendorID), err)) - //content := "您的门店 [" + storeDetail.Name + "],OrderID:[" + order.VendorOrderID + "],自动呼叫骑手失败[" + fmt.Sprintf(err.Error()) + "],请手动呼叫骑手" - //if user, err := dao.GetUserByID(dao.GetDB(), "mobile", storeDetail.MarketManPhone); err == nil { - // ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user.UserID, "平台门店状态变化", content) - //} + if vendorID != model.NO { + if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil { + savedOrderInfo.retryCount++ + } else { + partner.CurOrderManager.OnOrderMsg(order, utils.Int2Str(vendorID), fmt.Sprintf("发起自动创建三方运单,目标创建运单平台[%s],创建失败:%v", jxutils.GetVendorName(vendorID), err)) + } } } } else { diff --git a/business/partner/purchase/ebai/order.go b/business/partner/purchase/ebai/order.go index 1559c2455..54491e862 100644 --- a/business/partner/purchase/ebai/order.go +++ b/business/partner/purchase/ebai/order.go @@ -1,7 +1,6 @@ package ebai import ( - "encoding/json" "errors" "fmt" "math" @@ -679,26 +678,30 @@ func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *mod return fmt.Errorf("拒绝退单时,请填写拒单原因") } param := &ebaiapi.RefundOrderExamine{ - ReverseOrderId: afsOrderInfo.AfsOrderID, - OrderId: order.VendorOrderID, - IdempotentId: utils.Int64ToStr(time.Now().UnixNano()), - ActionType: ebaiapi.RefundTypeRefuse, - ReasonCode: "7001", - ReasonRemarks: reason, - RefundProductList: "", + ReverseOrderId: afsOrderInfo.AfsOrderID, + OrderId: order.VendorOrderID, + IdempotentId: utils.Int64ToStr(time.Now().UnixNano()), + ActionType: ebaiapi.RefundTypeRefuse, + ReasonCode: "7001", + ReasonRemarks: reason, } refundProductList := make([]*ebaiapi.RefundProductList, 0, 0) date, _ := api.EbaiAPI.GetReverseOrder(order.VendorOrderID) for _, v := range date { + v2 := v.(map[string]interface{}) refundProduct := &ebaiapi.RefundProductList{ - SubBizOrderId: v.(map[string]interface{})["sub_biz_order_id"].(string), - PlatformSkuId: utils.Int64ToStr(utils.Interface2Int64WithDefault(v.(map[string]interface{})["platform_sku_id"], 0)), + SubBizOrderId: v2["sub_biz_order_id"].(string), + PlatformSkuId: utils.Int64ToStr(utils.Interface2Int64WithDefault(v2["platform_sku_id"], 0)), + } + switch utils.MustInterface2Int64(v2["fund_calculate_type"]) { + case 0: + refundProduct.Number = utils.Int64ToStr(utils.MustInterface2Int64(v2["refund_quantity"])) + case 1: + refundProduct.RefundAmount = utils.Int64ToStr(utils.MustInterface2Int64(v2["refund_user_amount"])) } - refundProductList = append(refundProductList, refundProduct) } - refundProductListStr, _ := json.Marshal(refundProductList) - param.RefundProductList = string(refundProductListStr) + param.RefundProductList = refundProductList err = api.EbaiAPI.OrderDisagreeRefund(param) } } diff --git a/business/partner/purchase/ebai/order_afs.go b/business/partner/purchase/ebai/order_afs.go index c5a91019c..197dd1d07 100644 --- a/business/partner/purchase/ebai/order_afs.go +++ b/business/partner/purchase/ebai/order_afs.go @@ -1,7 +1,6 @@ package ebai import ( - "encoding/json" "errors" "fmt" "strings" @@ -231,39 +230,42 @@ func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *mod return fmt.Errorf("拒绝退单时请填写原因") } param := &ebaiapi.RefundOrderExamine{ - ReverseOrderId: order.AfsOrderID, - OrderId: order.VendorOrderID, - IdempotentId: utils.Int64ToStr(time.Now().UnixNano()), - ActionType: ebaiapi.RefundTypeRefuseGoods, - ReasonCode: "7001", - ReasonRemarks: reason, - RefundProductList: "", + ReverseOrderId: order.AfsOrderID, + OrderId: order.VendorOrderID, + IdempotentId: utils.Int64ToStr(time.Now().UnixNano()), + ActionType: ebaiapi.RefundTypeRefuseGoods, + ReasonCode: "7001", + ReasonRemarks: reason, } refundProductList := make([]*ebaiapi.RefundProductList, 0, 0) date, _ := api.EbaiAPI.GetReverseOrder(order.VendorOrderID) for _, v := range date { + v2 := v.(map[string]interface{}) refundProduct := &ebaiapi.RefundProductList{ - SubBizOrderId: v.(map[string]interface{})["sub_biz_order_id"].(string), - PlatformSkuId: utils.Int64ToStr(utils.Interface2Int64WithDefault(v.(map[string]interface{})["platform_sku_id"], 0)), + SubBizOrderId: v2["sub_biz_order_id"].(string), + PlatformSkuId: utils.Int64ToStr(utils.Interface2Int64WithDefault(v2["platform_sku_id"], 0)), + } + switch utils.MustInterface2Int64(v2["fund_calculate_type"]) { + case 0: + refundProduct.Number = utils.Int64ToStr(utils.MustInterface2Int64(v2["refund_quantity"])) + case 1: + refundProduct.RefundAmount = utils.Int64ToStr(utils.MustInterface2Int64(v2["refund_user_amount"])) } - refundProductList = append(refundProductList, refundProduct) } - refundProductListStr, _ := json.Marshal(refundProductList) - param.RefundProductList = string(refundProductListStr) + param.RefundProductList = refundProductList err = api.EbaiAPI.OrderDisagreeReturnGoods(param) } else if approveType == partner.AfsApproveTypeRefusedToRefundMoney { return errors.New("此平台暂时不支持") } else { param := &ebaiapi.RefundOrderExamine{ - ReverseOrderId: order.AfsOrderID, - OrderId: order.VendorOrderID, - IdempotentId: utils.Int64ToStr(time.Now().UnixNano()), - ActionType: ebaiapi.RefundTypeAgreeGoods, - ReasonCode: "", - ReasonRemarks: reason, - RefundProductList: "", + ReverseOrderId: order.AfsOrderID, + OrderId: order.VendorOrderID, + IdempotentId: utils.Int64ToStr(time.Now().UnixNano()), + ActionType: ebaiapi.RefundTypeAgreeGoods, + ReasonCode: "", + ReasonRemarks: reason, } err = api.EbaiAPI.OrderAgreeReturnGoods(param) } @@ -297,14 +299,30 @@ func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.G //售后部分多次退款 if order.Status > model.OrderStatusEndBegin { param := &ebaiapi.RefundOrderExamine{ - ReverseOrderId: afsOrderInfo.AfsOrderID, - OrderId: afsOrderInfo.VendorOrderID, - IdempotentId: utils.Int64ToStr(time.Now().UnixNano()), - ActionType: ebaiapi.RefundTypeAgree, - ReasonCode: "", - ReasonRemarks: reason, - RefundProductList: "", + ReverseOrderId: afsOrderInfo.AfsOrderID, + OrderId: afsOrderInfo.VendorOrderID, + IdempotentId: utils.Int64ToStr(time.Now().UnixNano()), + ActionType: ebaiapi.RefundTypeAgree, + ReasonCode: "", + ReasonRemarks: reason, } + date, _ := api.EbaiAPI.GetReverseOrder(order.VendorOrderID) + refundProductList := make([]*ebaiapi.RefundProductList, 0, 0) + for _, v := range date { + v2 := v.(map[string]interface{}) + refundProduct := &ebaiapi.RefundProductList{ + SubBizOrderId: v2["sub_biz_order_id"].(string), + PlatformSkuId: utils.Int64ToStr(utils.Interface2Int64WithDefault(v2["platform_sku_id"], 0)), + } + switch utils.MustInterface2Int64(v2["fund_calculate_type"]) { + case 0: + refundProduct.Number = utils.Int64ToStr(utils.MustInterface2Int64(v2["refund_quantity"])) + case 1: + refundProduct.RefundAmount = utils.Int64ToStr(utils.MustInterface2Int64(v2["refund_user_amount"])) + } + refundProductList = append(refundProductList, refundProduct) + } + param.RefundProductList = refundProductList err = api.EbaiAPI.OrderAgreePartRefund(param) } else { if reason == "" { diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index 265e358f3..546392265 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -180,6 +180,7 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve order.BusinessType = model.BusinessTypeImmediate order.ExpectedDeliveredTime = getTimeFromTimestamp(earliestTime + 30*60) // 预计最晚送达时间 } + order.PickDeadline = order.ExpectedDeliveredTime.Add(-1 * time.Hour) // 用户信息 order.ConsigneeName = *orderDetail.ReceiveInfo.ReceiverName