- timer task shceuled to order goroutine to avoid concurrent problem.
This commit is contained in:
@@ -5,7 +5,7 @@ import (
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/baseapi/utils/routinepool"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/scheduler"
|
||||
_ "git.rosy.net.cn/jx-callback/business/scheduler/defsch" // 导入缺省订单调度器
|
||||
@@ -20,11 +20,9 @@ const (
|
||||
var (
|
||||
OrderManager *OrderController
|
||||
WaybillManager *WaybillController
|
||||
routinePool *routinepool.Pool
|
||||
)
|
||||
|
||||
func init() {
|
||||
routinePool = routinepool.New(1000, 1000)
|
||||
OrderManager = NewOrderManager()
|
||||
WaybillManager = NewWaybillManager()
|
||||
scheduler.CurrentScheduler.RegisterOrderManager(OrderManager)
|
||||
@@ -51,13 +49,6 @@ func addOrderOrWaybillStatus(status *model.OrderStatus, db orm.Ormer) (isDuplica
|
||||
return isDuplicated, err
|
||||
}
|
||||
|
||||
func CallMsgHandler(handler func(), primaryID string) {
|
||||
// handler()
|
||||
routinePool.CallFun(func() {
|
||||
handler()
|
||||
}, primaryID)
|
||||
}
|
||||
|
||||
func GetDataCityCodeFromOrder(order *model.GoodsOrder) (retVal string, err error) {
|
||||
var sql string
|
||||
if order.VendorID == model.VendorIDJD {
|
||||
@@ -110,47 +101,47 @@ func LoadPendingOrders() {
|
||||
orderNew := *order
|
||||
orderNew.Status = model.OrderStatusNew
|
||||
orderNew.StatusTime = order.OrderCreatedAt
|
||||
routinePool.CallFunAsync(func() {
|
||||
jxutils.CallMsgHandlerAsync(func() {
|
||||
scheduler.CurrentScheduler.OnOrderNew(&orderNew)
|
||||
}, order.VendorOrderID)
|
||||
for _, bill := range billsMap[order.VendorOrderID] {
|
||||
if order.Status > model.OrderStatusNew && !isNoNewSent && order.StatusTime.Sub(bill.WaybillCreatedAt) < 0 {
|
||||
isNoNewSent = true
|
||||
order2 := *order
|
||||
routinePool.CallFunAsync(func() {
|
||||
jxutils.CallMsgHandlerAsync(func() {
|
||||
scheduler.CurrentScheduler.OnOrderStatusChanged(model.Order2Status(&order2))
|
||||
}, order.VendorOrderID)
|
||||
}
|
||||
billNew := *bill
|
||||
billNew.Status = model.OrderStatusNew
|
||||
billNew.StatusTime = order.OrderCreatedAt
|
||||
routinePool.CallFunAsync(func() {
|
||||
jxutils.CallMsgHandlerAsync(func() {
|
||||
scheduler.CurrentScheduler.OnWaybillStatusChanged(&billNew)
|
||||
}, bill.VendorOrderID)
|
||||
if order.Status > model.OrderStatusNew && !isNoNewSent && order.StatusTime.Sub(bill.StatusTime) < 0 {
|
||||
isNoNewSent = true
|
||||
order2 := *order
|
||||
routinePool.CallFunAsync(func() {
|
||||
jxutils.CallMsgHandlerAsync(func() {
|
||||
scheduler.CurrentScheduler.OnOrderStatusChanged(model.Order2Status(&order2))
|
||||
}, order.VendorOrderID)
|
||||
}
|
||||
if bill.Status > model.WaybillStatusNew {
|
||||
bill2 := *bill
|
||||
routinePool.CallFunAsync(func() {
|
||||
jxutils.CallMsgHandlerAsync(func() {
|
||||
scheduler.CurrentScheduler.OnWaybillStatusChanged(&bill2)
|
||||
}, bill.VendorOrderID)
|
||||
}
|
||||
if order.Status > model.OrderStatusNew && !isNoNewSent {
|
||||
isNoNewSent = true
|
||||
order2 := *order
|
||||
routinePool.CallFunAsync(func() {
|
||||
jxutils.CallMsgHandlerAsync(func() {
|
||||
scheduler.CurrentScheduler.OnOrderStatusChanged(model.Order2Status(&order2))
|
||||
}, order.VendorOrderID)
|
||||
}
|
||||
}
|
||||
if order.Status > model.OrderStatusNew && !isNoNewSent {
|
||||
order2 := *order
|
||||
routinePool.CallFunAsync(func() {
|
||||
jxutils.CallMsgHandlerAsync(func() {
|
||||
scheduler.CurrentScheduler.OnOrderStatusChanged(model.Order2Status(&order2))
|
||||
}, order.VendorOrderID)
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ func init() {
|
||||
}
|
||||
|
||||
func (c *WaybillController) OnWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) {
|
||||
controller.CallMsgHandler(func() {
|
||||
jxutils.CallMsgHandler(func() {
|
||||
retVal = c.onWaybillMsg(msg)
|
||||
}, msg.OrderID)
|
||||
return retVal
|
||||
|
||||
@@ -3,7 +3,6 @@ package elm
|
||||
import (
|
||||
"git.rosy.net.cn/baseapi/platformapi/elmapi"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/controller"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
)
|
||||
@@ -46,7 +45,7 @@ func (c *Controller) OnCallbackMsg(msg *elmapi.CallbackMsg) (retVal *elmapi.Call
|
||||
retVal = elmapi.Err2CallbackResponse(err, "")
|
||||
} else {
|
||||
innerMsg.MsgType = msg.Type
|
||||
controller.CallMsgHandler(func() {
|
||||
jxutils.CallMsgHandler(func() {
|
||||
retVal = new(OrderController).onOrderUserUrgeOrder(&innerMsg)
|
||||
}, jxutils.ComposeUniversalOrderID(innerMsg.OrderID, model.VendorIDELM))
|
||||
}
|
||||
|
||||
@@ -43,21 +43,21 @@ func init() {
|
||||
}
|
||||
|
||||
func (c *OrderController) OnOrderStatusMsg(msg *elmapi.CallbackOrderStatusMsg) (retVal *elmapi.CallbackResponse) {
|
||||
controller.CallMsgHandler(func() {
|
||||
jxutils.CallMsgHandler(func() {
|
||||
retVal = c.onOrderStatusMsg(msg)
|
||||
}, jxutils.ComposeUniversalOrderID(msg.OrderID, model.VendorIDELM))
|
||||
return retVal
|
||||
}
|
||||
|
||||
func (c *OrderController) OnOrderNewMsg(msg map[string]interface{}) (retVal *elmapi.CallbackResponse) {
|
||||
controller.CallMsgHandler(func() {
|
||||
jxutils.CallMsgHandler(func() {
|
||||
retVal = c.onOrderNew(msg)
|
||||
}, jxutils.ComposeUniversalOrderID(msg["orderId"].(string), model.VendorIDELM))
|
||||
return retVal
|
||||
}
|
||||
|
||||
func (c *OrderController) OnOrderCancelRefundMsg(msg *elmapi.CallbackOrderCancelRefundMsg) (retVal *elmapi.CallbackResponse) {
|
||||
controller.CallMsgHandler(func() {
|
||||
jxutils.CallMsgHandler(func() {
|
||||
retVal = c.onOrderCancelRefundMsg(msg)
|
||||
}, jxutils.ComposeUniversalOrderID(msg.OrderID, model.VendorIDELM))
|
||||
return retVal
|
||||
|
||||
@@ -15,7 +15,7 @@ type WaybillController struct {
|
||||
}
|
||||
|
||||
func (c *WaybillController) OnWaybillStatusMsg(msg *elmapi.CallbackWaybillStatusMsg) (retVal *elmapi.CallbackResponse) {
|
||||
controller.CallMsgHandler(func() {
|
||||
jxutils.CallMsgHandler(func() {
|
||||
retVal = c.onWaybillStatusMsg(msg)
|
||||
}, jxutils.ComposeUniversalOrderID(msg.OrderID, model.VendorIDELM))
|
||||
return retVal
|
||||
|
||||
@@ -36,7 +36,7 @@ func init() {
|
||||
}
|
||||
|
||||
func (c *OrderController) OnOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
||||
controller.CallMsgHandler(func() {
|
||||
jxutils.CallMsgHandler(func() {
|
||||
retVal = c.onOrderMsg(msg)
|
||||
}, jxutils.ComposeUniversalOrderID(msg.BillID, model.VendorIDJD))
|
||||
return retVal
|
||||
|
||||
@@ -13,7 +13,7 @@ type WaybillController struct {
|
||||
}
|
||||
|
||||
func (c *WaybillController) OnWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) {
|
||||
controller.CallMsgHandler(func() {
|
||||
jxutils.CallMsgHandler(func() {
|
||||
retVal = c.onWaybillMsg(msg)
|
||||
}, jxutils.ComposeUniversalOrderID(msg.OrderID, model.VendorIDJD))
|
||||
return retVal
|
||||
|
||||
@@ -23,14 +23,14 @@ func init() {
|
||||
}
|
||||
|
||||
func (c *WaybillController) OnWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *mtpsapi.CallbackResponse) {
|
||||
controller.CallMsgHandler(func() {
|
||||
jxutils.CallMsgHandler(func() {
|
||||
retVal = c.onWaybillMsg(msg)
|
||||
}, msg.OrderID)
|
||||
return retVal
|
||||
}
|
||||
|
||||
func (c *WaybillController) OnWaybillExcept(msg *mtpsapi.CallbackOrderExceptionMsg) (retVal *mtpsapi.CallbackResponse) {
|
||||
controller.CallMsgHandler(func() {
|
||||
jxutils.CallMsgHandler(func() {
|
||||
order := &model.Waybill{
|
||||
VendorWaybillID: msg.MtPeisongID,
|
||||
VendorWaybillID2: utils.Int64ToStr(msg.DeliveryID),
|
||||
|
||||
Reference in New Issue
Block a user