From bd92371e8475de15c280402a7db0a3b66fc2f076 Mon Sep 17 00:00:00 2001 From: gazebo Date: Thu, 24 Jan 2019 18:19:38 +0800 Subject: [PATCH] - wsc schedule. --- .../jxcallback/scheduler/defsch/defsch.go | 4 +-- business/partner/delivery/dada/waybill.go | 8 ++--- business/partner/purchase/weimob/wsc/order.go | 36 ++++++++++++++----- 3 files changed, 34 insertions(+), 14 deletions(-) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index b43df5ce2..f49565ee2 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -516,13 +516,13 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf if _, err = s.CreateWaybill(vendorID, order, func(deliveryFee, addFee int64) error { if savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore && addFee > maxAddFee { db := orm.NewOrm() - globals.SugarLogger.Infof("CreateWaybill orderID:%s addFee exceeded too much, it's %d", order.VendorOrderID, addFee) + globals.SugarLogger.Infof("createWaybillOn3rdProviders CreateWaybill orderID:%s addFee exceeded too much deliveryFee:%d, addFee:%d", order.VendorOrderID, deliveryFee, addFee) tmpLog := &legacymodel.TempLog{ VendorOrderID: order.VendorOrderID, RefVendorOrderID: order.VendorOrderID, IntValue1: addFee, - Msg: fmt.Sprintf("CreateWaybill orderID:%s addFee exceeded too much, it's %d", order.VendorOrderID, addFee), + Msg: fmt.Sprintf("createWaybillOn3rdProviders CreateWaybill orderID:%s addFee exceeded too much deliveryFee:%d, addFee:%d", order.VendorOrderID, deliveryFee, addFee), } db.Insert(tmpLog) return ErrAddFeeExceeded diff --git a/business/partner/delivery/dada/waybill.go b/business/partner/delivery/dada/waybill.go index 8b62b54f2..8f7fed10c 100644 --- a/business/partner/delivery/dada/waybill.go +++ b/business/partner/delivery/dada/waybill.go @@ -30,19 +30,19 @@ var ( ) var ( - curDeliveryHandler *DeliveryHandler + CurDeliveryHandler *DeliveryHandler ) type DeliveryHandler struct { } func init() { - curDeliveryHandler = new(DeliveryHandler) - partner.RegisterDeliveryPlatform(curDeliveryHandler, true) + CurDeliveryHandler = new(DeliveryHandler) + partner.RegisterDeliveryPlatform(CurDeliveryHandler, true) } func OnWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) { - return curDeliveryHandler.OnWaybillMsg(msg) + return CurDeliveryHandler.OnWaybillMsg(msg) } func (c *DeliveryHandler) GetVendorID() int { diff --git a/business/partner/purchase/weimob/wsc/order.go b/business/partner/purchase/weimob/wsc/order.go index 9573406c8..9aa3e2568 100644 --- a/business/partner/purchase/weimob/wsc/order.go +++ b/business/partner/purchase/weimob/wsc/order.go @@ -1,6 +1,7 @@ package wsc import ( + "errors" "sort" "time" @@ -10,6 +11,7 @@ import ( "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/partner" + "git.rosy.net.cn/jx-callback/business/partner/delivery/dada" "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" ) @@ -19,6 +21,10 @@ const ( FakeOrderStatusFinishedPickup = 102 ) +const ( + maxAddFee = 300 // 最大增加费用,单位为分,超过不发三方配送了 +) + var ( VendorStatus2StatusMap = map[int]int{ weimobapi.OrderStatusWait4Pay: model.OrderStatusUnknown, @@ -148,14 +154,17 @@ func (p *PurchaseHandler) GetStatusActionTimeout(statusType, status int) time.Du } func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) { - if globals.EnableStoreWrite && globals.EnableWscStoreWrite { - if !isAcceptIt { + if !isAcceptIt { + if globals.EnableStoreWrite && globals.EnableWscStoreWrite { err = api.WeimobAPI.CancelOrder(utils.Str2Int64(order.VendorOrderID), "") + } + } else { + if jxutils.GetSaleStoreIDFromOrder(order) != 0 { + // 微商城没有确认,只有取消,模拟接受 + p.postFakeMsg(utils.Str2Int64(order.VendorOrderID), FakeOrderStatusAccepted) } else { - if jxutils.GetSaleStoreIDFromOrder(order) == 0 { - // 微商城没有确认,只有取消,模拟接受 - p.postFakeMsg(utils.Str2Int64(order.VendorOrderID), FakeOrderStatusAccepted) - } else { + globals.SugarLogger.Debugf("weimob AcceptOrRefuseOrder orderID:%s can not find sale store", order.VendorOrderID) + if globals.EnableStoreWrite && globals.EnableWscStoreWrite { err = api.WeimobAPI.CancelOrder(utils.Str2Int64(order.VendorOrderID), "没有找到合适的配送店") } } @@ -165,29 +174,40 @@ func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI func (p *PurchaseHandler) PickupGoods(order *model.GoodsOrder, userName string) (err error) { if globals.EnableStoreWrite && globals.EnableWscStoreWrite { - // 微商城没有拣货完成,模拟 - p.postFakeMsg(utils.Str2Int64(order.VendorOrderID), FakeOrderStatusFinishedPickup) + _, err = dada.CurDeliveryHandler.CreateWaybill(order, func(deliveryFee, addFee int64) error { + if addFee > maxAddFee { + globals.SugarLogger.Infof("PickupGoods CreateWaybill orderID:%s addFee exceeded too much deliveryFee:%d, addFee:%d", order.VendorOrderID, deliveryFee, addFee) + return errors.New("配送超过基准价太多") + } + return nil + }) } + // 微商城没有拣货完成,模拟 + p.postFakeMsg(utils.Str2Int64(order.VendorOrderID), FakeOrderStatusFinishedPickup) return err } // 将订单从购物平台配送转为自送 func (p *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) { + // p.postFakeMsg(utils.Str2Int64(order.VendorOrderID), weimobapi.OrderStatusDelivering) return err } // 将订单从购物平台配送转为自送后又送达 func (p *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) { + // p.postFakeMsg(utils.Str2Int64(order.VendorOrderID), weimobapi.OrderStatusFinished) return err } // 完全自送的门店表示开始配送 func (p *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) { + // p.postFakeMsg(utils.Str2Int64(order.VendorOrderID), weimobapi.OrderStatusDelivering) return err } // 完全自送的门店表示配送完成 func (p *PurchaseHandler) SelfDeliverDelievered(order *model.GoodsOrder, userName string) (err error) { + // p.postFakeMsg(utils.Str2Int64(order.VendorOrderID), weimobapi.OrderStatusFinished) return err }