+ AcceptOrRefuseFailedGetOrder
+ CallPMCourier + ConfirmReceiveGoods
This commit is contained in:
@@ -11,6 +11,15 @@ import (
|
||||
"github.com/astaxie/beego/orm"
|
||||
)
|
||||
|
||||
var (
|
||||
waybillOrderStatusMap = map[int]int{
|
||||
model.WaybillStatusApplyFailedGetGoods: model.WaybillStatusApplyFailedGetGoods,
|
||||
model.WaybillStatusAgreeFailedGetGoods: model.WaybillStatusAgreeFailedGetGoods,
|
||||
model.WaybillStatusRefuseFailedGetGoods: model.WaybillStatusRefuseFailedGetGoods,
|
||||
model.WaybillStatusDeliverFailed: model.WaybillStatusDeliverFailed,
|
||||
}
|
||||
)
|
||||
|
||||
func (w *OrderManager) LoadPendingWaybills() []*model.Waybill {
|
||||
db := orm.NewOrm()
|
||||
var bills []*model.Waybill
|
||||
@@ -108,6 +117,22 @@ func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
|
||||
} else {
|
||||
dao.Rollback(db)
|
||||
}
|
||||
if bill.VendorOrderID == bill.VendorWaybillID {
|
||||
if status, ok := waybillOrderStatusMap[bill.Status]; ok {
|
||||
fakeOrderStatus := &model.OrderStatus{
|
||||
VendorOrderID: bill.VendorOrderID,
|
||||
VendorID: bill.OrderVendorID,
|
||||
OrderType: model.OrderTypeOrder,
|
||||
RefVendorOrderID: bill.VendorOrderID,
|
||||
RefVendorID: bill.OrderVendorID,
|
||||
Status: status,
|
||||
VendorStatus: bill.VendorStatus,
|
||||
StatusTime: bill.StatusTime,
|
||||
Remark: bill.Remark,
|
||||
}
|
||||
w.OnOrderStatusChanged(fakeOrderStatus)
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@@ -128,3 +128,24 @@ func (c *BaseScheduler) CancelOrder(ctx *jxcontext.Context, order *model.GoodsOr
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *BaseScheduler) AcceptOrRefuseFailedGetOrder(ctx *jxcontext.Context, order *model.GoodsOrder, isAcceptIt bool, reason string) (err error) {
|
||||
if c.IsReallyCallPlatformAPI {
|
||||
err = partner.GetPurchasePlatformFromVendorID(order.VendorID).AcceptOrRefuseFailedGetOrder(ctx, order, isAcceptIt)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *BaseScheduler) CallPMCourier(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) {
|
||||
if c.IsReallyCallPlatformAPI {
|
||||
err = partner.GetPurchasePlatformFromVendorID(order.VendorID).CallCourier(ctx, order)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *BaseScheduler) ConfirmReceiveGoods(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) {
|
||||
if c.IsReallyCallPlatformAPI {
|
||||
err = partner.GetPurchasePlatformFromVendorID(order.VendorID).ConfirmReceiveGoods(ctx, order)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -242,7 +242,7 @@ func (s *DefScheduler) OnOrderNew(order *model.GoodsOrder, isPending bool) (err
|
||||
|
||||
// todo 这个接口应该可以直接传order的,因为在OrderManager中每次都生成了
|
||||
func (s *DefScheduler) OnOrderStatusChanged(status *model.OrderStatus, isPending bool) (err error) {
|
||||
if status.LockStatus != model.OrderStatusUnknown || status.Status > model.OrderStatusUnknown {
|
||||
if status.LockStatus != model.OrderStatusUnknown || (status.Status > model.OrderStatusMsg && status.Status != model.OrderStatusUnknown) {
|
||||
globals.SugarLogger.Debugf("OnOrderStatusChanged orderID:%s %s, status:%v", status.VendorOrderID, model.OrderStatusName[status.Status], status)
|
||||
savedOrderInfo := s.loadSavedOrderFromMap(status, true)
|
||||
s.updateOrderByStatus(savedOrderInfo.order, status)
|
||||
@@ -273,18 +273,26 @@ func (s *DefScheduler) OnOrderStatusChanged(status *model.OrderStatus, isPending
|
||||
if status.Status >= model.OrderStatusEndBegin {
|
||||
s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(status))
|
||||
}
|
||||
} else if status.Status == model.OrderStatusRefuseFailedGetGoods {
|
||||
// 将order状态设置为OrderStatusFinishedPickup
|
||||
}
|
||||
} else if status.LockStatus != model.OrderStatusUnknown {
|
||||
}
|
||||
if status.LockStatus != model.OrderStatusUnknown {
|
||||
s.stopTimer(savedOrderInfo)
|
||||
}
|
||||
} else if status.Status == model.OrderStatusApplyCancel {
|
||||
globals.SugarLogger.Debugf("OnOrderStatusChanged orderID:%s %s, status:%v", status.VendorOrderID, model.OrderStatusName[status.Status], status)
|
||||
savedOrderInfo := s.loadSavedOrderFromMap(status, true)
|
||||
s.updateOrderByStatus(savedOrderInfo.order, status)
|
||||
utils.CallFuncAsync(func() {
|
||||
weixinmsg.NotifyUserApplyCancel(savedOrderInfo.order, status.Remark)
|
||||
})
|
||||
msghub.OnUserApplyCancel(savedOrderInfo.order)
|
||||
if model.IsOrderLockStatus(status.Status) ||
|
||||
model.IsOrderUnlockStatus(status.Status) ||
|
||||
status.Status == model.OrderStatusApplyFailedGetGoods ||
|
||||
status.Status == model.OrderStatusAgreeFailedGetGoods {
|
||||
if isPending {
|
||||
if status.Status == model.OrderStatusApplyCancel {
|
||||
utils.CallFuncAsync(func() {
|
||||
weixinmsg.NotifyUserApplyCancel(savedOrderInfo.order, status.Remark)
|
||||
})
|
||||
}
|
||||
msghub.OnKeyOrderStatusChanged(savedOrderInfo.order)
|
||||
}
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user