From eab0f4e33b74d439c948a75077f1788fbf3a5a8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 22 Jan 2024 10:26:24 +0800 Subject: [PATCH] 1 --- business/jxcallback/scheduler/defsch/defsch.go | 16 ++++++++++++---- business/partner/delivery/mtps/waybill.go | 13 +------------ business/partner/partner.go | 1 + controllers/taobao_vegetable.go | 3 +++ 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 12cd02527..3477ec3ae 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -950,7 +950,7 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf if err == nil && err2 == nil { // 1.检查门店三方配送配置,达达>蜂鸟>美团>顺丰>uu // excludeVendorIDs 包括上面已经发送的平台id - storeCourierList, err := dao.GetStoreCourierList2(dao.GetDB(), []int{jxutils.GetSaleStoreIDFromOrder(order)}, nil, model.StoreStatusOpened, []int{model.StoreAuditStatusOnline, model.StoreAuditStatusUpdated}) + storeCourierList, _ := dao.GetStoreCourierList2(dao.GetDB(), []int{jxutils.GetSaleStoreIDFromOrder(order)}, nil, model.StoreStatusOpened, []int{model.StoreAuditStatusOnline, model.StoreAuditStatusUpdated}) excludeVendorIDsMap := make(map[int]int, 0) // 被排除的配送 for _, v := range excludeVendorIDs { excludeVendorIDsMap[v] = model.YES @@ -989,9 +989,17 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf } if vendorID != model.NO { - if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil { - savedOrderInfo.retryCount++ - partner.CurOrderManager.OnOrderMsg(order, utils.Int2Str(vendorID), fmt.Sprintf("订单自动创建三方运单成功:%s", jxutils.GetVendorName(vendorID))) + if bills, err := s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil { + for _, v := range bills { + if v.DesiredFee >= model.AlarmFee { + s.CancelWaybill(v, 0, partner.CancelWaybillReasonStrDeliveryFeeUp) + partner.CurOrderManager.OnOrderMsg(order, utils.Int2Str(vendorID), fmt.Sprintf("发起自动创建三方运单,目标创建运单平台[%s],创建失败:%s", jxutils.GetVendorName(vendorID), partner.CancelWaybillReasonStrDeliveryFeeUp)) + } else { + savedOrderInfo.retryCount++ + partner.CurOrderManager.OnOrderMsg(order, utils.Int2Str(vendorID), fmt.Sprintf("订单自动创建三方运单成功:%s", jxutils.GetVendorName(vendorID))) + + } + } } else { partner.CurOrderManager.OnOrderMsg(order, utils.Int2Str(vendorID), fmt.Sprintf("发起自动创建三方运单,目标创建运单平台[%s],创建失败:%v", jxutils.GetVendorName(vendorID), err)) } diff --git a/business/partner/delivery/mtps/waybill.go b/business/partner/delivery/mtps/waybill.go index 6c1286b2c..1a3834ba2 100644 --- a/business/partner/delivery/mtps/waybill.go +++ b/business/partner/delivery/mtps/waybill.go @@ -316,11 +316,10 @@ func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInf deliveryFeeInfo.RefDeliveryFee, deliveryFeeInfo.RefAddFee, err = api.MtpsAPI.PreCreateByShop(param) deliveryFeeInfo.DeliveryFee = deliveryFeeInfo.RefDeliveryFee - globals.SugarLogger.Debugf("=============deliveryFeeInfo := %s", utils.Format4Output(deliveryFeeInfo, false)) return deliveryFeeInfo, err } -// CreateWaybill(美团配送) +// CreateWaybill (美团配送) func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) { db := dao.GetDB() // 检查配送平台是否被禁用 @@ -332,16 +331,6 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee return nil, fmt.Errorf("此平台配送已被系统关闭,暂不发配送 [%v]", vendorOrgCode[0].Comment) } - if maxDeliveryFee == model.NO { - fee, err := c.GetWaybillFee(order) - if err != nil { - return nil, err - } - if fee.DeliveryFee >= model.DefMaxDeliveryFee { - return nil, fmt.Errorf("美团配送超最高限价, 所需运费:%s, 最高限价:%s", jxutils.IntPrice2StandardCurrencyString(fee.DeliveryFee), jxutils.IntPrice2StandardCurrencyString(model.DefMaxDeliveryFee)) - } - } - // 忽略坐标转换错误,即使是转换出错,也只能当成转换成功来处理,底层会有错误日志输出 lngFloat, latFloat, _ := jxutils.IntCoordinate2MarsStandard(order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType) billParams := &mtpsapi.CreateOrderByShopParam{ diff --git a/business/partner/partner.go b/business/partner/partner.go index 47efb81a7..e08ec3c21 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -75,6 +75,7 @@ var ( CancelWaybillReasonStrActive = "操作由人员主动发起" CancelWaybillReasonNotInStoreOpenTime = "不在门店的营业时间范围内" CancelWaybillReasonStrDYPSCancel = "抖音门店转自送,取消自动运力" + CancelWaybillReasonStrDeliveryFeeUp = "配送距离太远,配送费超过15元" ) var ( diff --git a/controllers/taobao_vegetable.go b/controllers/taobao_vegetable.go index bdc5cf331..644b3be87 100644 --- a/controllers/taobao_vegetable.go +++ b/controllers/taobao_vegetable.go @@ -10,6 +10,7 @@ import ( "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" taoVegetable "git.rosy.net.cn/jx-callback/business/partner/purchase/tao_vegetable" + "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" "github.com/astaxie/beego/server/web" "io/ioutil" @@ -227,6 +228,8 @@ func (c *TaoBaoVegetableController) CancelOnSaleRefundOrder() { //callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusOnSaleCancel, utils.Int64ToStr(afsOrder.PartCancelRequest.BizOrderId), afsOrder) //c.Data["json"] = callbackResponse order, err := partner.CurOrderManager.LoadOrder(utils.Int64ToStr(afsOrder.PartCancelRequest.BizOrderId), model.VendorIDTaoVegetable) + globals.SugarLogger.Debugf("=========order:= %s", utils.Format4Output(order, false)) + globals.SugarLogger.Debugf("=========order:= %v", err) if err != nil || order.Status >= model.OrderStatusDelivering { c.Data["json"] = tao_vegetable.CallBackResultOnSaleCancel(fmt.Errorf("不支持售中取消")) c.ServeJSON()