From 880d2aedc0313d065f09328a77a2ac024f8fd6cd Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 25 Dec 2019 15:32:58 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=85=8D=E9=80=81=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jxcallback/scheduler/defsch/defsch.go | 4 +- business/partner/delivery/dada/waybill.go | 92 ++++++++++++++----- business/partner/delivery/mtps/waybill.go | 20 ++-- business/partner/partner_order.go | 4 +- business/partner/purchase/jd/order.go | 8 +- business/partner/purchase/jx/order.go | 8 -- 6 files changed, 87 insertions(+), 49 deletions(-) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 7c861dca4..536425750 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -1195,11 +1195,11 @@ func (s *DefScheduler) watchOrderWaybills(savedOrderInfo *WatchOrderInfo) { var remark string tipFee := getWaybillTip(order) vendorStatus := fmt.Sprintf("设置小费:%s", jxutils.IntPrice2StandardCurrencyString(tipFee)) - if curTipFee, err := handler.GetWaybillTip(jxcontext.AdminCtx, order); err == nil { + if curTipFee, err := handler.GetWaybillTip(jxcontext.AdminCtx, order.VendorOrgCode, order.VendorOrderID, order.VendorOrderID, ""); err == nil { tipFee2Add := tipFee - curTipFee vendorStatus += fmt.Sprintf(", 本次添加:%s", jxutils.IntPrice2StandardCurrencyString(tipFee2Add)) if false { //tipFee2Add > 0 { - err := handler.AddWaybillTip(jxcontext.AdminCtx, order, tipFee2Add) + err := handler.AddWaybillTip(jxcontext.AdminCtx, order.VendorOrgCode, order.VendorOrderID, order.VendorOrderID, "", "", tipFee2Add) if err == nil { vendorStatus += "成功" order.WaybillTipMoney += tipFee2Add diff --git a/business/partner/delivery/dada/waybill.go b/business/partner/delivery/dada/waybill.go index cb55cf8ee..a15f0fc79 100644 --- a/business/partner/delivery/dada/waybill.go +++ b/business/partner/delivery/dada/waybill.go @@ -69,16 +69,12 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap order := c.callbackMsg2Waybill(msg) switch msg.OrderStatus { case dadaapi.OrderStatusWaitingForAccept: - if result, err := api.DadaAPI.QueryOrderInfo(msg.OrderID); err == nil { - order.ActualFee = jxutils.StandardPrice2Int(utils.Interface2Float64WithDefault(result["actualFee"], 0.0)) - order.DesiredFee = jxutils.StandardPrice2Int(utils.Interface2Float64WithDefault(result["deliveryFee"], 0.0)) + if dadaOrder, err := api.DadaAPI.QueryOrderInfo2(msg.OrderID); err == nil { + order.ActualFee = jxutils.StandardPrice2Int(dadaOrder.ActualFee) + order.DesiredFee = jxutils.StandardPrice2Int(dadaOrder.DeliveryFee) } order.Status = model.WaybillStatusNew case dadaapi.OrderStatusAccepted: - // if result, err := api.DadaAPI.QueryOrderInfo(msg.OrderID); err == nil { - // order.ActualFee = jxutils.StandardPrice2Int(utils.Interface2Float64WithDefault(result["actualFee"], 0.0)) - // order.DesiredFee = jxutils.StandardPrice2Int(utils.Interface2Float64WithDefault(result["deliveryFee"], 0.0)) - // } order.Status = model.WaybillStatusAccepted case dadaapi.OrderStatusDelivering: order.Status = model.WaybillStatusDelivering @@ -204,10 +200,12 @@ func (c *DeliveryHandler) IsErrStoreExist(err error) bool { func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo *partner.WaybillFeeInfo, err error) { db := dao.GetDB() deliveryFeeInfo = &partner.WaybillFeeInfo{} - billParams, addParams, err := c.getBillParams(db, order) + // billParams, addParams, err := c.getBillParams(db, order) + billParams, err := c.getBillParams2(db, order) if err == nil { var result *dadaapi.CreateOrderResponse - if result, err = api.DadaAPI.QueryDeliverFee(billParams, addParams); err != nil { + // if result, err = api.DadaAPI.QueryDeliverFee(billParams, addParams); err != nil { + if result, err = api.DadaAPI.QueryDeliverFee2(billParams); err != nil { return nil, err } deliveryFeeInfo.DeliveryFee = jxutils.StandardPrice2Int(result.Fee) @@ -216,9 +214,34 @@ func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInf return deliveryFeeInfo, err } -func (c *DeliveryHandler) getBillParams(db *dao.DaoDB, order *model.GoodsOrder) (billParams *dadaapi.OperateOrderRequiredParams, addParams map[string]interface{}, err error) { - billParams = &dadaapi.OperateOrderRequiredParams{ - // ShopNo: utils.Int2Str(order.StoreID), // 当前达达的门店号与京西是一样的 +// func (c *DeliveryHandler) getBillParams(db *dao.DaoDB, order *model.GoodsOrder) (billParams *dadaapi.OperateOrderRequiredParams, addParams map[string]interface{}, err error) { +// billParams = &dadaapi.OperateOrderRequiredParams{ +// // ShopNo: utils.Int2Str(order.StoreID), // 当前达达的门店号与京西是一样的 +// OriginID: jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID), +// CargoPrice: jxutils.IntPrice2Standard(limitOrderPrice(order.ActualPayPrice)), +// IsPrepay: 0, +// ReceiverName: utils.FilterMb4(order.ConsigneeName), +// ReceiverAddress: utils.FilterMb4(order.ConsigneeAddress), +// ReceiverPhone: order.ConsigneeMobile, +// } +// if billParams.ShopNo, err = c.getDadaShopID(order, db); err == nil { +// if billParams.CityCode, err = c.getDataCityCodeFromOrder(order, db); err == nil { +// billParams.ReceiverLng, billParams.ReceiverLat, _ = jxutils.IntCoordinate2MarsStandard(order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType) +// addParams = map[string]interface{}{ +// "info": fmt.Sprintf("%s第%d号订单, %s", model.VendorChineseNames[order.VendorID], order.OrderSeq, utils.FilterMb4(order.BuyerComment)), +// // "origin_mark": model.VendorNames[order.VendorID], // 订单来源标示(该字段可以显示在达达app订单详情页面,只支持字母,最大长度为10) +// // "origin_mark_no": fmt.Sprintf("%d", order.OrderSeq), // 订单来源编号(该字段可以显示在达达app订单详情页面,支持字母和数字,最大长度为30) +// "cargo_type": 13, +// "cargo_weight": jxutils.IntWeight2Float(limitOrderWeight(order.Weight)), +// "cargo_num": order.GoodsCount, +// } +// } +// } +// return billParams, addParams, err +// } + +func (c *DeliveryHandler) getBillParams2(db *dao.DaoDB, order *model.GoodsOrder) (billParams *dadaapi.OperateOrderParams, err error) { + billParams = &dadaapi.OperateOrderParams{ OriginID: jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID), CargoPrice: jxutils.IntPrice2Standard(limitOrderPrice(order.ActualPayPrice)), IsPrepay: 0, @@ -229,23 +252,20 @@ func (c *DeliveryHandler) getBillParams(db *dao.DaoDB, order *model.GoodsOrder) if billParams.ShopNo, err = c.getDadaShopID(order, db); err == nil { if billParams.CityCode, err = c.getDataCityCodeFromOrder(order, db); err == nil { billParams.ReceiverLng, billParams.ReceiverLat, _ = jxutils.IntCoordinate2MarsStandard(order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType) - addParams = map[string]interface{}{ - "info": fmt.Sprintf("%s第%d号订单, %s", model.VendorChineseNames[order.VendorID], order.OrderSeq, utils.FilterMb4(order.BuyerComment)), - // "origin_mark": model.VendorNames[order.VendorID], // 订单来源标示(该字段可以显示在达达app订单详情页面,只支持字母,最大长度为10) - // "origin_mark_no": fmt.Sprintf("%d", order.OrderSeq), // 订单来源编号(该字段可以显示在达达app订单详情页面,支持字母和数字,最大长度为30) - "cargo_type": 13, - "cargo_weight": jxutils.IntWeight2Float(limitOrderWeight(order.Weight)), - "cargo_num": order.GoodsCount, - } + billParams.Info = fmt.Sprintf("%s第%d号订单, %s", model.VendorChineseNames[order.VendorID], order.OrderSeq, utils.FilterMb4(order.BuyerComment)) + billParams.CargoType = dadaapi.CargoTypeFresh + billParams.CargoWeight = float64(jxutils.IntWeight2Float(limitOrderWeight(order.Weight))) + billParams.CargoNum = order.GoodsCount } } - return billParams, addParams, err + return billParams, err } // IDeliveryPlatformHandler func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) { db := dao.GetDB() - billParams, addParams, err := c.getBillParams(db, order) + // billParams, addParams, err := c.getBillParams(db, order) + billParams, err := c.getBillParams2(db, order) if err == nil { if globals.EnableStoreWrite { // 达达要求第二次创建运单,调用函数不同。所以查找两天内有无相同订单号的运单 @@ -265,16 +285,19 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee if err = delivery.CallCreateWaybillPolicy(waybillList[0].ActualFee, maxDeliveryFee, order, model.VendorIDDada); err != nil { return nil, err } - result, err = api.DadaAPI.ReaddOrder(billParams, addParams) + // result, err = api.DadaAPI.ReaddOrder(billParams, addParams) + result, err = api.DadaAPI.ReaddOrder2(billParams) } else { // 第一次创建 if err != nil { globals.SugarLogger.Warnf("CreateWaybill orderID:%s error:%v", order.VendorOrderID, err) } if false { - result, err = api.DadaAPI.AddOrder(billParams, addParams) + // result, err = api.DadaAPI.AddOrder(billParams, addParams) + result, err = api.DadaAPI.AddOrder2(billParams) } else { - if result, err = api.DadaAPI.QueryDeliverFee(billParams, addParams); err != nil { + // if result, err = api.DadaAPI.QueryDeliverFee(billParams, addParams); err != nil { + if result, err = api.DadaAPI.QueryDeliverFee2(billParams); err != nil { return nil, err } if err = delivery.CallCreateWaybillPolicy(jxutils.StandardPrice2Int(result.Fee), maxDeliveryFee, order, model.VendorIDDada); err != nil { @@ -368,3 +391,22 @@ func (c *DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, reson err = api.DadaAPI.ComplaintRider(bill.VendorOrderID, resonID) return err } + +func (c *DeliveryHandler) GetWaybillTip(ctx *jxcontext.Context, vendorOrgCode, vendorOrderID, vendorWaybillID, vendorWaybillID2 string) (tipFee int64, err error) { + order, err := api.DadaAPI.QueryOrderInfo2(vendorOrderID) + if err == nil { + tipFee = jxutils.StandardPrice2Int(order.Tips) + } + return tipFee, err +} + +func (c *DeliveryHandler) AddWaybillTip(ctx *jxcontext.Context, vendorOrgCode, vendorOrderID, vendorWaybillID, vendorWaybillID2, cityCode string, tipFee2Add int64) (err error) { + curTip, err := c.GetWaybillTip(ctx, vendorOrgCode, vendorOrderID, vendorWaybillID, vendorWaybillID2) + if err == nil { + totalTip := curTip + tipFee2Add + if globals.EnableStoreWrite { + err = api.DadaAPI.AddTip(vendorOrderID, jxutils.IntPrice2Standard(totalTip), cityCode, "") + } + } + return err +} diff --git a/business/partner/delivery/mtps/waybill.go b/business/partner/delivery/mtps/waybill.go index 6fb53291e..59155db97 100644 --- a/business/partner/delivery/mtps/waybill.go +++ b/business/partner/delivery/mtps/waybill.go @@ -173,14 +173,18 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee item.GoodCount += goodItem.GoodCount } } - addParams := map[string]interface{}{ - "note": utils.FilterMb4(order.BuyerComment), - "goods_detail": string(utils.MustMarshal(goods)), - "goods_pickup_info": fmt.Sprintf("%s第%d号单", model.VendorChineseNames[order.VendorID], order.OrderSeq), - "poi_seq": fmt.Sprintf("#%d", order.OrderSeq), - } + // addParams := map[string]interface{}{ + // "note": utils.FilterMb4(order.BuyerComment), + // "goods_detail": string(utils.MustMarshal(goods)), + // "goods_pickup_info": fmt.Sprintf("%s第%d号单", model.VendorChineseNames[order.VendorID], order.OrderSeq), + // "poi_seq": fmt.Sprintf("#%d", order.OrderSeq), + // } + billParams.Note = utils.FilterMb4(order.BuyerComment) + billParams.GoodsDetail = string(utils.MustMarshal(goods)) + billParams.GoodsPickupInfo = fmt.Sprintf("%s第%d号单", model.VendorChineseNames[order.VendorID], order.OrderSeq) + billParams.PoiSeq = fmt.Sprintf("#%d", order.OrderSeq) if globals.EnableStoreWrite { - result, err2 := api.MtpsAPI.CreateOrderByShop(billParams, addParams) + result, err2 := api.MtpsAPI.CreateOrderByShop2(billParams) if err = err2; err == nil { bill = &model.Waybill{ VendorOrderID: order.VendorOrderID, @@ -192,7 +196,7 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee } delivery.OnWaybillCreated(bill) } else { - globals.SugarLogger.Debugf("CreateWaybill failed, orderID:%s, billParams:%v, addParams:%v, error:%v", order.VendorOrderID, billParams, addParams, err) + globals.SugarLogger.Debugf("CreateWaybill failed, orderID:%s, billParams:%v, error:%v", order.VendorOrderID, billParams, err) } } else { err = fmt.Errorf("测试环境不能真正创建运单") diff --git a/business/partner/partner_order.go b/business/partner/partner_order.go index 55ffd0bf3..231d56a45 100644 --- a/business/partner/partner_order.go +++ b/business/partner/partner_order.go @@ -58,6 +58,6 @@ type IPurchasePlatformOrderHandler interface { } type IAddWaybillTip interface { - GetWaybillTip(ctx *jxcontext.Context, order *model.GoodsOrder) (tipFee int64, err error) - AddWaybillTip(ctx *jxcontext.Context, order *model.GoodsOrder, tipFee2Add int64) (err error) + GetWaybillTip(ctx *jxcontext.Context, vendorOrgCode, vendorOrderID, vendorWaybillID, vendorWaybillID2 string) (tipFee int64, err error) + AddWaybillTip(ctx *jxcontext.Context, vendorOrgCode, vendorOrderID, vendorWaybillID, vendorWaybillID2, cityCode string, tipFee2Add int64) (err error) } diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index cd828982f..a4bcc73e7 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -487,17 +487,17 @@ func (c *PurchaseHandler) UpdateWaybillTip(ctx *jxcontext.Context, order *model. return err } -func (c *PurchaseHandler) GetWaybillTip(ctx *jxcontext.Context, order *model.GoodsOrder) (tipFee int64, err error) { - orderInfo, err := getAPI(order.VendorOrgCode).QuerySingleOrder2(order.VendorOrderID) +func (c *PurchaseHandler) GetWaybillTip(ctx *jxcontext.Context, vendorOrgCode, vendorOrderID, vendorWaybillID, vendorWaybillID2 string) (tipFee int64, err error) { + orderInfo, err := getAPI(vendorOrgCode).QuerySingleOrder2(vendorOrderID) if err == nil { tipFee = int64(orderInfo.Tips) } return tipFee, err } -func (c *PurchaseHandler) AddWaybillTip(ctx *jxcontext.Context, order *model.GoodsOrder, tipFee2Add int64) (err error) { +func (c *PurchaseHandler) AddWaybillTip(ctx *jxcontext.Context, vendorOrgCode, vendorOrderID, vendorWaybillID, vendorWaybillID2, cityCode string, tipFee2Add int64) (err error) { if globals.EnableJdStoreWrite { - err = getAPI(order.VendorOrgCode).OrderAddTips(order.VendorOrderID, int(tipFee2Add), ctx.GetUserName()) + err = getAPI(vendorOrgCode).OrderAddTips(vendorOrderID, int(tipFee2Add), ctx.GetUserName()) } return err } diff --git a/business/partner/purchase/jx/order.go b/business/partner/purchase/jx/order.go index 2a8955482..4c36f9c25 100644 --- a/business/partner/purchase/jx/order.go +++ b/business/partner/purchase/jx/order.go @@ -123,14 +123,6 @@ func (c *PurchaseHandler) ListOrders(ctx *jxcontext.Context, vendorOrgCode strin return vendorOrderIDs, err } -func (c *PurchaseHandler) GetWaybillTip(ctx *jxcontext.Context, order *model.GoodsOrder) (tipFee int64, err error) { - return tipFee, err -} - -func (c *PurchaseHandler) AddWaybillTip(ctx *jxcontext.Context, order *model.GoodsOrder, tipFee2Add int64) (err error) { - return err -} - func (c *PurchaseHandler) ConfirmSelfTake(ctx *jxcontext.Context, vendorOrderID, selfTakeCode string) (err error) { order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDJX) if err == nil { From 1f03a84fa63f767c0124dbc518230e26bb4d1327 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 25 Dec 2019 16:39:01 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8DonAfsOrderMsg=E4=B8=ADafs?= =?UTF-8?q?Order=E6=B2=A1=E6=9C=89=E6=AD=A3=E7=A1=AE=E8=B5=8B=E5=80=BC?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/ebai/order_afs.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/purchase/ebai/order_afs.go b/business/partner/purchase/ebai/order_afs.go index fac74a1ea..d06c917a0 100644 --- a/business/partner/purchase/ebai/order_afs.go +++ b/business/partner/purchase/ebai/order_afs.go @@ -102,7 +102,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaia afsOrder.Skus = append(afsOrder.Skus, orderSku) } } else if msg.Cmd == ebaiapi.CmdOrderUserCancel { - if afsOrder := c.createAfsOrder(msg); afsOrder != nil { + if afsOrder = c.createAfsOrder(msg); afsOrder != nil { // if orderFinancial, err2 := partner.CurOrderManager.LoadOrderFinancial(orderStatus.RefVendorOrderID, model.VendorIDEBAI); err2 == nil { // afsOrder = c.OrderFinancialDetail2Refund(orderFinancial, msg) cancelData := msg.Data.(*ebaiapi.CBUserCancelInfo)