- putils/store_sku.go用于一些通用实现

This commit is contained in:
gazebo
2019-07-13 15:31:30 +08:00
parent 01c522b5b0
commit f31b158259
10 changed files with 177 additions and 203 deletions

View File

@@ -1,78 +1,9 @@
package cms
import (
"fmt"
"sort"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
"git.rosy.net.cn/jx-callback/business/partner"
)
func SyncStoreSkuNew(ctx *jxcontext.Context, vendorIDs, storeIDs, nameIDs, skuIDs []int) (hint string, err error) {
return hint, err
}
func DeleteStoreAllSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, handler partner.ISingleStoreStoreSkuHandler, storeID int, vendorStoreID string, isContinueWhenError bool) (err error) {
skuNameList, err := handler.GetStoreSkusFullInfo(ctx, parentTask, storeID, vendorStoreID, nil)
if err != nil {
return err
}
batchSize := handler.GetStoreSkusBatchSize(partner.FuncDeleteStoreSkus)
task := tasksch.NewParallelTask(fmt.Sprintf("DeleteStoreAllSkus, vendorStoreID:%s", vendorStoreID),
tasksch.NewParallelConfig().SetBatchSize(batchSize).SetIsContinueWhenError(isContinueWhenError), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
var skuList []*partner.StoreSkuInfo
for _, v := range batchItemList {
skuName := v.(*partner.SkuNameInfo)
skuList = append(skuList, &partner.StoreSkuInfo{
VendorSkuID: skuName.SkuList[0].VendorSkuID,
})
}
err = handler.DeleteStoreSkus(ctx, storeID, vendorStoreID, skuList)
return nil, err
}, skuNameList)
tasksch.HandleTask(task, parentTask, true).Run()
_, err = task.GetResult(0)
return err
}
func DeleteStoreAllCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, handler partner.ISingleStoreStoreSkuHandler, storeID int, vendorStoreID string, isContinueWhenError bool) (err error) {
catList, err := handler.GetStoreAllCategories(ctx, storeID, vendorStoreID)
if err != nil {
return err
}
catListMap := make(map[int][]*partner.BareCategoryInfo)
flattedCatList := flatCatList(catList)
for _, v := range flattedCatList {
catListMap[v.Level] = append(catListMap[v.Level], v)
}
var levelList []int
for k := range catListMap {
levelList = append(levelList, k)
}
sort.Sort(sort.Reverse(sort.IntSlice(levelList)))
task1 := tasksch.NewSeqTask(fmt.Sprintf("DeleteStoreAllCategories1, vendorStoreID:%s", vendorStoreID), ctx,
func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
task2 := tasksch.NewParallelTask(fmt.Sprintf("DeleteStoreAllCategories2, vendorStoreID:%s", vendorStoreID), tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
catInfo := batchItemList[0].(*partner.BareCategoryInfo)
err = handler.DeleteStoreCategory(ctx, storeID, vendorStoreID, catInfo.VendorCatID)
return nil, err
}, catListMap[levelList[step]])
tasksch.HandleTask(task2, task, true).Run()
_, err = task2.GetResult(0)
return nil, err
}, len(levelList))
tasksch.HandleTask(task1, parentTask, true).Run()
_, err = task1.GetResult(0)
return err
}
func flatCatList(catList []*partner.BareCategoryInfo) (flattedCatList []*partner.BareCategoryInfo) {
flattedCatList = append(flattedCatList, catList...)
for _, v := range catList {
flattedCatList = append(flattedCatList, flatCatList(v.Children)...)
}
return flattedCatList
}

View File

@@ -1,42 +1 @@
package cms
import (
"testing"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
)
func TestDeleteStoreAllSkus(t *testing.T) {
handler := partner.GetPurchasePlatformFromVendorID(model.VendorIDEBAI).(partner.ISingleStoreStoreSkuHandler)
err := DeleteStoreAllSkus(jxcontext.AdminCtx, nil, handler, 2, "2267254343", true)
if err != nil {
t.Fatal(err)
}
}
func TestDeleteStoreAllCategories(t *testing.T) {
handler := partner.GetPurchasePlatformFromVendorID(model.VendorIDEBAI).(partner.ISingleStoreStoreSkuHandler)
err := DeleteStoreAllCategories(jxcontext.AdminCtx, nil, handler, 2, "2267254343", true)
if err != nil {
t.Fatal(err)
}
}
func TestDeleteStoreAllSkusMtwm(t *testing.T) {
handler := partner.GetPurchasePlatformFromVendorID(model.VendorIDMTWM).(partner.ISingleStoreStoreSkuHandler)
err := DeleteStoreAllSkus(jxcontext.AdminCtx, nil, handler, 2, "2523687", true)
if err != nil {
t.Fatal(err)
}
}
func TestDeleteStoreAllCategoriesMtwm(t *testing.T) {
handler := partner.GetPurchasePlatformFromVendorID(model.VendorIDMTWM).(partner.ISingleStoreStoreSkuHandler)
err := DeleteStoreAllCategories(jxcontext.AdminCtx, nil, handler, 2, "2523687", true)
if err != nil {
t.Fatal(err)
}
}