diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index ed9717448..b54947091 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -87,7 +87,7 @@ func AddCategory(ctx *jxcontext.Context, cat *model.SkuCategory, userName string dao.WrapAddIDCULDEntity(cat, userName) cat.JdSyncStatus = model.SyncFlagNewMask - cat.JdID = 0 //jxutils.GenFakeID() + cat.JdID = 0 cat.Name = strings.Trim(cat.Name, " ") if cat.Seq <= 0 { var maxSeq struct { @@ -579,7 +579,6 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s dao.Rollback(db) return nil, err } - // beginJDID := jxutils.GenFakeID() for _, sku := range skuNameExt.Skus { dao.WrapAddIDCULDEntity(sku, userName) sku.NameID = skuNameExt.ID @@ -589,7 +588,6 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s dao.Rollback(db) return nil, err } - // beginJDID++ } for _, placeCode := range skuNameExt.Places { placeBind := &model.SkuNamePlaceBind{} @@ -786,7 +784,7 @@ func AddSku(ctx *jxcontext.Context, nameID int, sku *model.Sku, userName string) dao.WrapAddIDCULDEntity(sku, userName) sku.JdSyncStatus = model.SyncFlagNewMask sku.NameID = nameID - sku.JdID = 0 //jxutils.GenFakeID() + sku.JdID = 0 if err = dao.CreateEntity(db, sku); err == nil { result, err2 := GetSkuNames(ctx, "", false, utils.Params2Map("skuID", sku.ID), 0, 0) if err = err2; err == nil { diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index fe98f44b0..b4130793d 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -81,14 +81,14 @@ func Init() { } func (p *MultiStoreHandlerWrapper) DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error) { - if jxutils.IsFakeID(cat.JdID) { + if jxutils.IsEmptyID(cat.JdID) { return nil } return p.IMultipleStoresHandler.DeleteCategory(db, cat, userName) } func (p *MultiStoreHandlerWrapper) UpdateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error) { - if jxutils.IsFakeID(cat.JdID) { + if jxutils.IsEmptyID(cat.JdID) { globals.SugarLogger.Warnf("UpdateCategory fakeid cat:%s should not get here", utils.Format4Output(cat, true)) return nil } @@ -97,14 +97,14 @@ func (p *MultiStoreHandlerWrapper) UpdateCategory(db *dao.DaoDB, cat *model.SkuC func (p *MultiStoreHandlerWrapper) DeleteSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) { globals.SugarLogger.Debugf("wrapper DeleteSku, sku:%s", utils.Format4Output(sku, false)) - if jxutils.IsFakeID(sku.JdID) { + if jxutils.IsEmptyID(sku.JdID) { return nil } return p.IMultipleStoresHandler.DeleteSku(db, sku, userName) } func (p *MultiStoreHandlerWrapper) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) { - if jxutils.IsFakeID(sku.JdID) { + if jxutils.IsEmptyID(sku.JdID) { globals.SugarLogger.Warnf("UpdateSku fakeid sku:%s should not get here", utils.Format4Output(sku, true)) return nil } diff --git a/business/jxstore/initdata/initdata.go b/business/jxstore/initdata/initdata.go index 4f1325fe3..ea622f951 100644 --- a/business/jxstore/initdata/initdata.go +++ b/business/jxstore/initdata/initdata.go @@ -163,7 +163,7 @@ func RefreshSkuNameImg(ctx *jxcontext.Context, parentTask tasksch.ITask, isForce task := tasksch.NewParallelTask("RefreshSkuNameImg", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { skuName := batchItemList[0].(*model.SkuName) - if !jxutils.IsFakeID(skuName.JdID) { + if !jxutils.IsEmptyID(skuName.JdID) { if skuName.Img == "" || isForce { var imgList []*jdapi.SkuPageImg if imgList, err = api.JdAPI.GetSkuPageImageInfo(skuName.JdID); err == nil { diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 2e3f2f960..c9c9d7324 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -104,7 +104,7 @@ func Convert2JDSPU(ctx *jxcontext.Context, count int, isAsync, isContinueWhenErr skuNew2 := *sku skuNew := &skuNew2 dao.WrapAddIDCULEntity(skuNew, ctx.GetUserName()) - skuNew.JdID = 0 //jxutils.GenFakeID() + skuNew.JdID = 0 skuNew.LinkID = sku.ID skuNew.NameID = skuNameNew.ID skuNew.JdSyncStatus = model.SyncFlagNewMask @@ -708,7 +708,7 @@ func TransformJdSpu2Sku(ctx *jxcontext.Context, skuNameIDs []int, count int, isA subTask := tasksch.NewParallelTask(fmt.Sprintf("TransformJdSpu2Sku:%d", step), tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, func(subTask *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { skuName := batchItemList[0].(*model.SkuName) - if !jxutils.IsFakeID(skuName.JdID) { + if !jxutils.IsEmptyID(skuName.JdID) { sql = ` SELECT * FROM sku @@ -729,7 +729,7 @@ func TransformJdSpu2Sku(ctx *jxcontext.Context, skuNameIDs []int, count int, isA locker.Lock() skuIDs = append(skuIDs, sku.ID) locker.Unlock() - if !jxutils.IsFakeID(sku.JdID) { + if !jxutils.IsEmptyID(sku.JdID) { if globals.EnableJdStoreWrite { if err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuName.ID), utils.Int2Str(sku.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted)); err != nil { if errExt, ok := err.(*utils.ErrorWithCode); ok && errExt.IntCode() == 11004 { diff --git a/business/jxutils/jxutils_cms.go b/business/jxutils/jxutils_cms.go index 8ffc4eaeb..f0b4a12e2 100644 --- a/business/jxutils/jxutils_cms.go +++ b/business/jxutils/jxutils_cms.go @@ -240,18 +240,23 @@ func genFakeID1() int64 { return time.Now().UnixNano() / 1000000 } +// 这个用于没有打开远程同步时的假同步,生成ID使用 func GenFakeID() int64 { return genFakeID1() * 3 } func IsFakeID(id int64) bool { - if id == 0 { + if IsEmptyID(id) { return true } multiple := id / genFakeID1() return multiple >= 2 && multiple <= 4 } +func IsEmptyID(id int64) bool { + return id == 0 +} + func FormalizePageSize(pageSize int) int { if pageSize == 0 { return model.DefPageSize diff --git a/business/partner/purchase/ebai/store_sku.go b/business/partner/purchase/ebai/store_sku.go index c8576ccd6..c0e64f322 100644 --- a/business/partner/purchase/ebai/store_sku.go +++ b/business/partner/purchase/ebai/store_sku.go @@ -250,48 +250,55 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { storeSku := batchItemList[0].(*tStoreSkuFullInfo) updateFields := []string{model.FieldEbaiSyncStatus} - if globals.EnableEbaiStoreWrite { - if storeSku.NameID == 0 || storeSku.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 { - if storeSku.EbaiSyncStatus&model.SyncFlagNewMask == 0 && !jxutils.IsFakeID(storeSku.EbaiID) { + if storeSku.NameID == 0 || storeSku.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 { + if storeSku.EbaiSyncStatus&model.SyncFlagNewMask == 0 && !jxutils.IsEmptyID(storeSku.EbaiID) { + if globals.EnableEbaiStoreWrite { err = api.EbaiAPI.SkuDelete(strStoreID, utils.Int64ToStr(storeSku.EbaiID)) } - if err == nil { - if utils.IsTimeZero(storeSku.DeletedAt) { - storeSku.DeletedAt = time.Now() - updateFields = append(updateFields, model.FieldDeletedAt) - } - storeSku.EbaiID = 0 - updateFields = append(updateFields, model.FieldEbaiID) + } + if err == nil { + if utils.IsTimeZero(storeSku.DeletedAt) { + storeSku.DeletedAt = time.Now() + updateFields = append(updateFields, model.FieldDeletedAt) } - } else { - if storeSku.EbaiSyncStatus&model.SyncFlagNewMask != 0 { - // globals.SugarLogger.Debug(utils.Format4Output(genSkuParamsFromStoreSkuInfo(storeSku), false)) - // todo 适当处理重复(即已经创建)的情况 - mergedStoreSkuStatus := jxutils.MergeSkuStatus(storeSku.SkuStatus, storeSku.Status) - if mergedStoreSkuStatus == model.SkuStatusNormal { - if storeSku.Img != "" { - if storeSku.EbaiID, err = api.EbaiAPI.SkuCreate(strStoreID, storeSku.SkuID, genSkuParamsFromStoreSkuInfo(storeSku)); err == nil { - updateFields = append(updateFields, model.FieldEbaiID) - } else if storeSku.EbaiID = ebaiapi.GetEbaiSkuIDFromError(err); storeSku.EbaiID > 0 { - // globals.SugarLogger.Debugf("SyncStoreSkus test storeSku.EbaiID:%d, err:%v", storeSku.EbaiID, err) - updateFields = append(updateFields, model.FieldEbaiID) + storeSku.EbaiID = 0 + updateFields = append(updateFields, model.FieldEbaiID) + } + } else { + if storeSku.EbaiSyncStatus&model.SyncFlagNewMask != 0 { + // globals.SugarLogger.Debug(utils.Format4Output(genSkuParamsFromStoreSkuInfo(storeSku), false)) + // todo 适当处理重复(即已经创建)的情况 + mergedStoreSkuStatus := jxutils.MergeSkuStatus(storeSku.SkuStatus, storeSku.Status) + if mergedStoreSkuStatus == model.SkuStatusNormal { + if storeSku.Img != "" { + if globals.EnableEbaiStoreWrite { + storeSku.EbaiID, err = api.EbaiAPI.SkuCreate(strStoreID, storeSku.SkuID, genSkuParamsFromStoreSkuInfo(storeSku)) + } + if err == nil { + updateFields = append(updateFields, model.FieldEbaiID) + } else if storeSku.EbaiID = ebaiapi.GetEbaiSkuIDFromError(err); storeSku.EbaiID > 0 { + // globals.SugarLogger.Debugf("SyncStoreSkus test storeSku.EbaiID:%d, err:%v", storeSku.EbaiID, err) + updateFields = append(updateFields, model.FieldEbaiID) + if globals.EnableEbaiStoreWrite { _, err = api.EbaiAPI.SkuUpdate(strStoreID, storeSku.EbaiID, genSkuParamsFromStoreSkuInfo(storeSku)) } - } else { - err = fmt.Errorf("SKUANME%d:%s没有图片,同步失败", storeSku.NameID, storeSku.Name) } } else { - updateFields = nil + err = fmt.Errorf("SKUANME%d:%s没有图片,同步失败", storeSku.NameID, storeSku.Name) } - } else if storeSku.EbaiSyncStatus&model.SyncFlagStoreSkuModifiedMask != 0 { - if jxutils.IsFakeID(storeSku.EbaiID) { - err = fmt.Errorf("京西数据异常,修改一个没有创建的饿百商品:%d, store:%s", storeSku.SkuID, strStoreID) - } else { - if storeSku.Img != "" { + } else { + updateFields = nil + } + } else if storeSku.EbaiSyncStatus&model.SyncFlagStoreSkuModifiedMask != 0 { + if storeSku.EbaiID == 0 { + err = fmt.Errorf("京西数据异常,修改一个没有创建的饿百商品:%d, store:%s", storeSku.SkuID, strStoreID) + } else { + if storeSku.Img != "" { + if globals.EnableEbaiStoreWrite { _, err = api.EbaiAPI.SkuUpdate(strStoreID, storeSku.EbaiID, genSkuParamsFromStoreSkuInfo(storeSku)) - } else { - err = fmt.Errorf("SKUANME%d:%s没有图片,同步失败", storeSku.NameID, storeSku.Name) } + } else { + err = fmt.Errorf("SKUANME%d:%s没有图片,同步失败", storeSku.NameID, storeSku.Name) } } } @@ -544,18 +551,23 @@ func (p *PurchaseHandler) SyncStoreCategory(ctx *jxcontext.Context, parentTask t updateFields := []string{model.FieldEbaiSyncStatus} catInfo := batchItemList[0].(*tStoreCatInfo) // globals.SugarLogger.Debug(utils.Format4Output(catInfo, false)) - if globals.EnableEbaiStoreWrite { - if catInfo.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除 - if catInfo.EbaiSyncStatus&model.SyncFlagNewMask == 0 && catInfo.EbaiID != 0 { + if catInfo.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除 + if catInfo.EbaiSyncStatus&model.SyncFlagNewMask == 0 && catInfo.EbaiID != 0 { + if globals.EnableEbaiStoreWrite { err = api.EbaiAPI.ShopCategoryDelete(strStoreID, catInfo.EbaiID) } - } else if catInfo.EbaiSyncStatus&model.SyncFlagNewMask != 0 { // 新增 - ebaiID, err2 := api.EbaiAPI.ShopCategoryCreate(strStoreID, catInfo.ParentEbaiID, formatName(catInfo.Name), jxCatSeq2Ebai(catInfo.Seq)) - if err = err2; err == nil { - catInfo.EbaiID = ebaiID - updateFields = append(updateFields, model.FieldEbaiID) - } - } else if catInfo.EbaiSyncStatus&model.SyncFlagModifiedMask != 0 { // 修改 + } + } else if catInfo.EbaiSyncStatus&model.SyncFlagNewMask != 0 { // 新增 + if globals.EnableEbaiStoreWrite { + catInfo.EbaiID, err = api.EbaiAPI.ShopCategoryCreate(strStoreID, catInfo.ParentEbaiID, formatName(catInfo.Name), jxCatSeq2Ebai(catInfo.Seq)) + } else { + catInfo.EbaiID = jxutils.GenFakeID() + } + if err == nil { + updateFields = append(updateFields, model.FieldEbaiID) + } + } else if catInfo.EbaiSyncStatus&model.SyncFlagModifiedMask != 0 { // 修改 + if globals.EnableEbaiStoreWrite { err = api.EbaiAPI.ShopCategoryUpdate(strStoreID, catInfo.EbaiID, formatName(catInfo.Name), jxCatSeq2Ebai(catInfo.Seq)) } } diff --git a/business/partner/purchase/jd/sku.go b/business/partner/purchase/jd/sku.go index 7ae98cddd..5c4669d5b 100644 --- a/business/partner/purchase/jd/sku.go +++ b/business/partner/purchase/jd/sku.go @@ -392,7 +392,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt skuNameJdID := skuExt.JdID globals.SugarLogger.Debugf("syncSkuNameAsSpu1 sku.id=%d, bareSkuName:%s, skuName:%s, skuNameJdID:%d", sku.ID, skuExt.Name, skuName, skuNameJdID) spuAddParams, skuAddParams := splitAddParams(addParams) - if !jxutils.IsFakeID(skuNameJdID) && sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除SKU + if !jxutils.IsEmptyID(skuNameJdID) && sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除SKU if globals.EnableStoreWrite { err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted)) } @@ -419,7 +419,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt } } } - } else if skuExt.JdSyncStatus&model.SyncFlagNewMask != 0 && jxutils.IsFakeID(skuNameJdID) { + } else if skuExt.JdSyncStatus&model.SyncFlagNewMask != 0 && jxutils.IsEmptyID(skuNameJdID) { if globals.EnableStoreWrite { spuName := jxutils.ComposeSpuName(skuExt.Prefix, skuExt.Name, 0) skus := []map[string]interface{}{ @@ -468,7 +468,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt } } } - if err == nil && !jxutils.IsFakeID(skuNameJdID) { + if err == nil && !jxutils.IsEmptyID(skuNameJdID) { if sku.JdSyncStatus&model.SyncFlagNewMask != 0 { // 非首次新增SKU if globals.EnableStoreWrite { vendorSkuID2, err2 := api.JdAPI.AppendSku(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), skuName, price, jxutils.IntWeight2Float(sku.Weight), []string{skuExt.Img}, jxStatus2jdStatus(sku.Status), true, composeSkuSpec(sku.SpecQuality, sku.SpecUnit, skuExt.Unit), skuAddParams) diff --git a/business/partner/purchase/jd/store_sku.go b/business/partner/purchase/jd/store_sku.go index 4bb0d82b8..b7d7837ca 100644 --- a/business/partner/purchase/jd/store_sku.go +++ b/business/partner/purchase/jd/store_sku.go @@ -182,7 +182,7 @@ func (p *PurchaseHandler) GetStoresSku(ctx *jxcontext.Context, parentTask tasksc var skuInfoList []*jdapi.BaseStockCenterRequest skuMap := make(map[int64]int) for _, sku := range skuList { - if !jxutils.IsFakeID(sku.JdID) { + if !jxutils.IsEmptyID(sku.JdID) { skuInfoList = append(skuInfoList, &jdapi.BaseStockCenterRequest{ SkuId: sku.JdID, })