From 84c0b93ec42769f95bb9bfeca23a0e926bcc68e5 Mon Sep 17 00:00:00 2001 From: gazebo Date: Thu, 1 Aug 2019 10:16:26 +0800 Subject: [PATCH] + partner.GetSkus, jd.GetSkus --- business/partner/partner.go | 2 + business/partner/purchase/jd/sku.go | 86 ++++++++++++++++++++ business/partner/purchase/jd/sku_test.go | 19 +++-- business/partner/purchase/mtwm/store_sku2.go | 1 + 4 files changed, 103 insertions(+), 5 deletions(-) diff --git a/business/partner/partner.go b/business/partner/partner.go index 4cffe95b1..d4a1150a4 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -194,6 +194,8 @@ type IMultipleStoresHandler interface { DeleteSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error) RefreshAllSkusID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) + + GetSkus(ctx *jxcontext.Context, skuID int, vendorSkuID, skuName string) (skuNameList []*SkuNameInfo, err error) } type ISingleStoreHandler interface { diff --git a/business/partner/purchase/jd/sku.go b/business/partner/purchase/jd/sku.go index 918afb78d..2e3365b8c 100644 --- a/business/partner/purchase/jd/sku.go +++ b/business/partner/purchase/jd/sku.go @@ -580,3 +580,89 @@ func (p *PurchaseHandler) GetVendorCategories(ctx *jxcontext.Context) (vendorCat vendorCats, err = p.getVendorCategories(1, 0) return vendorCats, err } + +func (p *PurchaseHandler) GetSkus(ctx *jxcontext.Context, skuID int, vendorSkuID, skuName string) (skuNameList []*partner.SkuNameInfo, err error) { + param := &jdapi.QuerySkuParam{ + SkuID: utils.Str2Int64(vendorSkuID), + SkuName: skuName, + IsFilterDel: jdapi.IsFilterDelTrue, + PageNo: 1, + PageSize: jdapi.MaxSkuIDsCount4QueryListBySkuIds, // 为了同时取图,这个值不要大于jdapi.MaxSkuIDsCount4QueryListBySkuIds + } + for { + skuList, _, err2 := api.JdAPI.QuerySkuInfos(param) + if err = err2; err != nil { + return nil, err + } + if len(skuList) > 0 { + jdSkuIDs := make([]int64, len(skuList)) + batchSkuNameList := make([]*partner.SkuNameInfo, len(skuList)) + for k, v := range skuList { + batchSkuNameList[k] = vendorSku2Jx(v) + jdSkuIDs[k] = v.SkuID + } + imgMap := make(map[int64]*jdapi.ImgHandleQueryResult) + if imgList, err2 := api.JdAPI.QueryListBySkuIds(&jdapi.QueryListBySkuIdsParam{ + SkuIDs: jdSkuIDs, + }); err2 == nil { + for _, v := range imgList { + if imgMap[v.SkuID] == nil || imgMap[v.SkuID].IsMain < v.IsMain || imgMap[v.SkuID].ImgType < v.ImgType { + imgMap[v.SkuID] = v + } + } + } + for _, v := range batchSkuNameList { + jdSkuID := utils.Str2Int64(v.SkuList[0].VendorSkuID) + if imgInfo := imgMap[jdSkuID]; imgInfo != nil { + v.PictureList = []string{imgInfo.SourceImgURL} + } else { + // if imgList, err2 := api.JdAPI.GetSkuPageImageInfo(jdSkuID); err2 == nil && len(imgList) > 0 { + // v.PictureList = []string{imgList[0].Big} + // } + } + } + skuNameList = append(skuNameList, batchSkuNameList...) + } + if len(skuList) < param.PageSize { + break + } + param.PageNo++ + } + return skuNameList, err +} + +func vendorSku2Jx(vendorSku *jdapi.SkuMain) (skuName *partner.SkuNameInfo) { + prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(vendorSku.SkuName) + weight := int(vendorSku.Weight * 1000) + if weight <= 0 { + weight = jxutils.FormatSkuWeight(specQuality, specUnit) + } + skuID := int(utils.Str2Int64WithDefault(vendorSku.OutSkuID, 0)) + vendorSkuID := utils.Int64ToStr(vendorSku.SkuID) + skuName = &partner.SkuNameInfo{ + NameID: skuID, + VendorNameID: vendorSkuID, + VendorCatIDList: []string{utils.Int64ToStr(vendorSku.CategoryID)}, + + Prefix: prefix, + Name: name, + Unit: unit, + SkuList: []*partner.SkuInfo{ + &partner.SkuInfo{ + StoreSkuInfo: partner.StoreSkuInfo{ + VendorSkuID: vendorSkuID, + SkuID: skuID, + + VendorPrice: int64(vendorSku.SkuPrice), + Status: jdStatus2jxStatus(vendorSku.FixedStatus), + }, + SkuName: vendorSku.SkuName, + Comment: comment, + SpecQuality: float64(specQuality), + SpecUnit: specUnit, + Weight: weight, + }, + }, + } + return skuName +} diff --git a/business/partner/purchase/jd/sku_test.go b/business/partner/purchase/jd/sku_test.go index 52169eb73..e3378e72e 100644 --- a/business/partner/purchase/jd/sku_test.go +++ b/business/partner/purchase/jd/sku_test.go @@ -17,7 +17,7 @@ func TestCreateSku(t *testing.T) { sku.ID = skuID dao.GetEntity(nil, sku) t.Log(sku) - // err := new(PurchaseHandler).CreateSku(sku) + // err := curPurchaseHandler.CreateSku(sku) // if err != nil { // t.Fatal(err.Error()) // } @@ -31,14 +31,14 @@ func TestUpdateSku(t *testing.T) { sku.ID = skuID dao.GetEntity(db, sku) - err := new(PurchaseHandler).UpdateSku(db, sku, "autotest") + err := curPurchaseHandler.UpdateSku(db, sku, "autotest") if err != nil { t.Fatal(err.Error()) } } func TestReadCategories(t *testing.T) { - result, err := new(PurchaseHandler).ReadCategories() + result, err := curPurchaseHandler.ReadCategories() if err != nil || len(result) == 0 { t.Fatal(err.Error()) } @@ -46,7 +46,7 @@ func TestReadCategories(t *testing.T) { } func TestReadSku(t *testing.T) { - skuName, err := new(PurchaseHandler).ReadSku("2005582952") + skuName, err := curPurchaseHandler.ReadSku("2005582952") t.Log(utils.Format4Output(skuName, false)) if err != nil { t.Fatal(err.Error()) @@ -58,9 +58,18 @@ func TestReadSku(t *testing.T) { } func TestGetVendorCategories(t *testing.T) { - catList, err := new(PurchaseHandler).GetVendorCategories(jxcontext.AdminCtx) + catList, err := curPurchaseHandler.GetVendorCategories(jxcontext.AdminCtx) if err != nil { t.Fatal(err.Error()) } t.Log(utils.Format4Output(catList, false)) } + +func TestGetSkus(t *testing.T) { + skuNameList, err := curPurchaseHandler.GetSkus(jxcontext.AdminCtx, 0, "", "") + t.Log(utils.Format4Output(skuNameList, false)) + t.Log(len(skuNameList)) + if err != nil { + t.Fatal(err.Error()) + } +} diff --git a/business/partner/purchase/mtwm/store_sku2.go b/business/partner/purchase/mtwm/store_sku2.go index acd29a85c..ece7b5d7e 100644 --- a/business/partner/purchase/mtwm/store_sku2.go +++ b/business/partner/purchase/mtwm/store_sku2.go @@ -348,6 +348,7 @@ func vendorSku2Jx(appFood *mtwmapi.AppFood) (skuName *partner.SkuNameInfo) { PictureList: appFood.PictureList, } if appFood.CategoryName != "" { + // todo, 因为当前我们用的是分类名操作这种方式,所以要返回分类名(而不是分类code) skuName.VendorCatIDList = []string{appFood.CategoryName} if appFood.SecondaryCategoryName != "" { skuName.VendorCatIDList = append(skuName.VendorCatIDList, appFood.SecondaryCategoryName)