diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index dd3ac73b5..3e69bd1dc 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -1021,11 +1021,24 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs setStoreSkuBindStatus(skuBind, model.SyncFlagNewMask) dao.WrapAddIDCULDEntity(skuBind, userName) globals.SugarLogger.Debug(utils.Format4Output(skuBind, false)) - if err = dao.CreateEntity(db, skuBind); err != nil { - dao.Rollback(db) - return nil, err + if deletedSku := dao.GetDeletedStoreSkuBind(db, skuBind.StoreID, skuBind.SkuID); deletedSku == nil { + if err = dao.CreateEntity(db, skuBind); err != nil { + dao.Rollback(db) + return nil, err + } + num = 1 + } else { + // 需要处理,在删除某个门店商品,同步失败的情况下,又把商品重新关注。 + // 所以统一处理成恢复删除的记录,这样避免问题 + skuBind.ID = deletedSku.ID + // vendorSkuID的赋值意义不大 + skuBind.MtwmID = deletedSku.MtwmID + skuBind.EbaiID = deletedSku.EbaiID + if num, err = dao.UpdateEntity(db, skuBind); err != nil { + dao.Rollback(db) + return nil, err + } } - num = 1 } } else { skuBind = &v.StoreSkuBind diff --git a/business/model/dao/store_sku_test.go b/business/model/dao/store_sku_test.go index cf9e569d8..9ef743329 100644 --- a/business/model/dao/store_sku_test.go +++ b/business/model/dao/store_sku_test.go @@ -23,3 +23,8 @@ func TestGetStoreSkus(t *testing.T) { } globals.SugarLogger.Debug(utils.Format4Output(skuList, false)) } + +func TestGetDeletedStoreSkuBind(t *testing.T) { + storeSkuBind := GetDeletedStoreSkuBind(GetDB(), 100123, 30648) + globals.SugarLogger.Debug(utils.Format4Output(storeSkuBind, false)) +}