- jxstorefeature support added.
This commit is contained in:
@@ -25,7 +25,6 @@ const (
|
||||
|
||||
type WatchOrderInfo struct {
|
||||
order *model.GoodsOrder // order里的信息是保持更新的
|
||||
dirty int // 因为京东事件序列New与Accepted有极少数情况下会错序,处理延迟加载
|
||||
waybills []*model.Waybill // 这个waybills里的状态信息是不真实的,只使用id相关的信息
|
||||
timerStatus int
|
||||
timer *time.Timer
|
||||
@@ -211,19 +210,23 @@ func (s *DefScheduler) removeWaybillFromMap(savedOrderInfo *WatchOrderInfo, bill
|
||||
|
||||
func (s *DefScheduler) createWaybillOn3rdProviders(order *model.GoodsOrder, excludeBill *model.Waybill) (err error) {
|
||||
globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, excludeBill:%v", order.VendorOrderID, excludeBill)
|
||||
successCount := 0
|
||||
for vendorID := range s.DeliveryPlatformHandlers {
|
||||
if excludeBill == nil || vendorID != excludeBill.WaybillVendorID {
|
||||
if err = s.CreateWaybill(vendorID, order); err == nil {
|
||||
successCount++
|
||||
if s.isOrderSupport3rdDelivery(order) {
|
||||
successCount := 0
|
||||
for vendorID := range s.DeliveryPlatformHandlers {
|
||||
if excludeBill == nil || vendorID != excludeBill.WaybillVendorID {
|
||||
if err = s.CreateWaybill(vendorID, order); err == nil {
|
||||
successCount++
|
||||
}
|
||||
}
|
||||
}
|
||||
if successCount != 0 {
|
||||
return nil
|
||||
}
|
||||
globals.SugarLogger.Warnf("createWaybillOn3rdProviders, orderID:%s all failed", order.VendorOrderID)
|
||||
return scheduler.ErrCanNotCreateAtLeastOneWaybill
|
||||
}
|
||||
if successCount != 0 {
|
||||
return nil
|
||||
}
|
||||
globals.SugarLogger.Warnf("createWaybillOn3rdProviders, orderID:%s all failed", order.VendorOrderID)
|
||||
return scheduler.ErrCanNotCreateAtLeastOneWaybill
|
||||
globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, store:%d dont't support 3rd delivery platform", order.VendorOrderID, jxutils.GetJxStoreIDFromOrder(order))
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *DefScheduler) cancelOtherWaybills(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
|
||||
@@ -264,13 +267,12 @@ func (s *DefScheduler) loadSavedOrderFromMap(status *model.OrderStatus) *WatchOr
|
||||
if savedInfo, ok := s.orderMap.Load(universalOrderID); ok {
|
||||
realSavedInfo = savedInfo.(*WatchOrderInfo)
|
||||
}
|
||||
if realSavedInfo == nil || realSavedInfo.dirty == 1 {
|
||||
if realSavedInfo == nil || !model.IsOrderSolid(realSavedInfo.order) {
|
||||
if realSavedInfo == nil {
|
||||
realSavedInfo = new(WatchOrderInfo)
|
||||
s.orderMap.Store(universalOrderID, realSavedInfo)
|
||||
} else {
|
||||
realSavedInfo.dirty = 0
|
||||
globals.SugarLogger.Infof("loadSavedOrderFromMap order is dirty, orderID:%s, load it", status.RefVendorOrderID)
|
||||
globals.SugarLogger.Infof("loadSavedOrderFromMap order is incomplete, orderID:%s, load it", status.RefVendorOrderID)
|
||||
}
|
||||
if order, err := s.CurOrderManager.LoadOrder(status.RefVendorOrderID, status.RefVendorID); err == nil {
|
||||
realSavedInfo.order = order
|
||||
@@ -283,7 +285,6 @@ func (s *DefScheduler) loadSavedOrderFromMap(status *model.OrderStatus) *WatchOr
|
||||
OrderCreatedAt: status.StatusTime,
|
||||
WaybillVendorID: model.VendorIDUnknown,
|
||||
}
|
||||
realSavedInfo.dirty = 1
|
||||
globals.SugarLogger.Infof("loadSavedOrderFromMap can not load order orderID:%s", status.VendorOrderID)
|
||||
}
|
||||
}
|
||||
@@ -351,7 +352,6 @@ func (s *DefScheduler) handleAutoAcceptOrder(orderID string, vendorID int, userM
|
||||
globals.SugarLogger.Infof("order:%s, vendorID:%d, mobile is empty, should accept order", orderID, vendorID)
|
||||
handleType = 1
|
||||
}
|
||||
|
||||
if handleType == 1 {
|
||||
handler(true)
|
||||
} else if handleType == -1 {
|
||||
@@ -387,3 +387,21 @@ func (s *DefScheduler) updateOrderByStatus(order *model.GoodsOrder, status *mode
|
||||
order.StatusTime = status.StatusTime
|
||||
return order
|
||||
}
|
||||
|
||||
func (s *DefScheduler) isOrderSupport3rdDelivery(order *model.GoodsOrder) (retVal bool) {
|
||||
storefeature := &model.Jxstorefeature{
|
||||
Id: jxutils.GetJxStoreIDFromOrder(order),
|
||||
}
|
||||
db := orm.NewOrm()
|
||||
utils.CallFuncLogError(func() error {
|
||||
err := db.Read(storefeature, "Id")
|
||||
if err == nil {
|
||||
if (order.VendorID == model.VendorIDJD && storefeature.Deliverycompetition == 1) ||
|
||||
(order.VendorID == model.VendorIDELM && storefeature.Transmtzs == 1) {
|
||||
retVal = true
|
||||
}
|
||||
}
|
||||
return err
|
||||
}, "isOrderSupport3rdDelivery")
|
||||
return retVal
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user