- 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 return nil, ErrEntityNotExist
} }
outSkuNameExt = tmpInfo.SkuNames[0] 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 return outSkuNameExt, err
} }
@@ -507,7 +507,7 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
}, model.FieldJdSyncStatus) }, model.FieldJdSyncStatus)
if err == nil { if err == nil {
dao.Commit(db) 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) dao.Commit(db)
if numSku > 0 { 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 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 err = err2; err == nil {
if result.TotalCount == 1 { if result.TotalCount == 1 {
outSkuNameExt = result.SkuNames[0] 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 { } else {
err = ErrEntityNotExist err = ErrEntityNotExist
} }
@@ -602,7 +602,7 @@ func UpdateSku(ctx *jxcontext.Context, skuID int, payload map[string]interface{}
return 0, err return 0, err
} }
dao.Commit(db) 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 { } else {
err = ErrEntityNotExist err = ErrEntityNotExist
} }
@@ -627,7 +627,7 @@ func DeleteSku(ctx *jxcontext.Context, skuID int, userName string) (num int64, e
}, userName, nil); err == nil { }, userName, nil); err == nil {
dao.Commit(db) dao.Commit(db)
if num == 1 { 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 { } else {
err = ErrEntityNotExist err = ErrEntityNotExist
} }
@@ -684,7 +684,7 @@ func AddSkuNamePlace(ctx *jxcontext.Context, nameID, placeCode int, userName str
} }
dao.WrapAddIDCULEntity(placeBind, userName) dao.WrapAddIDCULEntity(placeBind, userName)
if err = dao.CreateEntity(db, placeBind); err == nil { 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 return placeBind, err
} }
@@ -696,7 +696,7 @@ func DeleteSkuNamePlace(ctx *jxcontext.Context, nameID, placeCode int, userName
placeBind.PlaceCode = placeCode placeBind.PlaceCode = placeCode
if num, err = dao.DeleteEntity(db, placeBind, model.FieldNameID, model.FieldPlaceCode); err == nil { if num, err = dao.DeleteEntity(db, placeBind, model.FieldNameID, model.FieldPlaceCode); err == nil {
if num == 1 { if num == 1 {
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, userName) _, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
} else { } else {
err = ErrEntityNotExist err = ErrEntityNotExist
} }

View File

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

View File

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