- remove sku category sync for jd
- refactor addParams(spuAddParams, skuAddParams) for func syncSkuNameAsSpu
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user