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