冲突处理

This commit is contained in:
苏尹岚
2020-01-06 08:54:48 +08:00
10 changed files with 173 additions and 66 deletions

View File

@@ -325,6 +325,7 @@ func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db *dao.
if len(vendorSkuIDs) > 0 {
l, err := dao.GetStoreSkuPriceAndWeight(db, order.VendorStoreID, order.VendorID, vendorSkuIDs)
if err != nil {
globals.SugarLogger.Warnf("updateOrderSkuOtherInfo orderID:%s failed with err:%v", order.VendorOrderID, err)
return err
}
skumapper := storeSkuPriceAndWeight2Map(l)
@@ -808,3 +809,55 @@ func AddUpdateOrdersSupplement(ctx *jxcontext.Context, ordersSupplement *model.O
dao.Commit(db)
return num, err
}
func RefreshOrdersPriceInfo(ctx *jxcontext.Context, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) {
if utils.IsTimeZero(fromTime) {
return "", fmt.Errorf("必须指定起始时间")
}
if utils.IsTimeZero(toTime) {
toTime = fromTime
}
db := dao.GetDB()
orderList, err := dao.QueryOrders(db, "", 0, nil, 0, fromTime, toTime)
if err == nil && len(orderList) > 0 {
task := tasksch.NewParallelTask("RefreshOrdersPriceInfo", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
curOrder := batchItemList[0].(*model.GoodsOrder)
newOrder, err := FixedOrderManager.LoadOrder(curOrder.VendorOrderID, curOrder.VendorID)
if err == nil {
db := dao.GetDB()
if err = FixedOrderManager.updateOrderOtherInfo(newOrder, db); err == nil {
dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
panic(r)
}
}()
if _, err = dao.UpdateEntity(db, newOrder); err != nil {
dao.Rollback(db)
return nil, err
}
for _, sku := range newOrder.Skus {
if _, err = dao.UpdateEntity(db, sku); err != nil {
dao.Rollback(db)
return nil, err
}
}
dao.Commit(db)
}
}
return retVal, err
}, orderList)
tasksch.HandleTask(task, nil, true).Run()
if isAsync {
hint = task.GetID()
} else {
_, err = task.GetResult(0)
hint = "1"
}
}
return hint, err
}

View File

@@ -250,6 +250,7 @@ func (c *OrderManager) updateAfsOrderSkuOtherInfo(db *dao.DaoDB, order *model.Af
if len(vendorSkuIDs) > 0 {
l, err := dao.GetStoreSkuPriceAndWeight(db, order.VendorStoreID, order.VendorID, vendorSkuIDs)
if err != nil {
globals.SugarLogger.Warnf("updateAfsOrderSkuOtherInfo orderID:%s failed with err:%v", order.VendorOrderID, err)
return err
}
skumapper := storeSkuPriceAndWeight2Map(l)