饿百订单手动接单
This commit is contained in:
@@ -226,57 +226,61 @@ func init() {
|
|||||||
FixedScheduler = sch
|
FixedScheduler = sch
|
||||||
sch.IsReallyCallPlatformAPI = globals.ReallyCallPlatformAPI
|
sch.IsReallyCallPlatformAPI = globals.ReallyCallPlatformAPI
|
||||||
scheduler.CurrentScheduler = sch
|
scheduler.CurrentScheduler = sch
|
||||||
|
statusAccept := func(time time.Duration) *StatusActionConfig {
|
||||||
|
return &StatusActionConfig{ // 自动接单
|
||||||
|
StatusActionParams: partner.StatusActionParams{
|
||||||
|
TimerType: partner.TimerTypeBaseStatusTime,
|
||||||
|
Timeout: time,
|
||||||
|
},
|
||||||
|
TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
|
||||||
|
order := savedOrderInfo.order
|
||||||
|
storeDetail, err := dao.GetStoreDetail(dao.GetDB(), jxutils.GetSaleStoreIDFromOrder(order), order.VendorID)
|
||||||
|
if err == nil {
|
||||||
|
savedOrderInfo.storeDetail = storeDetail
|
||||||
|
}
|
||||||
|
mobile := order.ConsigneeMobile
|
||||||
|
if order.ConsigneeMobile2 != "" {
|
||||||
|
mobile = order.ConsigneeMobile2
|
||||||
|
}
|
||||||
|
_ = sch.handleAutoAcceptOrder(order.VendorOrderID, order.VendorID, mobile, jxutils.GetSaleStoreIDFromOrder(order), nil, func(isAcceptIt bool) error {
|
||||||
|
if err = sch.AcceptOrRefuseOrder(order, isAcceptIt, ""); err != nil && err != scheduler.ErrOrderStatusAlreadySatisfyCurOperation {
|
||||||
|
partner.CurOrderManager.OnOrderMsg(order, "自动接单失败", err.Error())
|
||||||
|
// 为了解决京东新消息与接单消息乱序的问题
|
||||||
|
if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 && errWithCode.IntCode() == -1 {
|
||||||
|
if order2, err2 := partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).GetOrder(order.VendorOrgCode, order.VendorOrderID); err2 == nil {
|
||||||
|
if order2.Status > order.Status {
|
||||||
|
order.Status = order2.Status
|
||||||
|
jxutils.CallMsgHandlerAsync(func() {
|
||||||
|
sch.OnOrderStatusChanged(order, model.Order2Status(order2), false)
|
||||||
|
}, jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID))
|
||||||
|
err = nil
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
err = err2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if isAcceptIt {
|
||||||
|
if err == nil {
|
||||||
|
sch.notifyNewOrder(order)
|
||||||
|
msghub.OnNewOrder(order)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
partner.CurOrderManager.OnOrderMsg(order, "黑名单拒单", "")
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
})
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool {
|
||||||
|
return savedOrderInfo.order.LockStatus == model.LockStatusUnlocked && savedOrderInfo.order.Status == model.OrderStatusNew
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
sch.defWorkflowConfig = []map[int]*StatusActionConfig{
|
sch.defWorkflowConfig = []map[int]*StatusActionConfig{
|
||||||
map[int]*StatusActionConfig{
|
map[int]*StatusActionConfig{
|
||||||
model.OrderStatusNew: &StatusActionConfig{ // 自动接单
|
model.OrderStatusWaitAccepted: statusAccept(4 * time.Second), //饿百假的自动接单
|
||||||
StatusActionParams: partner.StatusActionParams{
|
model.OrderStatusNew: statusAccept(10 * time.Millisecond),
|
||||||
TimerType: partner.TimerTypeBaseStatusTime,
|
|
||||||
Timeout: 10 * time.Millisecond,
|
|
||||||
},
|
|
||||||
TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
|
|
||||||
order := savedOrderInfo.order
|
|
||||||
storeDetail, err := dao.GetStoreDetail(dao.GetDB(), jxutils.GetSaleStoreIDFromOrder(order), order.VendorID)
|
|
||||||
if err == nil {
|
|
||||||
savedOrderInfo.storeDetail = storeDetail
|
|
||||||
}
|
|
||||||
mobile := order.ConsigneeMobile
|
|
||||||
if order.ConsigneeMobile2 != "" {
|
|
||||||
mobile = order.ConsigneeMobile2
|
|
||||||
}
|
|
||||||
_ = sch.handleAutoAcceptOrder(order.VendorOrderID, order.VendorID, mobile, jxutils.GetSaleStoreIDFromOrder(order), nil, func(isAcceptIt bool) error {
|
|
||||||
if err = sch.AcceptOrRefuseOrder(order, isAcceptIt, ""); err != nil && err != scheduler.ErrOrderStatusAlreadySatisfyCurOperation {
|
|
||||||
partner.CurOrderManager.OnOrderMsg(order, "自动接单失败", err.Error())
|
|
||||||
// 为了解决京东新消息与接单消息乱序的问题
|
|
||||||
if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 && errWithCode.IntCode() == -1 {
|
|
||||||
if order2, err2 := partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).GetOrder(order.VendorOrgCode, order.VendorOrderID); err2 == nil {
|
|
||||||
if order2.Status > order.Status {
|
|
||||||
order.Status = order2.Status
|
|
||||||
jxutils.CallMsgHandlerAsync(func() {
|
|
||||||
sch.OnOrderStatusChanged(order, model.Order2Status(order2), false)
|
|
||||||
}, jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID))
|
|
||||||
err = nil
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
err = err2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if isAcceptIt {
|
|
||||||
if err == nil {
|
|
||||||
sch.notifyNewOrder(order)
|
|
||||||
msghub.OnNewOrder(order)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
partner.CurOrderManager.OnOrderMsg(order, "黑名单拒单", "")
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
})
|
|
||||||
return nil
|
|
||||||
},
|
|
||||||
ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool {
|
|
||||||
return savedOrderInfo.order.LockStatus == model.LockStatusUnlocked && savedOrderInfo.order.Status == model.OrderStatusNew
|
|
||||||
},
|
|
||||||
},
|
|
||||||
model.OrderStatusAccepted: &StatusActionConfig{ // 自动拣货
|
model.OrderStatusAccepted: &StatusActionConfig{ // 自动拣货
|
||||||
StatusActionParams: partner.StatusActionParams{
|
StatusActionParams: partner.StatusActionParams{
|
||||||
TimerType: partner.TimerTypeBaseStatusTime,
|
TimerType: partner.TimerTypeBaseStatusTime,
|
||||||
|
|||||||
@@ -247,6 +247,7 @@ const (
|
|||||||
|
|
||||||
OrderStatusUnknown = 0
|
OrderStatusUnknown = 0
|
||||||
OrderStatusWait4Pay = 2 // 原值-60 下单待支付
|
OrderStatusWait4Pay = 2 // 原值-60 下单待支付
|
||||||
|
OrderStatusWaitAccepted = 3 // 待接单,目前饿百用
|
||||||
OrderStatusNew = 5 // 新订单,实际是已经支付
|
OrderStatusNew = 5 // 新订单,实际是已经支付
|
||||||
OrderStatusAccepted = 10 // 已经接单,也即待出库,待拣货
|
OrderStatusAccepted = 10 // 已经接单,也即待出库,待拣货
|
||||||
OrderStatusFinishedPickup = 15 // 拣货完成
|
OrderStatusFinishedPickup = 15 // 拣货完成
|
||||||
|
|||||||
@@ -38,8 +38,8 @@ const (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
VendorStatus2StatusMap = map[string]int{
|
VendorStatus2StatusMap = map[string]int{
|
||||||
ebaiapi.CmdOrderCreate: model.OrderStatusNew,
|
ebaiapi.CmdOrderCreate: model.OrderStatusWaitAccepted,
|
||||||
ebaiapi.OrderStatusNew: model.OrderStatusNew,
|
ebaiapi.OrderStatusNew: model.OrderStatusWaitAccepted,
|
||||||
fakeAcceptOrder: model.OrderStatusAccepted,
|
fakeAcceptOrder: model.OrderStatusAccepted,
|
||||||
ebaiapi.OrderStatusAccepted: model.OrderStatusFinishedPickup,
|
ebaiapi.OrderStatusAccepted: model.OrderStatusFinishedPickup,
|
||||||
ebaiapi.OrderStatusCourierAccepted: model.OrderStatusDelivering,
|
ebaiapi.OrderStatusCourierAccepted: model.OrderStatusDelivering,
|
||||||
|
|||||||
Reference in New Issue
Block a user