- GetStatusDuplicatedCount
- 提前判断消息是否重复,防止一些事件在判断是否重复前已经超时
This commit is contained in:
@@ -102,6 +102,17 @@ func addOrderOrWaybillStatus(status *model.OrderStatus, db *dao.DaoDB) (isDuplic
|
|||||||
return isDuplicated, err
|
return isDuplicated, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *OrderManager) GetStatusDuplicatedCount(status *model.OrderStatus) (duplicatedCount int) {
|
||||||
|
if status == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
db := dao.GetDB()
|
||||||
|
if err := dao.GetEntity(db, status, "VendorOrderID", "VendorID", "OrderType", "VendorStatus", "StatusTime"); err == nil {
|
||||||
|
return status.DuplicatedCount
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
// todo 最好还是改成全事件回放算了
|
// todo 最好还是改成全事件回放算了
|
||||||
func LoadPendingOrders() {
|
func LoadPendingOrders() {
|
||||||
orders := FixedOrderManager.LoadPendingOrders()
|
orders := FixedOrderManager.LoadPendingOrders()
|
||||||
|
|||||||
@@ -159,6 +159,8 @@ type IOrderManager interface {
|
|||||||
OnAfsOrderStatusChanged(orderStatus *model.OrderStatus) (err error)
|
OnAfsOrderStatusChanged(orderStatus *model.OrderStatus) (err error)
|
||||||
LoadAfsOrder(vendorAfsOrderID string, vendorID int) (afsOrder *model.AfsOrder, err error)
|
LoadAfsOrder(vendorAfsOrderID string, vendorID int) (afsOrder *model.AfsOrder, err error)
|
||||||
UpdateAfsOrderFields(afsOrder *model.AfsOrder, fieldList []string) (err error)
|
UpdateAfsOrderFields(afsOrder *model.AfsOrder, fieldList []string) (err error)
|
||||||
|
|
||||||
|
GetStatusDuplicatedCount(status *model.OrderStatus) (duplicatedCount int)
|
||||||
}
|
}
|
||||||
|
|
||||||
type IStoreManager interface {
|
type IStoreManager interface {
|
||||||
|
|||||||
@@ -298,11 +298,14 @@ func (c *PurchaseHandler) onOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiapi.
|
|||||||
if c.isAfsMsg(msg) {
|
if c.isAfsMsg(msg) {
|
||||||
retVal = c.OnAfsOrderMsg(msg)
|
retVal = c.OnAfsOrderMsg(msg)
|
||||||
} else {
|
} else {
|
||||||
|
status := c.callbackMsg2Status(msg)
|
||||||
|
if partner.CurOrderManager.GetStatusDuplicatedCount(status) > 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
if ebaiapi.CmdOrderCreate == msg.Cmd {
|
if ebaiapi.CmdOrderCreate == msg.Cmd {
|
||||||
retVal = c.onOrderNew(msg)
|
retVal = c.onOrderNew(msg)
|
||||||
} else {
|
} else {
|
||||||
var err error
|
var err error
|
||||||
status := c.callbackMsg2Status(msg)
|
|
||||||
if status != nil {
|
if status != nil {
|
||||||
if status.Status == model.OrderStatusAdjust {
|
if status.Status == model.OrderStatusAdjust {
|
||||||
var order *model.GoodsOrder
|
var order *model.GoodsOrder
|
||||||
|
|||||||
@@ -42,6 +42,10 @@ func (c *PurchaseHandler) OnOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) onOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
func (c *PurchaseHandler) onOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
||||||
|
status := c.callbackMsg2Status(msg)
|
||||||
|
if partner.CurOrderManager.GetStatusDuplicatedCount(status) > 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
if msg.MsgURL == jdapi.CallbackMsgOrderAccounting {
|
if msg.MsgURL == jdapi.CallbackMsgOrderAccounting {
|
||||||
retVal = c.OnFinancialMsg(msg)
|
retVal = c.OnFinancialMsg(msg)
|
||||||
} else if msg.MsgURL == jdapi.CallbackMsgAfterSaleBillStatus {
|
} else if msg.MsgURL == jdapi.CallbackMsgAfterSaleBillStatus {
|
||||||
@@ -53,7 +57,6 @@ func (c *PurchaseHandler) onOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi
|
|||||||
} else if jdapi.OrderStatusAdjust == msg.StatusID {
|
} else if jdapi.OrderStatusAdjust == msg.StatusID {
|
||||||
retVal = c.onOrderAdjust(msg)
|
retVal = c.onOrderAdjust(msg)
|
||||||
} else {
|
} else {
|
||||||
status := c.callbackMsg2Status(msg)
|
|
||||||
if msg.StatusID == jdapi.OrderStatusAddComment || msg.StatusID == jdapi.OrderStatusModifyComment {
|
if msg.StatusID == jdapi.OrderStatusAddComment || msg.StatusID == jdapi.OrderStatusModifyComment {
|
||||||
utils.CallFuncAsync(func() {
|
utils.CallFuncAsync(func() {
|
||||||
c.onOrderComment2(msg)
|
c.onOrderComment2(msg)
|
||||||
|
|||||||
@@ -184,6 +184,10 @@ func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmap
|
|||||||
if c.isAfsMsg(msg) {
|
if c.isAfsMsg(msg) {
|
||||||
response = c.OnAfsOrderMsg(msg)
|
response = c.OnAfsOrderMsg(msg)
|
||||||
} else {
|
} else {
|
||||||
|
status := c.callbackMsg2Status(msg)
|
||||||
|
if partner.CurOrderManager.GetStatusDuplicatedCount(status) > 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
if msg.Cmd == mtwmapi.MsgTypeNewOrder {
|
if msg.Cmd == mtwmapi.MsgTypeNewOrder {
|
||||||
order, orderMap, err2 := c.getOrder(GetOrderIDFromMsg(msg))
|
order, orderMap, err2 := c.getOrder(GetOrderIDFromMsg(msg))
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
@@ -199,7 +203,7 @@ func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmap
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if status := c.callbackMsg2Status(msg); status != nil {
|
if status != nil {
|
||||||
if status.Status == model.OrderStatusAdjust {
|
if status.Status == model.OrderStatusAdjust {
|
||||||
var order *model.GoodsOrder
|
var order *model.GoodsOrder
|
||||||
if order, err = c.GetOrder(GetOrderIDFromMsg(msg)); err == nil {
|
if order, err = c.GetOrder(GetOrderIDFromMsg(msg)); err == nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user