- sync.SyncSku add param isContinueWhenError

This commit is contained in:
gazebo
2019-01-18 10:33:28 +08:00
parent 7d1f0e294d
commit 4105497874
4 changed files with 16 additions and 15 deletions

View File

@@ -469,7 +469,7 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s
return nil, ErrEntityNotExist
}
outSkuNameExt = tmpInfo.SkuNames[0]
_, err = CurVendorSync.SyncSku(ctx, db, outSkuNameExt.SkuName.ID, -1, false, userName)
_, err = CurVendorSync.SyncSku(ctx, db, outSkuNameExt.SkuName.ID, -1, false, false, userName)
return outSkuNameExt, err
}
@@ -507,7 +507,7 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
}, model.FieldJdSyncStatus)
if err == nil {
dao.Commit(db)
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, userName)
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
}
}
}
@@ -546,7 +546,7 @@ func DeleteSkuName(ctx *jxcontext.Context, nameID int, userName string) (num int
}
dao.Commit(db)
if numSku > 0 {
_, err = CurVendorSync.SyncSku(ctx, db, skuName.ID, -1, false, userName)
_, err = CurVendorSync.SyncSku(ctx, db, skuName.ID, -1, false, false, userName)
}
return num, err
}
@@ -571,7 +571,7 @@ func AddSku(ctx *jxcontext.Context, nameID int, sku *model.Sku, userName string)
if err = err2; err == nil {
if result.TotalCount == 1 {
outSkuNameExt = result.SkuNames[0]
_, err = CurVendorSync.SyncSku(ctx, db, outSkuNameExt.SkuName.ID, sku.ID, false, userName)
_, err = CurVendorSync.SyncSku(ctx, db, outSkuNameExt.SkuName.ID, sku.ID, false, false, userName)
} else {
err = ErrEntityNotExist
}
@@ -602,7 +602,7 @@ func UpdateSku(ctx *jxcontext.Context, skuID int, payload map[string]interface{}
return 0, err
}
dao.Commit(db)
_, err = CurVendorSync.SyncSku(ctx, db, -1, sku.ID, false, userName)
_, err = CurVendorSync.SyncSku(ctx, db, -1, sku.ID, false, false, userName)
} else {
err = ErrEntityNotExist
}
@@ -627,7 +627,7 @@ func DeleteSku(ctx *jxcontext.Context, skuID int, userName string) (num int64, e
}, userName, nil); err == nil {
dao.Commit(db)
if num == 1 {
_, err = CurVendorSync.SyncSku(ctx, db, -1, sku.ID, false, userName)
_, err = CurVendorSync.SyncSku(ctx, db, -1, sku.ID, false, false, userName)
} else {
err = ErrEntityNotExist
}
@@ -684,7 +684,7 @@ func AddSkuNamePlace(ctx *jxcontext.Context, nameID, placeCode int, userName str
}
dao.WrapAddIDCULEntity(placeBind, userName)
if err = dao.CreateEntity(db, placeBind); err == nil {
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, userName)
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
}
return placeBind, err
}
@@ -696,7 +696,7 @@ func DeleteSkuNamePlace(ctx *jxcontext.Context, nameID, placeCode int, userName
placeBind.PlaceCode = placeCode
if num, err = dao.DeleteEntity(db, placeBind, model.FieldNameID, model.FieldPlaceCode); err == nil {
if num == 1 {
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, userName)
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
} else {
err = ErrEntityNotExist
}

View File

@@ -232,7 +232,7 @@ func (v *VendorSync) SyncStore(ctx *jxcontext.Context, db *dao.DaoDB, vendorID,
return hint, err
}
func (v *VendorSync) SyncSku(ctx *jxcontext.Context, db *dao.DaoDB, nameID, skuID int, isAsync bool, userName string) (hint string, err error) {
func (v *VendorSync) SyncSku(ctx *jxcontext.Context, db *dao.DaoDB, nameID, skuID int, isAsync, isContinueWhenError bool, userName string) (hint string, err error) {
globals.SugarLogger.Debugf("SyncSku, nameID:%d, skuID:%d, userName:%s", nameID, skuID, userName)
return v.LoopMultiStoresVendors(ctx, db, "SyncSku", isAsync, userName, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
multiStoresHandler := v.GetMultiStoreHandler(batchItemList[0].(int))
@@ -250,7 +250,7 @@ func (v *VendorSync) SyncSku(ctx *jxcontext.Context, db *dao.DaoDB, nameID, skuI
sort.Sort(jxutils.SkuList(skuList))
// globals.SugarLogger.Debug(utils.Format4Output(skuList, false))
// todo 这里SetParallelCount(1)的原因是京东SPU特殊类型必须要序列化同步才能正常处理, db可能会有多线程问题
task := tasksch.NewParallelTask("SyncSku loop sku", tasksch.NewParallelConfig().SetParallelCount(1), userName, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
task := tasksch.NewParallelTask("SyncSku loop sku", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), userName, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
sku := batchItemList[0].(*model.Sku)
syncStatus := jxutils.GetObjFieldByName(sku, syncStatusFieldName).(int8)
if (skuID == -1 || skuID == sku.ID) && (syncStatus != 0) {

View File

@@ -304,7 +304,7 @@ func Convert2JDSPU(ctx *jxcontext.Context, count int, isAsync, isContinueWhenErr
}
rootTask := tasksch.NewParallelTask("Convert2JDSPU", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx.GetUserName(), func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
skuName := batchItemList[0].(*model.SkuName)
_, err = cms.CurVendorSync.SyncSku(ctx, db, skuName.ID, -1, false, ctx.GetUserName())
_, err = cms.CurVendorSync.SyncSku(ctx, db, skuName.ID, -1, false, isContinueWhenError, ctx.GetUserName())
return nil, err
}, skuNameList)
tasksch.ManageTask(rootTask).Run()

View File

@@ -303,16 +303,17 @@ func (c *SkuController) GetVendorSku() {
// @Title 同步商家SKU
// @Description 同步商家SKU
// @Param token header string true "认证token"
// @Param nameID query int true "name ID, -1表示所有"
// @Param skuID query int true "sku ID, -1表示所有"
// @Param isAsync query bool false "是否异步"
// @Param nameID formData int true "name ID, -1表示所有"
// @Param skuID formData int true "sku ID, -1表示所有"
// @Param isAsync formData bool false "是否异步"
// @Param isContinueWhenError formData bool false "单个同步失败是否继续缺省false"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /SyncSku [put]
func (c *SkuController) SyncSku() {
c.callSyncSku(func(params *tSkuSyncSkuParams) (retVal interface{}, errCode string, err error) {
db := dao.GetDB()
retVal, err = cms.CurVendorSync.SyncSku(params.Ctx, db, params.NameID, params.SkuID, params.IsAsync, params.Ctx.GetUserName())
retVal, err = cms.CurVendorSync.SyncSku(params.Ctx, db, params.NameID, params.SkuID, params.IsAsync, params.IsContinueWhenError, params.Ctx.GetUserName())
return retVal, "", err
})
}