- fix bug can not real del spu in syncSkuNameAsSpu.

This commit is contained in:
gazebo
2019-01-30 15:17:00 +08:00
parent e68f246ad2
commit db55aae19e

View File

@@ -363,10 +363,6 @@ func splitAddParams(addParams map[string]interface{}) (spuAddParams, skuAddParam
// 这个处理JD SPU补丁形式 // 这个处理JD SPU补丁形式
func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) { func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) {
updateFields := []string{
model.FieldJdSyncStatus,
}
// SPU的SKU NAME不需要规格信息 // SPU的SKU NAME不需要规格信息
skuName = jxutils.ComposeSkuName(skuExt.Prefix, skuExt.Name, sku.Comment, "", 0, "", 0) skuName = jxutils.ComposeSkuName(skuExt.Prefix, skuExt.Name, sku.Comment, "", 0, "", 0)
skuNameJdID := skuExt.JdID skuNameJdID := skuExt.JdID
@@ -398,6 +394,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
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))
} }
if err == nil { if err == nil {
updateFields := []string{}
if skuExt.JdSyncStatus&model.SyncFlagDeletedMask != 0 { if skuExt.JdSyncStatus&model.SyncFlagDeletedMask != 0 {
sql := ` sql := `
SELECT COUNT(*) ct SELECT COUNT(*) ct
@@ -410,9 +407,12 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
if err = dao.GetRow(db, &count, sql, sku.NameID, model.SkuStatusDeleted); err != nil { if err = dao.GetRow(db, &count, sql, sku.NameID, model.SkuStatusDeleted); err != nil {
return "", err return "", err
} }
if (count.Ct == 0 || count.Ct == 1 && sku.JdSyncStatus&model.SyncFlagDeletedMask != 0) && globals.EnableStoreWrite { // 1就是最后删的那个 if count.Ct <= 1 && sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 1就是最后删的那个
if err = api.JdAPI.UpdateSpu(utils.Int2Str(skuExt.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusOffline)); err == nil { updateFields = append(updateFields, model.FieldJdSyncStatus)
err = api.JdAPI.UpdateSpu(utils.Int2Str(skuExt.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted)) if globals.EnableStoreWrite {
if err = api.JdAPI.UpdateSpu(utils.Int2Str(skuExt.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusOffline|jdapi.SkuFixedStatusDeleted)); err == nil {
// err = api.JdAPI.UpdateSpu(utils.Int2Str(skuExt.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted))
}
} }
} }
} else if skuExt.JdSyncStatus&model.SyncFlagNewMask != 0 && jxutils.IsFakeID(skuNameJdID) { } else if skuExt.JdSyncStatus&model.SyncFlagNewMask != 0 && jxutils.IsFakeID(skuNameJdID) {
@@ -430,6 +430,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
}, },
} }
skus[0] = utils.MergeMaps(skus[0], skuAddParams) skus[0] = utils.MergeMaps(skus[0], skuAddParams)
updateFields = append(updateFields, model.FieldJdSyncStatus)
if globals.EnableStoreWrite { if globals.EnableStoreWrite {
vendorSpuID, skuPairs, err2 := api.JdAPI.AddSpu(utils.Int2Str(skuExt.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, spuName, []string{skuExt.Img}, jxStatus2jdStatus(skuExt.Status), spuAddParams, skus) vendorSpuID, skuPairs, err2 := api.JdAPI.AddSpu(utils.Int2Str(skuExt.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, spuName, []string{skuExt.Img}, jxStatus2jdStatus(skuExt.Status), spuAddParams, skus)
if err = err2; err == nil { if err = err2; err == nil {
@@ -450,12 +451,13 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
jdapi.KeyImages: []string{skuExt.Img}, jdapi.KeyImages: []string{skuExt.Img},
jdapi.KeyFixedStatus: jxStatus2jdStatus(skuExt.Status), jdapi.KeyFixedStatus: jxStatus2jdStatus(skuExt.Status),
}, spuAddParams) }, spuAddParams)
updateFields = append(updateFields, model.FieldJdSyncStatus)
if globals.EnableStoreWrite { if globals.EnableStoreWrite {
err = api.JdAPI.UpdateSpu(utils.Int2Str(skuExt.ID), params) err = api.JdAPI.UpdateSpu(utils.Int2Str(skuExt.ID), params)
} }
} }
if err == nil { if err == nil {
if skuExt.JdSyncStatus != 0 { if skuExt.JdSyncStatus != 0 && len(updateFields) > 0 {
skuExt.JdSyncStatus = 0 skuExt.JdSyncStatus = 0
_, err = dao.UpdateEntity(db, &skuExt.SkuName, updateFields...) _, err = dao.UpdateEntity(db, &skuExt.SkuName, updateFields...)
globals.SugarLogger.Debugf("syncSkuNameAsSpu4 sku.id=%d, skuName:%s, skuName:%s", sku.ID, skuExt.Name, utils.Format4Output(&skuExt.SkuName, false)) globals.SugarLogger.Debugf("syncSkuNameAsSpu4 sku.id=%d, skuName:%s, skuName:%s", sku.ID, skuExt.Name, utils.Format4Output(&skuExt.SkuName, false))