+ handleWaybillTip

This commit is contained in:
gazebo
2019-07-30 16:26:56 +08:00
parent 65994f8824
commit 2cce24bd72
4 changed files with 64 additions and 9 deletions

View File

@@ -45,6 +45,8 @@ const (
time2Schedule3rdCarrierKey = "waitminute4mt"
dingShiDaAheadTime = 30 * time.Minute // 定时达订单开始召唤配送的提前时间
minAddWaybillTipMinute = 15 // 最少开始加小费分钟(距离拣货完成)
)
const (
@@ -334,6 +336,12 @@ func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *mod
s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(status))
}
}
// if savedOrderInfo.order.Status == model.OrderStatusFinishedPickup {
// order := savedOrderInfo.order
// utils.AfterFuncWithRecover(minAddWaybillTipMinute*time.Minute, func() {
// s.handleWaybillTip(order)
// })
// }
}
if order.LockStatus != model.OrderStatusUnknown {
s.stopTimer(savedOrderInfo)
@@ -941,13 +949,58 @@ func (s *DefScheduler) updateBillsInfo(savedOrderInfo *WatchOrderInfo, bill *mod
}
func (s *DefScheduler) autoPickupGood(savedOrderInfo *WatchOrderInfo) (err error) {
err = s.PickupGoods(savedOrderInfo.order, savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore, "")
if err == scheduler.ErrOrderStatusAlreadySatisfyCurOperation {
if err = s.PickupGoods(savedOrderInfo.order, savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore, ""); err == nil {
order := savedOrderInfo.order
order.DeliveryFlag |= model.OrderDeliveryFlagMaskAutoPickup
partner.CurOrderManager.UpdateOrderFields(order, []string{"DeliveryFlag"})
} else if err == scheduler.ErrOrderStatusAlreadySatisfyCurOperation {
err = nil
}
return err
}
func (s *DefScheduler) getWaybillTip(order *model.GoodsOrder) (tipFee int64) {
if order.Status == model.OrderStatusFinishedPickup {
startTime := order.StatusTime.Add(minAddWaybillTipMinute * time.Minute)
if order.DeliveryFlag&model.OrderDeliveryFlagMaskAutoPickup != 0 {
startTime = startTime.Add(5 * time.Minute)
}
timeGap1 := time.Now().Sub(startTime)
if timeGap1 > 0 {
timeGap := int64(timeGap1/(5*time.Minute)) + 1
tipFee = timeGap * 100
if tipFee > 600 {
tipFee = 600
}
}
}
return tipFee
}
func (s *DefScheduler) handleWaybillTip(order2 *model.GoodsOrder) {
if order, err := partner.CurOrderManager.LoadOrder(order2.VendorOrderID, order2.VendorID); err == nil {
if order.Status == model.OrderStatusFinishedPickup {
if tipFee := s.getWaybillTip(order); tipFee > 0 {
if handler, ok := partner.GetPurchasePlatformFromVendorID(order.VendorID).(partner.IUpdateWaybillTip); ok && handler != nil {
err := handler.UpdateWaybillTip(jxcontext.AdminCtx, order, tipFee)
vendorStatus := fmt.Sprintf("添加小费:%s", jxutils.IntPrice2StandardCurrencyString(tipFee))
remark := ""
if err == nil {
vendorStatus += "成功"
} else {
vendorStatus += "失败"
remark = fmt.Sprint(err)
}
partner.CurOrderManager.OnOrderMsg(order, vendorStatus, remark)
}
}
utils.AfterFuncWithRecover(5*time.Minute, func() {
s.handleWaybillTip(order)
})
}
}
}
func (s *DefScheduler) isBillCandidate(order *model.GoodsOrder, bill *model.Waybill) bool {
return order.WaybillVendorID == bill.WaybillVendorID && order.VendorWaybillID == bill.VendorWaybillID
}

View File

@@ -301,6 +301,8 @@ const (
OrderDeliveryFlagMaskScheduleDisabled = 1 // 禁止三方配送调度
OrderDeliveryFlagMaskPurcahseDisabled = 2 // 购物平台已不配送(一般为门店配送类型本身为自配送,或已经转自配送)
OrderDeliveryFlagMaskAutoPickup = 4 // 是否是自动拣货的
OrderDeliveryFlagMaskDada = 16 // 创建达达运单中
OrderDeliveryFlagMaskMtps = 32 // 创建美团配送运单中
)

View File

@@ -447,7 +447,7 @@ func (c *PurchaseHandler) UpdateWaybillTip(ctx *jxcontext.Context, order *model.
orderInfo, err := api.JdAPI.QuerySingleOrder2(order.VendorOrderID)
if err == nil {
tip2Add := int(tipFee) - orderInfo.Tips
if tip2Add > 0 {
if tip2Add != 0 {
if globals.EnableJdStoreWrite {
err = api.JdAPI.OrderAddTips(order.VendorOrderID, tip2Add, ctx.GetUserName())
}

View File

@@ -576,9 +576,9 @@ func (c *PurchaseHandler) ListOrders(ctx *jxcontext.Context, parentTask tasksch.
return vendorOrderIDs, err
}
func (c *PurchaseHandler) UpdateWaybillTip(ctx *jxcontext.Context, order *model.GoodsOrder, tipFee int64) (err error) {
if globals.EnableMtwmStoreWrite {
err = api.MtwmAPI.OrderUpdateTip(utils.Str2Int64(order.VendorOrderID), jxutils.IntPrice2Standard(tipFee))
}
return err
}
// func (c *PurchaseHandler) UpdateWaybillTip(ctx *jxcontext.Context, order *model.GoodsOrder, tipFee int64) (err error) {
// if globals.EnableMtwmStoreWrite {
// err = api.MtwmAPI.OrderUpdateTip(utils.Str2Int64(order.VendorOrderID), jxutils.IntPrice2Standard(tipFee))
// }
// return err
// }