diff --git a/business/partner/partner.go b/business/partner/partner.go index 29c38afa5..7549216d2 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -158,7 +158,7 @@ type IPurchasePlatformHandler interface { // db *dao.DaoDB, type IMultipleStoresHandler interface { IPurchasePlatformHandler - ReadCategories() (cats []*model.SkuCategory, err error) + GetAllCategories(ctx *jxcontext.Context, vendorOrgCode string) (cats []*BareCategoryInfo, err error) CreateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error) UpdateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error diff --git a/business/partner/purchase/jd/jd_test.go b/business/partner/purchase/jd/jd_test.go new file mode 100644 index 000000000..fc850f98c --- /dev/null +++ b/business/partner/purchase/jd/jd_test.go @@ -0,0 +1,11 @@ +package jd + +import ( + _ "git.rosy.net.cn/jx-callback/globals/api/apimanager" + + "git.rosy.net.cn/jx-callback/globals/testinit" +) + +func init() { + testinit.Init() +} diff --git a/business/partner/purchase/jd/order_test.go b/business/partner/purchase/jd/order_test.go index 1268fb487..23d54f2f7 100644 --- a/business/partner/purchase/jd/order_test.go +++ b/business/partner/purchase/jd/order_test.go @@ -10,13 +10,8 @@ import ( _ "git.rosy.net.cn/jx-callback/business/jxcallback/orderman" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" - "git.rosy.net.cn/jx-callback/globals/testinit" ) -func init() { - testinit.Init() -} - func TestSwitch2SelfDeliver(t *testing.T) { orderID := "817540316000041" if order, err := partner.CurOrderManager.LoadOrder(orderID, model.VendorIDJD); err == nil { diff --git a/business/partner/purchase/jd/sku.go b/business/partner/purchase/jd/sku.go index 02da3175b..3c63ab3bd 100644 --- a/business/partner/purchase/jd/sku.go +++ b/business/partner/purchase/jd/sku.go @@ -68,22 +68,44 @@ func (p *PurchaseHandler) CreateCategory(db *dao.DaoDB, cat *model.SkuCategory, return err } -func (p *PurchaseHandler) ReadCategories() (cats []*model.SkuCategory, err error) { - result, err := getAPI("").QueryCategoriesByOrgCode() - if err == nil { - cats = make([]*model.SkuCategory, len(result)) - for k, v := range result { - cats[k] = &model.SkuCategory{ - ParentID: int(v.ParentId), // 这里是暂存,传递数据用,正确的值应该是本地的ID - Name: v.Name, - Level: int8(v.Level), - Seq: v.Sort, - JdID: v.Id, - } - } - return cats, nil +func jdCat2Jx(jdCat *jdapi.CategoryInfo) (jxCat *partner.BareCategoryInfo) { + return &partner.BareCategoryInfo{ + VendorCatID: utils.Int64ToStr(jdCat.Id), + Level: jdCat.Level, + Name: jdCat.Name, + Seq: jdCat.Sort, } - return nil, err +} + +func (p *PurchaseHandler) GetAllCategories(ctx *jxcontext.Context, vendorOrgCode string) (cats []*partner.BareCategoryInfo, err error) { + result, err := getAPI(vendorOrgCode).QueryCategoriesByOrgCode() + if err == nil { + catMap := make(map[int64]*partner.BareCategoryInfo) + level := 1 + for { + processedCount := 0 + for _, jdCat := range result { + if jdCat.Level == level { + processedCount++ + jxCat := jdCat2Jx(jdCat) + if level == 1 { + cats = append(cats, jxCat) + } else { + parentCat := catMap[jdCat.ParentId] + if parentCat != nil { + parentCat.Children = append(parentCat.Children, jxCat) + } + } + catMap[jdCat.Id] = jxCat + } + } + if processedCount == 0 { + break + } + level++ + } + } + return cats, err } func (p *PurchaseHandler) UpdateCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) error { diff --git a/business/partner/purchase/jd/sku_test.go b/business/partner/purchase/jd/sku_test.go index 831fd7d9f..f6093f32d 100644 --- a/business/partner/purchase/jd/sku_test.go +++ b/business/partner/purchase/jd/sku_test.go @@ -37,12 +37,12 @@ func TestUpdateSku(t *testing.T) { } } -func TestReadCategories(t *testing.T) { - result, err := curPurchaseHandler.ReadCategories() +func TestGetAllCategories(t *testing.T) { + result, err := curPurchaseHandler.GetAllCategories(jxcontext.AdminCtx, "") if err != nil || len(result) == 0 { t.Fatal(err.Error()) } - t.Log(result[0]) + t.Log(utils.Format4Output(result, false)) } func TestReadSku(t *testing.T) {