- fix bug in onWaybillNew, jd and elm self waybillID always as orderID
This commit is contained in:
@@ -56,7 +56,7 @@ func (c *OrderController) OnOrderNew(order *model.GoodsOrder, msgVendorStatus st
|
||||
status.VendorStatus = msgVendorStatus
|
||||
isDuplicated, err := addOrderOrWaybillStatus(status, db)
|
||||
if err == nil && !isDuplicated {
|
||||
if err = c.saveOrder(order, false, db); err == nil {
|
||||
if isDuplicated, err = c.saveOrder(order, false, db); err == nil && !isDuplicated {
|
||||
err = scheduler.CurrentScheduler.OnOrderNew(order, false)
|
||||
weixinmsg.NotifyNewOrder(order)
|
||||
}
|
||||
@@ -89,7 +89,7 @@ func (c *OrderController) OnOrderAdjust(order *model.GoodsOrder, msgVendorStatus
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err = c.saveOrder(order, true, db); err == nil {
|
||||
if isDuplicated, err = c.saveOrder(order, true, db); err == nil && !isDuplicated {
|
||||
// 因为订单调度器需要的是真实状态,所以用order的状态
|
||||
err = scheduler.CurrentScheduler.OnOrderNew(order, false)
|
||||
err = scheduler.CurrentScheduler.OnOrderStatusChanged(model.Order2Status(order), false)
|
||||
@@ -111,7 +111,7 @@ func (c *OrderController) OnOrderStatusChanged(orderStatus *model.OrderStatus) (
|
||||
}
|
||||
|
||||
// private
|
||||
func (c *OrderController) saveOrder(order *model.GoodsOrder, isAdjust bool, db orm.Ormer) (err error) {
|
||||
func (c *OrderController) saveOrder(order *model.GoodsOrder, isAdjust bool, db orm.Ormer) (isDuplicated bool, err error) {
|
||||
// 忽略查找JX信息错误
|
||||
c.updateOrderOtherInfo(order, db)
|
||||
order.ID = 0
|
||||
@@ -157,6 +157,7 @@ func (c *OrderController) saveOrder(order *model.GoodsOrder, isAdjust bool, db o
|
||||
}
|
||||
}
|
||||
} else {
|
||||
isDuplicated = true
|
||||
order.DuplicatedCount++
|
||||
db.Update(order, "DuplicatedCount")
|
||||
db.Commit()
|
||||
@@ -166,7 +167,7 @@ func (c *OrderController) saveOrder(order *model.GoodsOrder, isAdjust bool, db o
|
||||
db.Rollback()
|
||||
globals.SugarLogger.Warnf("saveOrder create order:%v, error:%v", order, err)
|
||||
}
|
||||
return err
|
||||
return isDuplicated, err
|
||||
}
|
||||
|
||||
func (c *OrderController) updateOrderSkuOtherInfo(orderSkus []*model.OrderSku, db orm.Ormer) (err error) {
|
||||
|
||||
@@ -40,22 +40,33 @@ func (w *WaybillController) LoadPendingWaybills() []*model.Waybill {
|
||||
return bills
|
||||
}
|
||||
|
||||
func (w *WaybillController) onWaybillNew(bill *model.Waybill, db orm.Ormer) (isDuplicated bool, err error) {
|
||||
isDuplicated, err = addOrderOrWaybillStatus(model.Waybill2Status(bill), db)
|
||||
func (w *WaybillController) onWaybillNew(bill2 *model.Waybill, db orm.Ormer) (isDuplicated bool, err error) {
|
||||
globals.SugarLogger.Debugf("onWaybillNew bill:%v", bill2)
|
||||
isDuplicated, err = addOrderOrWaybillStatus(model.Waybill2Status(bill2), db)
|
||||
if err == nil && !isDuplicated {
|
||||
bill.ID = 0
|
||||
bill.WaybillCreatedAt = bill.StatusTime
|
||||
bill.WaybillFinishedAt = utils.DefaultTimeValue
|
||||
globals.SugarLogger.Debugf("onWaybillNew bill:%v", bill)
|
||||
bill2.ID = 0
|
||||
bill2.WaybillCreatedAt = bill2.StatusTime
|
||||
bill2.WaybillFinishedAt = utils.DefaultTimeValue
|
||||
billCopied := *bill2
|
||||
bill := &billCopied
|
||||
created, _, err2 := db.ReadOrCreate(bill, "VendorWaybillID", "WaybillVendorID")
|
||||
if err = err2; err == nil {
|
||||
if !created {
|
||||
bill.DuplicatedCount++
|
||||
db.Update(bill, "DuplicatedCount")
|
||||
globals.SugarLogger.Infof("onWaybillNew duplicated bill:%v msg received", bill)
|
||||
if bill2.VendorOrderID == bill2.VendorWaybillID { // 购物平台(比如京东)重新建的运单,单号始终是与订单相同的
|
||||
bill2.ID = bill.ID
|
||||
bill2.DuplicatedCount = bill.DuplicatedCount
|
||||
db.Update(bill2) //更新所有字段
|
||||
} else {
|
||||
db.Update(bill, "DuplicatedCount")
|
||||
isDuplicated = true
|
||||
globals.SugarLogger.Infof("onWaybillNew duplicated bill:%v msg received", bill2)
|
||||
}
|
||||
} else {
|
||||
*bill2 = *bill
|
||||
}
|
||||
} else {
|
||||
globals.SugarLogger.Warnf("onWaybillNew create bill:%v, error:%v", bill, err)
|
||||
globals.SugarLogger.Warnf("onWaybillNew create bill:%v, error:%v", bill2, err)
|
||||
}
|
||||
}
|
||||
return isDuplicated, err
|
||||
|
||||
@@ -243,6 +243,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
||||
func (s *DefScheduler) addWaybill2Map(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) {
|
||||
for _, v := range savedOrderInfo.waybills {
|
||||
if v.VendorWaybillID == bill.VendorWaybillID && v.WaybillVendorID == bill.WaybillVendorID {
|
||||
*v = *bill // 同步数据
|
||||
// 如果已经存在,不做处理
|
||||
globals.SugarLogger.Warnf("addWaybill2Map bill:%v already exists", bill)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user