- remove sku category sync for jd

- refactor addParams(spuAddParams, skuAddParams) for func syncSkuNameAsSpu
This commit is contained in:
gazebo
2019-01-29 09:06:59 +08:00
parent 97a3e53d22
commit 7463967398

View File

@@ -30,6 +30,12 @@ type tSkuInfoExt struct {
Comment string `orm:"size(255)" json:"comment"`
}
var (
skuAddParamsKeyList = []string{
jdapi.KeyUpcCode,
}
)
func (p *PurchaseHandler) CreateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error) {
var jdPid int64
if cat.ParentID != 0 {
@@ -123,9 +129,10 @@ func (p *PurchaseHandler) cuSku(db *dao.DaoDB, sku *model.Sku, handler func(skuE
`, sku.ID)
if err == nil {
shopCategories := []int64{skuInfoExt.JdCatID}
if skuInfoExt.SkuCatID != 0 {
shopCategories = append(shopCategories, skuInfoExt.SkuCatID)
}
// SPU只支持SPU的商家分类不支持单独SKU的去除SKU的分类
// if skuInfoExt.SkuCatID != 0 {
// shopCategories = append(shopCategories, skuInfoExt.SkuCatID)
// }
if skuInfoExt.JdCategoryID == 0 {
skuInfoExt.JdCategoryID = DefJdCategoryID
}
@@ -339,8 +346,22 @@ func (p *PurchaseHandler) RefreshAllSkusID(ctx *jxcontext.Context, parentTask ta
return rootTask.ID, err
}
func splitAddParams(addParams map[string]interface{}) (spuAddParams, skuAddParams map[string]interface{}) {
if addParams != nil {
spuAddParams = make(map[string]interface{})
skuAddParams = make(map[string]interface{})
for _, key := range skuAddParamsKeyList {
if _, ok := addParams[key]; ok {
skuAddParams[key] = addParams[key]
} else {
spuAddParams[key] = addParams[key]
}
}
}
return spuAddParams, skuAddParams
}
// 这个处理JD SPU补丁形式
// addParams是SPU的附加参数而不是SKU
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,
@@ -351,6 +372,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
// 这样写的原因是在sync里面已经把数据全部取出来了在这个函数里对于数据库的改动不能体现打个补丁
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) {
tmpSkuName := &model.SkuName{}
tmpSkuName.ID = skuExt.ID
@@ -366,7 +388,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))
} else if sku.JdSyncStatus&model.SyncFlagNewMask != 0 { // 非首次新增SKU
if globals.EnableStoreWrite {
vendorSkuID2, err2 := api.JdAPI.AppendSku(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, skuName, price, jxutils.IntWeight2Float(sku.Weight), []string{skuExt.Img}, jxStatus2jdStatus(sku.Status), true, composeSkuSpec(sku.SpecQuality, sku.SpecUnit, skuExt.Unit), nil)
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)
}
@@ -378,11 +400,8 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status)
params[jdapi.KeyWeight] = jxutils.IntWeight2Float(sku.Weight)
params[jdapi.KeySkuPrice] = price
if skuExt.Upc != "" {
params[jdapi.KeyUpcCode] = skuExt.Upc
}
if globals.EnableStoreWrite {
err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), params)
err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.MergeMaps(params, skuAddParams))
}
}
}
@@ -418,12 +437,9 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
jdapi.FakeKeySpecAttr: composeSkuSpec(sku.SpecQuality, sku.SpecUnit, skuExt.Unit),
},
}
// todo 我们把upc放在skuName上京东是在sku上但多于一种规格的应该都不需要UPC暂时先这样
if skuExt.Upc != "" {
skus[0][jdapi.KeyUpcCode] = skuExt.Upc
}
skus[0] = utils.MergeMaps(skus[0], skuAddParams)
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), addParams, 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 {
skuExt.JdID = vendorSpuID
vendorSkuID = utils.Int64ToStr(skuPairs[0].SkuId)
@@ -439,7 +455,7 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt
jdapi.KeyBrandId: skuExt.BrandID,
jdapi.KeyImages: []string{skuExt.Img},
jdapi.KeyFixedStatus: jxStatus2jdStatus(skuExt.Status),
}, addParams)
}, spuAddParams)
if globals.EnableStoreWrite {
err = api.JdAPI.UpdateSpu(utils.Int2Str(skuExt.ID), params)
}