package cms import ( "fmt" "git.rosy.net.cn/jx-callback/business/partner/putils" "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/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/partner" ) func SyncStoreSkuNew(ctx *jxcontext.Context, vendorID, storeID int, vendorStoreID string, nameIDs, skuIDs []int) (hint string, err error) { return hint, err } func PruneMissingStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID, storeID int, vendorStoreID string, isAsync, isContinueWhenError bool) (hint string, err error) { handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) if handler == nil { return "", fmt.Errorf("平台:%s不支持此操作", model.VendorChineseNames[vendorID]) } db := dao.GetDB() localSkuList, err := dao.GetStoreSkus2(db, vendorID, storeID, nil, false) if err != nil { return "", err } localSkuMap := make(map[int]*dao.StoreSkuSyncInfo) for _, v := range localSkuList { localSkuMap[v.SkuID] = v } var sku2Delete []*partner.StoreSkuInfo task := tasksch.NewSeqTask(fmt.Sprintf("PruneMissingStoreSkus平台:%s", model.VendorChineseNames[vendorID]), ctx, func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { switch step { case 0: remoteSkuList, err2 := handler.GetStoreSkusFullInfo(ctx, task, storeID, vendorStoreID, nil) if err = err2; err == nil { for _, v := range remoteSkuList { if localSkuMap[v.SkuList[0].SkuID] == nil { sku2Delete = append(sku2Delete, &partner.StoreSkuInfo{ SkuID: v.SkuList[0].SkuID, VendorSkuID: v.SkuList[0].VendorSkuID, }) } } } case 1: if len(sku2Delete) > 0 { _, err = putils.FreeBatchStoreSkuInfo(func(batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, err error) { err = handler.DeleteStoreSkus(ctx, storeID, vendorStoreID, sku2Delete) return nil, err }, ctx, parentTask, sku2Delete, handler.GetStoreSkusBatchSize(partner.FuncDeleteStoreSkus)) } } return nil, err }, 2) tasksch.HandleTask(task, parentTask, true).Run() if isAsync { hint = task.GetID() } else { _, err = task.GetResult(0) } return hint, err }