diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index 973c5cf9d..2cb8d1961 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -23,8 +23,8 @@ type SyncError struct { } var ( - MultiStoresVendorHandlers []partner.IMultipleStoresHandler - SingleStoreVendorIDs []int + MultiStoreVendorIDs []int + SingleStoreVendorIDs []int ) var ( @@ -34,8 +34,8 @@ var ( func Init() { for k, v := range basesch.FixedBaseScheduler.PurchasePlatformHandlers { - if multiHandler, ok := v.(partner.IMultipleStoresHandler); ok { - MultiStoresVendorHandlers = append(MultiStoresVendorHandlers, multiHandler) + if _, ok := v.(partner.IMultipleStoresHandler); ok { + MultiStoreVendorIDs = append(MultiStoreVendorIDs, k) } else if _, ok := v.(partner.ISingleStoreHandler); ok { SingleStoreVendorIDs = append(SingleStoreVendorIDs, k) } else { @@ -46,7 +46,7 @@ func Init() { func (v *VendorSync) SyncCategory(db *dao.DaoDB, categoryID int, isForce bool, userName string) (err error) { err = v.LoopMultiStoresVendors(db, "SyncCategory", userName, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) { - multiStoresHandler := batchItemList[0].(partner.IMultipleStoresHandler) + multiStoresHandler := basesch.FixedBaseScheduler.GetPurchasePlatformFromVendorID(batchItemList[0].(int)).(partner.IMultipleStoresHandler) syncStatusFieldName := multiStoresHandler.GetFieldSyncStatusName() var cats []*model.SkuCategory cond := make(map[string]interface{}) @@ -86,7 +86,7 @@ func (v *VendorSync) SyncCategory(db *dao.DaoDB, categoryID int, isForce bool, u func (v *VendorSync) SyncReorderCategories(db *dao.DaoDB, categoryID int, isForce bool, userName string) (err error) { err = v.LoopMultiStoresVendors(db, "SyncReorderCategories", userName, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) { - multiStoresHandler := batchItemList[0].(partner.IMultipleStoresHandler) + multiStoresHandler := basesch.FixedBaseScheduler.GetPurchasePlatformFromVendorID(batchItemList[0].(int)).(partner.IMultipleStoresHandler) err2 := multiStoresHandler.ReorderCategories(db, categoryID, userName) if err2 == nil { cat := &model.SkuCategory{} @@ -118,7 +118,7 @@ func (v *VendorSync) SyncStore(db *dao.DaoDB, vendorID, storeID int, isForce boo func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, userName string) (err error) { globals.SugarLogger.Debugf("SyncSku, nameID:%d, skuID:%d, isForce:%t, userName:%s", nameID, skuID, isForce, userName) err = v.LoopMultiStoresVendors(db, "SyncSku", userName, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) { - multiStoresHandler := batchItemList[0].(partner.IMultipleStoresHandler) + multiStoresHandler := basesch.FixedBaseScheduler.GetPurchasePlatformFromVendorID(batchItemList[0].(int)).(partner.IMultipleStoresHandler) syncStatusFieldName := multiStoresHandler.GetFieldSyncStatusName() var skuList []*model.Sku cond := make(map[string]interface{}) @@ -166,10 +166,8 @@ func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, use func (v *VendorSync) SyncStoresSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isForce bool, userName string) (err error) { globals.SugarLogger.Debug("SyncStoresSkus") err = v.LoopStoreVendors(db, "SyncStoresSkus", userName, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) { - vendorID := batchItemList[0].(int) - if handler := GetPurchaseHandler(vendorID); handler != nil { - err = handler.SyncStoresSkus(db, storeIDs, skuIDs, isForce, userName) - } + handler := basesch.FixedBaseScheduler.GetPurchasePlatformFromVendorID(batchItemList[0].(int)) + err = handler.SyncStoresSkus(db, storeIDs, skuIDs, isForce, userName) return nil, err }) return err @@ -185,19 +183,22 @@ func (v *VendorSync) LoopStoreMap(db *dao.DaoDB, taskName, userName string, stor } func (v *VendorSync) LoopMultiStoresVendors(db *dao.DaoDB, taskName, userName string, handler tasksch.WorkFunc) (err error) { - task := tasksch.RunManagedTask(taskName, false, nil, len(MultiStoresVendorHandlers), 1, userName, handler, MultiStoresVendorHandlers) + if taskName == "" { + taskName = "LoopMultiStoresVendors" + } + task := tasksch.RunManagedTask(taskName, false, nil, len(MultiStoreVendorIDs), 1, userName, handler, MultiStoreVendorIDs) _, err = task.GetResult(0) return makeSyncError(err) } func (v *VendorSync) LoopStoreVendors(db *dao.DaoDB, taskName, userName string, handler tasksch.WorkFunc) (err error) { - vendorIDs := make([]int, len(basesch.FixedBaseScheduler.PurchasePlatformHandlers)) - index := 0 - for k := range basesch.FixedBaseScheduler.PurchasePlatformHandlers { - vendorIDs[index] = k - index++ + if taskName == "" { + taskName = "LoopStoreVendors" } - task := tasksch.RunManagedTask(taskName, false, nil, len(vendorIDs), 1, userName, handler, vendorIDs) + allHandlers := make([]int, len(MultiStoreVendorIDs)+len(SingleStoreVendorIDs)) + copy(allHandlers, MultiStoreVendorIDs) + copy(allHandlers[len(MultiStoreVendorIDs):], SingleStoreVendorIDs) + task := tasksch.RunManagedTask(taskName, false, nil, len(allHandlers), 1, userName, handler, allHandlers) _, err = task.GetResult(0) return makeSyncError(err) } @@ -243,7 +244,7 @@ func (v *VendorSync) RefreshSkuIDs(nameID, skuID int, isForce bool, userName str if err = dao.GetRows(db, &ids, sql, sqlParams); err == nil { // globals.SugarLogger.Debug(utils.Format4Output(ids, false)) err = v.LoopMultiStoresVendors(db, "RefreshSkuIDs", userName, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) { - multiStoresHandler := batchItemList[0].(partner.IMultipleStoresHandler) + multiStoresHandler := basesch.FixedBaseScheduler.GetPurchasePlatformFromVendorID(batchItemList[0].(int)).(partner.IMultipleStoresHandler) err := multiStoresHandler.SyncSkusIDMap(db, ids, userName) globals.SugarLogger.Debug(err) return nil, err