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 DeleteStoreAllCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, handler partner.ISingleStoreStoreSkuHandler, vendorStoreID string, isContinueWhenError bool) (err error) { catList, err := handler.GetStoreAllCategories(ctx, vendorStoreID) if err != nil { return err } catListMap := make(map[int][]*partner.BareCategoryInfo) for _, v := range catList { 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, 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 DeleteStoreAllSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, handler partner.ISingleStoreStoreSkuHandler, vendorStoreID string, isContinueWhenError bool) (err error) { return err }