+ handleWaybillTip
This commit is contained in:
@@ -45,6 +45,8 @@ const (
|
|||||||
|
|
||||||
time2Schedule3rdCarrierKey = "waitminute4mt"
|
time2Schedule3rdCarrierKey = "waitminute4mt"
|
||||||
dingShiDaAheadTime = 30 * time.Minute // 定时达订单开始召唤配送的提前时间
|
dingShiDaAheadTime = 30 * time.Minute // 定时达订单开始召唤配送的提前时间
|
||||||
|
|
||||||
|
minAddWaybillTipMinute = 15 // 最少开始加小费分钟(距离拣货完成)
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -334,6 +336,12 @@ func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *mod
|
|||||||
s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(status))
|
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 {
|
if order.LockStatus != model.OrderStatusUnknown {
|
||||||
s.stopTimer(savedOrderInfo)
|
s.stopTimer(savedOrderInfo)
|
||||||
@@ -941,13 +949,58 @@ func (s *DefScheduler) updateBillsInfo(savedOrderInfo *WatchOrderInfo, bill *mod
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *DefScheduler) autoPickupGood(savedOrderInfo *WatchOrderInfo) (err error) {
|
func (s *DefScheduler) autoPickupGood(savedOrderInfo *WatchOrderInfo) (err error) {
|
||||||
err = s.PickupGoods(savedOrderInfo.order, savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore, "")
|
if err = s.PickupGoods(savedOrderInfo.order, savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore, ""); err == nil {
|
||||||
if err == scheduler.ErrOrderStatusAlreadySatisfyCurOperation {
|
order := savedOrderInfo.order
|
||||||
|
order.DeliveryFlag |= model.OrderDeliveryFlagMaskAutoPickup
|
||||||
|
partner.CurOrderManager.UpdateOrderFields(order, []string{"DeliveryFlag"})
|
||||||
|
} else if err == scheduler.ErrOrderStatusAlreadySatisfyCurOperation {
|
||||||
err = nil
|
err = nil
|
||||||
}
|
}
|
||||||
return err
|
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 {
|
func (s *DefScheduler) isBillCandidate(order *model.GoodsOrder, bill *model.Waybill) bool {
|
||||||
return order.WaybillVendorID == bill.WaybillVendorID && order.VendorWaybillID == bill.VendorWaybillID
|
return order.WaybillVendorID == bill.WaybillVendorID && order.VendorWaybillID == bill.VendorWaybillID
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -301,6 +301,8 @@ const (
|
|||||||
OrderDeliveryFlagMaskScheduleDisabled = 1 // 禁止三方配送调度
|
OrderDeliveryFlagMaskScheduleDisabled = 1 // 禁止三方配送调度
|
||||||
OrderDeliveryFlagMaskPurcahseDisabled = 2 // 购物平台已不配送(一般为门店配送类型本身为自配送,或已经转自配送)
|
OrderDeliveryFlagMaskPurcahseDisabled = 2 // 购物平台已不配送(一般为门店配送类型本身为自配送,或已经转自配送)
|
||||||
|
|
||||||
|
OrderDeliveryFlagMaskAutoPickup = 4 // 是否是自动拣货的
|
||||||
|
|
||||||
OrderDeliveryFlagMaskDada = 16 // 创建达达运单中
|
OrderDeliveryFlagMaskDada = 16 // 创建达达运单中
|
||||||
OrderDeliveryFlagMaskMtps = 32 // 创建美团配送运单中
|
OrderDeliveryFlagMaskMtps = 32 // 创建美团配送运单中
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -447,7 +447,7 @@ func (c *PurchaseHandler) UpdateWaybillTip(ctx *jxcontext.Context, order *model.
|
|||||||
orderInfo, err := api.JdAPI.QuerySingleOrder2(order.VendorOrderID)
|
orderInfo, err := api.JdAPI.QuerySingleOrder2(order.VendorOrderID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
tip2Add := int(tipFee) - orderInfo.Tips
|
tip2Add := int(tipFee) - orderInfo.Tips
|
||||||
if tip2Add > 0 {
|
if tip2Add != 0 {
|
||||||
if globals.EnableJdStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
err = api.JdAPI.OrderAddTips(order.VendorOrderID, tip2Add, ctx.GetUserName())
|
err = api.JdAPI.OrderAddTips(order.VendorOrderID, tip2Add, ctx.GetUserName())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -576,9 +576,9 @@ func (c *PurchaseHandler) ListOrders(ctx *jxcontext.Context, parentTask tasksch.
|
|||||||
return vendorOrderIDs, err
|
return vendorOrderIDs, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) UpdateWaybillTip(ctx *jxcontext.Context, order *model.GoodsOrder, tipFee int64) (err error) {
|
// func (c *PurchaseHandler) UpdateWaybillTip(ctx *jxcontext.Context, order *model.GoodsOrder, tipFee int64) (err error) {
|
||||||
if globals.EnableMtwmStoreWrite {
|
// if globals.EnableMtwmStoreWrite {
|
||||||
err = api.MtwmAPI.OrderUpdateTip(utils.Str2Int64(order.VendorOrderID), jxutils.IntPrice2Standard(tipFee))
|
// err = api.MtwmAPI.OrderUpdateTip(utils.Str2Int64(order.VendorOrderID), jxutils.IntPrice2Standard(tipFee))
|
||||||
}
|
// }
|
||||||
return err
|
// return err
|
||||||
}
|
// }
|
||||||
|
|||||||
Reference in New Issue
Block a user