- 将大部分使用IsFakeID改为IsEmptyID,这样更符合语义

This commit is contained in:
gazebo
2019-05-25 11:47:01 +08:00
parent f3706f1abe
commit df6c624297
8 changed files with 74 additions and 59 deletions

View File

@@ -87,7 +87,7 @@ func AddCategory(ctx *jxcontext.Context, cat *model.SkuCategory, userName string
dao.WrapAddIDCULDEntity(cat, userName) dao.WrapAddIDCULDEntity(cat, userName)
cat.JdSyncStatus = model.SyncFlagNewMask cat.JdSyncStatus = model.SyncFlagNewMask
cat.JdID = 0 //jxutils.GenFakeID() cat.JdID = 0
cat.Name = strings.Trim(cat.Name, " ") cat.Name = strings.Trim(cat.Name, " ")
if cat.Seq <= 0 { if cat.Seq <= 0 {
var maxSeq struct { var maxSeq struct {
@@ -579,7 +579,6 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s
dao.Rollback(db) dao.Rollback(db)
return nil, err return nil, err
} }
// beginJDID := jxutils.GenFakeID()
for _, sku := range skuNameExt.Skus { for _, sku := range skuNameExt.Skus {
dao.WrapAddIDCULDEntity(sku, userName) dao.WrapAddIDCULDEntity(sku, userName)
sku.NameID = skuNameExt.ID sku.NameID = skuNameExt.ID
@@ -589,7 +588,6 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s
dao.Rollback(db) dao.Rollback(db)
return nil, err return nil, err
} }
// beginJDID++
} }
for _, placeCode := range skuNameExt.Places { for _, placeCode := range skuNameExt.Places {
placeBind := &model.SkuNamePlaceBind{} placeBind := &model.SkuNamePlaceBind{}
@@ -786,7 +784,7 @@ func AddSku(ctx *jxcontext.Context, nameID int, sku *model.Sku, userName string)
dao.WrapAddIDCULDEntity(sku, userName) dao.WrapAddIDCULDEntity(sku, userName)
sku.JdSyncStatus = model.SyncFlagNewMask sku.JdSyncStatus = model.SyncFlagNewMask
sku.NameID = nameID sku.NameID = nameID
sku.JdID = 0 //jxutils.GenFakeID() sku.JdID = 0
if err = dao.CreateEntity(db, sku); err == nil { if err = dao.CreateEntity(db, sku); err == nil {
result, err2 := GetSkuNames(ctx, "", false, utils.Params2Map("skuID", sku.ID), 0, 0) result, err2 := GetSkuNames(ctx, "", false, utils.Params2Map("skuID", sku.ID), 0, 0)
if err = err2; err == nil { if err = err2; err == nil {

View File

@@ -81,14 +81,14 @@ func Init() {
} }
func (p *MultiStoreHandlerWrapper) DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error) { 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 nil
} }
return p.IMultipleStoresHandler.DeleteCategory(db, cat, userName) return p.IMultipleStoresHandler.DeleteCategory(db, cat, userName)
} }
func (p *MultiStoreHandlerWrapper) UpdateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error) { 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)) globals.SugarLogger.Warnf("UpdateCategory fakeid cat:%s should not get here", utils.Format4Output(cat, true))
return nil 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) { 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)) globals.SugarLogger.Debugf("wrapper DeleteSku, sku:%s", utils.Format4Output(sku, false))
if jxutils.IsFakeID(sku.JdID) { if jxutils.IsEmptyID(sku.JdID) {
return nil return nil
} }
return p.IMultipleStoresHandler.DeleteSku(db, sku, userName) return p.IMultipleStoresHandler.DeleteSku(db, sku, userName)
} }
func (p *MultiStoreHandlerWrapper) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) { 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)) globals.SugarLogger.Warnf("UpdateSku fakeid sku:%s should not get here", utils.Format4Output(sku, true))
return nil return nil
} }

View File

@@ -163,7 +163,7 @@ func RefreshSkuNameImg(ctx *jxcontext.Context, parentTask tasksch.ITask, isForce
task := tasksch.NewParallelTask("RefreshSkuNameImg", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, task := tasksch.NewParallelTask("RefreshSkuNameImg", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
skuName := batchItemList[0].(*model.SkuName) skuName := batchItemList[0].(*model.SkuName)
if !jxutils.IsFakeID(skuName.JdID) { if !jxutils.IsEmptyID(skuName.JdID) {
if skuName.Img == "" || isForce { if skuName.Img == "" || isForce {
var imgList []*jdapi.SkuPageImg var imgList []*jdapi.SkuPageImg
if imgList, err = api.JdAPI.GetSkuPageImageInfo(skuName.JdID); err == nil { if imgList, err = api.JdAPI.GetSkuPageImageInfo(skuName.JdID); err == nil {

View File

@@ -104,7 +104,7 @@ func Convert2JDSPU(ctx *jxcontext.Context, count int, isAsync, isContinueWhenErr
skuNew2 := *sku skuNew2 := *sku
skuNew := &skuNew2 skuNew := &skuNew2
dao.WrapAddIDCULEntity(skuNew, ctx.GetUserName()) dao.WrapAddIDCULEntity(skuNew, ctx.GetUserName())
skuNew.JdID = 0 //jxutils.GenFakeID() skuNew.JdID = 0
skuNew.LinkID = sku.ID skuNew.LinkID = sku.ID
skuNew.NameID = skuNameNew.ID skuNew.NameID = skuNameNew.ID
skuNew.JdSyncStatus = model.SyncFlagNewMask 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, 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) { func(subTask *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
skuName := batchItemList[0].(*model.SkuName) skuName := batchItemList[0].(*model.SkuName)
if !jxutils.IsFakeID(skuName.JdID) { if !jxutils.IsEmptyID(skuName.JdID) {
sql = ` sql = `
SELECT * SELECT *
FROM sku FROM sku
@@ -729,7 +729,7 @@ func TransformJdSpu2Sku(ctx *jxcontext.Context, skuNameIDs []int, count int, isA
locker.Lock() locker.Lock()
skuIDs = append(skuIDs, sku.ID) skuIDs = append(skuIDs, sku.ID)
locker.Unlock() locker.Unlock()
if !jxutils.IsFakeID(sku.JdID) { if !jxutils.IsEmptyID(sku.JdID) {
if globals.EnableJdStoreWrite { 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 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 { if errExt, ok := err.(*utils.ErrorWithCode); ok && errExt.IntCode() == 11004 {

View File

@@ -240,18 +240,23 @@ func genFakeID1() int64 {
return time.Now().UnixNano() / 1000000 return time.Now().UnixNano() / 1000000
} }
// 这个用于没有打开远程同步时的假同步生成ID使用
func GenFakeID() int64 { func GenFakeID() int64 {
return genFakeID1() * 3 return genFakeID1() * 3
} }
func IsFakeID(id int64) bool { func IsFakeID(id int64) bool {
if id == 0 { if IsEmptyID(id) {
return true return true
} }
multiple := id / genFakeID1() multiple := id / genFakeID1()
return multiple >= 2 && multiple <= 4 return multiple >= 2 && multiple <= 4
} }
func IsEmptyID(id int64) bool {
return id == 0
}
func FormalizePageSize(pageSize int) int { func FormalizePageSize(pageSize int) int {
if pageSize == 0 { if pageSize == 0 {
return model.DefPageSize return model.DefPageSize

View File

@@ -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) { func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
storeSku := batchItemList[0].(*tStoreSkuFullInfo) storeSku := batchItemList[0].(*tStoreSkuFullInfo)
updateFields := []string{model.FieldEbaiSyncStatus} updateFields := []string{model.FieldEbaiSyncStatus}
if globals.EnableEbaiStoreWrite { if storeSku.NameID == 0 || storeSku.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 {
if storeSku.NameID == 0 || storeSku.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 { if storeSku.EbaiSyncStatus&model.SyncFlagNewMask == 0 && !jxutils.IsEmptyID(storeSku.EbaiID) {
if storeSku.EbaiSyncStatus&model.SyncFlagNewMask == 0 && !jxutils.IsFakeID(storeSku.EbaiID) { if globals.EnableEbaiStoreWrite {
err = api.EbaiAPI.SkuDelete(strStoreID, utils.Int64ToStr(storeSku.EbaiID)) err = api.EbaiAPI.SkuDelete(strStoreID, utils.Int64ToStr(storeSku.EbaiID))
} }
if err == nil { }
if utils.IsTimeZero(storeSku.DeletedAt) { if err == nil {
storeSku.DeletedAt = time.Now() if utils.IsTimeZero(storeSku.DeletedAt) {
updateFields = append(updateFields, model.FieldDeletedAt) storeSku.DeletedAt = time.Now()
} updateFields = append(updateFields, model.FieldDeletedAt)
storeSku.EbaiID = 0
updateFields = append(updateFields, model.FieldEbaiID)
} }
} else { storeSku.EbaiID = 0
if storeSku.EbaiSyncStatus&model.SyncFlagNewMask != 0 { updateFields = append(updateFields, model.FieldEbaiID)
// globals.SugarLogger.Debug(utils.Format4Output(genSkuParamsFromStoreSkuInfo(storeSku), false)) }
// todo 适当处理重复(即已经创建)的情况 } else {
mergedStoreSkuStatus := jxutils.MergeSkuStatus(storeSku.SkuStatus, storeSku.Status) if storeSku.EbaiSyncStatus&model.SyncFlagNewMask != 0 {
if mergedStoreSkuStatus == model.SkuStatusNormal { // globals.SugarLogger.Debug(utils.Format4Output(genSkuParamsFromStoreSkuInfo(storeSku), false))
if storeSku.Img != "" { // todo 适当处理重复(即已经创建)的情况
if storeSku.EbaiID, err = api.EbaiAPI.SkuCreate(strStoreID, storeSku.SkuID, genSkuParamsFromStoreSkuInfo(storeSku)); err == nil { mergedStoreSkuStatus := jxutils.MergeSkuStatus(storeSku.SkuStatus, storeSku.Status)
updateFields = append(updateFields, model.FieldEbaiID) if mergedStoreSkuStatus == model.SkuStatusNormal {
} else if storeSku.EbaiID = ebaiapi.GetEbaiSkuIDFromError(err); storeSku.EbaiID > 0 { if storeSku.Img != "" {
// globals.SugarLogger.Debugf("SyncStoreSkus test storeSku.EbaiID:%d, err:%v", storeSku.EbaiID, err) if globals.EnableEbaiStoreWrite {
updateFields = append(updateFields, model.FieldEbaiID) 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)) _, err = api.EbaiAPI.SkuUpdate(strStoreID, storeSku.EbaiID, genSkuParamsFromStoreSkuInfo(storeSku))
} }
} else {
err = fmt.Errorf("SKUANME%d:%s没有图片同步失败", storeSku.NameID, storeSku.Name)
} }
} else { } else {
updateFields = nil err = fmt.Errorf("SKUANME%d:%s没有图片同步失败", storeSku.NameID, storeSku.Name)
} }
} else if storeSku.EbaiSyncStatus&model.SyncFlagStoreSkuModifiedMask != 0 { } else {
if jxutils.IsFakeID(storeSku.EbaiID) { updateFields = nil
err = fmt.Errorf("京西数据异常,修改一个没有创建的饿百商品:%d, store:%s", storeSku.SkuID, strStoreID) }
} else { } else if storeSku.EbaiSyncStatus&model.SyncFlagStoreSkuModifiedMask != 0 {
if storeSku.Img != "" { 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)) _, 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} updateFields := []string{model.FieldEbaiSyncStatus}
catInfo := batchItemList[0].(*tStoreCatInfo) catInfo := batchItemList[0].(*tStoreCatInfo)
// globals.SugarLogger.Debug(utils.Format4Output(catInfo, false)) // globals.SugarLogger.Debug(utils.Format4Output(catInfo, false))
if globals.EnableEbaiStoreWrite { if catInfo.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除
if catInfo.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除 if catInfo.EbaiSyncStatus&model.SyncFlagNewMask == 0 && catInfo.EbaiID != 0 {
if catInfo.EbaiSyncStatus&model.SyncFlagNewMask == 0 && catInfo.EbaiID != 0 { if globals.EnableEbaiStoreWrite {
err = api.EbaiAPI.ShopCategoryDelete(strStoreID, catInfo.EbaiID) 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)) } else if catInfo.EbaiSyncStatus&model.SyncFlagNewMask != 0 { // 新增
if err = err2; err == nil { if globals.EnableEbaiStoreWrite {
catInfo.EbaiID = ebaiID catInfo.EbaiID, err = api.EbaiAPI.ShopCategoryCreate(strStoreID, catInfo.ParentEbaiID, formatName(catInfo.Name), jxCatSeq2Ebai(catInfo.Seq))
updateFields = append(updateFields, model.FieldEbaiID) } else {
} catInfo.EbaiID = jxutils.GenFakeID()
} else if catInfo.EbaiSyncStatus&model.SyncFlagModifiedMask != 0 { // 修改 }
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)) err = api.EbaiAPI.ShopCategoryUpdate(strStoreID, catInfo.EbaiID, formatName(catInfo.Name), jxCatSeq2Ebai(catInfo.Seq))
} }
} }

View File

@@ -392,7 +392,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
skuNameJdID := skuExt.JdID skuNameJdID := skuExt.JdID
globals.SugarLogger.Debugf("syncSkuNameAsSpu1 sku.id=%d, bareSkuName:%s, skuName:%s, skuNameJdID:%d", sku.ID, skuExt.Name, skuName, skuNameJdID) globals.SugarLogger.Debugf("syncSkuNameAsSpu1 sku.id=%d, bareSkuName:%s, skuName:%s, skuNameJdID:%d", sku.ID, skuExt.Name, skuName, skuNameJdID)
spuAddParams, skuAddParams := splitAddParams(addParams) 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 { if globals.EnableStoreWrite {
err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted)) 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 { if globals.EnableStoreWrite {
spuName := jxutils.ComposeSpuName(skuExt.Prefix, skuExt.Name, 0) spuName := jxutils.ComposeSpuName(skuExt.Prefix, skuExt.Name, 0)
skus := []map[string]interface{}{ 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 sku.JdSyncStatus&model.SyncFlagNewMask != 0 { // 非首次新增SKU
if globals.EnableStoreWrite { 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) 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)

View File

@@ -182,7 +182,7 @@ func (p *PurchaseHandler) GetStoresSku(ctx *jxcontext.Context, parentTask tasksc
var skuInfoList []*jdapi.BaseStockCenterRequest var skuInfoList []*jdapi.BaseStockCenterRequest
skuMap := make(map[int64]int) skuMap := make(map[int64]int)
for _, sku := range skuList { for _, sku := range skuList {
if !jxutils.IsFakeID(sku.JdID) { if !jxutils.IsEmptyID(sku.JdID) {
skuInfoList = append(skuInfoList, &jdapi.BaseStockCenterRequest{ skuInfoList = append(skuInfoList, &jdapi.BaseStockCenterRequest{
SkuId: sku.JdID, SkuId: sku.JdID,
}) })