- try to refactor syncSkuNameAsSpu

This commit is contained in:
gazebo
2019-01-30 15:05:37 +08:00
parent a4a46ac092
commit e68f246ad2

View File

@@ -370,40 +370,32 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
// SPU的SKU NAME不需要规格信息
skuName = jxutils.ComposeSkuName(skuExt.Prefix, skuExt.Name, sku.Comment, "", 0, "", 0)
skuNameJdID := skuExt.JdID
// 这样写的原因是在sync里面已经把数据全部取出来了在这个函数里对于数据库的改动不能体现打个补丁
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) {
// tmpSkuName := &model.SkuName{}
// tmpSkuName.ID = skuExt.ID
// if err = dao.GetEntity(db, tmpSkuName); err != nil {
// return "", err
// if !jxutils.IsFakeID(skuNameJdID) {
// if sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除SKU
// err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted))
// } else 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)
// if err = err2; err == nil {
// vendorSkuID = utils.Int64ToStr(vendorSkuID2)
// }
// }
// } else if sku.JdSyncStatus&model.SyncFlagModifiedMask != 0 {
// params := make(map[string]interface{})
// params[jdapi.KeySkuName] = skuName
// params[jdapi.KeyImages] = []string{skuExt.Img}
// params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status)
// params[jdapi.KeyWeight] = jxutils.IntWeight2Float(sku.Weight)
// params[jdapi.KeySkuPrice] = price
// if globals.EnableStoreWrite {
// err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.MergeMaps(params, skuAddParams))
// }
// }
// globals.SugarLogger.Debugf("syncSkuNameAsSpu2 sku.id=%d, skuName:%s, tmpSkuName:%s", sku.ID, skuExt.Name, utils.Format4Output(tmpSkuName, false))
// skuExt.JdID = tmpSkuName.JdID
// skuNameJdID = skuExt.JdID
// }
if !jxutils.IsFakeID(skuNameJdID) {
if sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除SKU
err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted))
} else 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)
if err = err2; err == nil {
vendorSkuID = utils.Int64ToStr(vendorSkuID2)
}
}
} else if sku.JdSyncStatus&model.SyncFlagModifiedMask != 0 {
params := make(map[string]interface{})
params[jdapi.KeySkuName] = skuName
params[jdapi.KeyImages] = []string{skuExt.Img}
params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status)
params[jdapi.KeyWeight] = jxutils.IntWeight2Float(sku.Weight)
params[jdapi.KeySkuPrice] = price
if globals.EnableStoreWrite {
err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.MergeMaps(params, skuAddParams))
}
}
if !jxutils.IsFakeID(skuNameJdID) && sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除SKU
err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted))
}
if err == nil {
if skuExt.JdSyncStatus&model.SyncFlagDeletedMask != 0 {
@@ -442,6 +434,8 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
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 {
skuExt.JdID = vendorSpuID
// skuNameJdID = skuExt.JdID // 这个是故意去掉的这样之后的首次SKU修改操作就会被忽略下一条语句也就可以不用了
// sku.JdSyncStatus &= ^model.SyncFlagNewMask
vendorSkuID = utils.Int64ToStr(skuPairs[0].SkuId)
updateFields = append(updateFields, model.FieldJdID)
}
@@ -468,6 +462,29 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
}
}
}
if err == nil && !jxutils.IsFakeID(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)
if err = err2; err == nil {
vendorSkuID = utils.Int64ToStr(vendorSkuID2)
}
}
} else if sku.JdSyncStatus&model.SyncFlagModifiedMask != 0 {
params := make(map[string]interface{})
params[jdapi.KeySkuName] = skuName
params[jdapi.KeyImages] = []string{skuExt.Img}
params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status)
params[jdapi.KeyWeight] = jxutils.IntWeight2Float(sku.Weight)
params[jdapi.KeySkuPrice] = price
if globals.EnableStoreWrite {
err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.MergeMaps(params, skuAddParams))
}
}
if err == nil {
sku.JdSyncStatus = 0
}
}
return vendorSkuID, err
}