diff --git a/business/jxstore/cms/cms.go b/business/jxstore/cms/cms.go index dff8ca85a..38b14b286 100644 --- a/business/jxstore/cms/cms.go +++ b/business/jxstore/cms/cms.go @@ -89,11 +89,10 @@ func InitServiceInfo(version string, buildTime time.Time, gitCommit string) { "actCreateTypeName": model.ActCreateTypeName, "storeAuditStatusName": model.StoreAuditStatusName, "configTypeName": model.ConfigTypeName, - "autoSaleAt": "20:45:00", + "autoSaleAt": AutoSaleAtStr, "userTypeName": model.UserTypeName, }, } - Init() } func GetServiceInfo(ctx *jxcontext.Context) interface{} { diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index ba33c7d9d..997f4ab1e 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -174,7 +174,7 @@ func SetStoreCategorySyncStatus2(db *dao.DaoDB, storeIDs []int, catIDs []int, sy } } }() - for _, vendorID := range CurVendorSync.SingleStoreVendorIDs { + for _, vendorID := range partner.GetSingleStoreVendorIDs() { num2, err2 := dao.SetStoreCategorySyncStatus(db, vendorID, storeIDs, catIDs, syncStatus) if err = err2; err != nil { return 0, err @@ -703,7 +703,7 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf if err == nil { skuIDs, err2 := dao.GetSkuIDByNames(db, []int{nameID}) if err = err2; err == nil && len(skuIDs) > 0 { - _, err = SetStoreSkuSyncStatus2(db, nil, CurVendorSync.SingleStoreVendorIDs, skuIDs, model.SyncFlagModifiedMask) + _, err = SetStoreSkuSyncStatus2(db, nil, partner.GetSingleStoreVendorIDs(), skuIDs, model.SyncFlagModifiedMask) } if err == nil { dao.Commit(db) @@ -832,7 +832,7 @@ func UpdateSku(ctx *jxcontext.Context, skuID int, payload map[string]interface{} t1.spec_unit = t2.spec_unit WHERE t1.deleted_at = ? AND t2.id = ? AND t1.unit <> ? `, utils.DefaultTimeValue, skuID, model.SpecialUnit); err == nil { - if _, err = SetStoreSkuSyncStatus2(db, nil, CurVendorSync.SingleStoreVendorIDs, []int{skuID}, model.SyncFlagModifiedMask); err == nil { + if _, err = SetStoreSkuSyncStatus2(db, nil, partner.GetSingleStoreVendorIDs(), []int{skuID}, model.SyncFlagModifiedMask); err == nil { if maskValue&model.SyncFlagSpecMask != 0 { err = refreshStoreSkuPrice(ctx, db, skuID) } diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index 0507ae995..f7945d6da 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -3,7 +3,6 @@ package cms import ( "errors" "fmt" - "reflect" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" @@ -13,7 +12,6 @@ import ( "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" - "git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/globals/refutil" ) @@ -23,9 +21,6 @@ type LoopStoreMapInfo struct { } type VendorSync struct { - MultiStoreVendorIDs []int - SingleStoreVendorIDs []int - PurchaseHandlers map[int]partner.IPurchasePlatformHandler } type SyncError struct { @@ -52,34 +47,6 @@ var ( ErrEntityNotExist = errors.New("找不到相应实体") ) -func Init() { - apiMap := map[int]interface{}{ - model.VendorIDJD: api.JdAPI, - model.VendorIDELM: api.ElmAPI, - model.VendorIDEBAI: api.EbaiAPI, - model.VendorIDMTWM: api.MtwmAPI, - model.VendorIDWSC: api.WeimobAPI, - } - CurVendorSync.PurchaseHandlers = make(map[int]partner.IPurchasePlatformHandler) - for k, v := range partner.PurchasePlatformHandlers { - if !reflect.ValueOf(apiMap[k]).IsNil() { - if multiHandler, ok := v.(partner.IMultipleStoresHandler); ok { - CurVendorSync.MultiStoreVendorIDs = append(CurVendorSync.MultiStoreVendorIDs, k) - CurVendorSync.PurchaseHandlers[k] = &MultiStoreHandlerWrapper{ - IMultipleStoresHandler: multiHandler, - } - } else if singleHandler, ok := v.(partner.ISingleStoreHandler); ok { - CurVendorSync.SingleStoreVendorIDs = append(CurVendorSync.SingleStoreVendorIDs, k) - CurVendorSync.PurchaseHandlers[k] = &SingleStoreHandlerWrapper{ - ISingleStoreHandler: singleHandler, - } - } else { - panic(fmt.Sprintf("platform:%d type is wrong!", k)) - } - } - } -} - func (p *MultiStoreHandlerWrapper) DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error) { if jxutils.IsEmptyID(cat.JdID) { return nil @@ -112,18 +79,18 @@ func (p *MultiStoreHandlerWrapper) UpdateSku(db *dao.DaoDB, sku *model.Sku, user } func (v *VendorSync) GetStoreHandler(vendorID int) partner.IPurchasePlatformHandler { - return v.PurchaseHandlers[vendorID] + return partner.GetPurchasePlatformFromVendorID(vendorID) } func (v *VendorSync) GetMultiStoreHandler(vendorID int) partner.IMultipleStoresHandler { - if handler, ok := v.PurchaseHandlers[vendorID].(partner.IMultipleStoresHandler); ok { + if handler, ok := v.GetStoreHandler(vendorID).(partner.IMultipleStoresHandler); ok { return handler } return nil } func (v *VendorSync) GetSingleStoreHandler(vendorID int) partner.ISingleStoreHandler { - if handler, ok := v.PurchaseHandlers[vendorID].(partner.ISingleStoreHandler); ok { + if handler, ok := v.GetStoreHandler(vendorID).(partner.ISingleStoreHandler); ok { return handler } return nil @@ -162,7 +129,7 @@ func (v *VendorSync) syncCategories(ctx *jxcontext.Context, parentTask tasksch.I } func (v *VendorSync) SyncCategory(ctx *jxcontext.Context, db *dao.DaoDB, categoryID int, isAsync bool, userName string) (hint string, err error) { - globals.SugarLogger.Debug(v.MultiStoreVendorIDs) + globals.SugarLogger.Debug("SyncCategory") hint, err = v.LoopMultiStoresVendors(ctx, db, fmt.Sprintf("同步分类信息:%d", categoryID), isAsync, false, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) { vendorID := batchItemList[0].(int) @@ -595,7 +562,7 @@ func (v *VendorSync) LoopStoresMap(ctx *jxcontext.Context, db *dao.DaoDB, taskNa } func (v *VendorSync) LoopMultiStoresVendors(ctx *jxcontext.Context, db *dao.DaoDB, taskName string, isAsync bool, isManageIt bool, handler tasksch.WorkFunc) (hint string, err error) { - task := tasksch.NewParallelTask(taskName, tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, handler, v.MultiStoreVendorIDs) + task := tasksch.NewParallelTask(taskName, tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, handler, partner.GetMultiStoreVendorIDs()) tasksch.HandleTask(task, nil, isManageIt).Run() if !isAsync { result, err2 := task.GetResult(0) diff --git a/business/partner/partner.go b/business/partner/partner.go index b235ada26..8d08c2f71 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -211,9 +211,32 @@ func RegisterPurchasePlatform(handler IPurchasePlatformHandler) { if _, ok := PurchasePlatformHandlers[vendorID]; ok { panic(fmt.Sprintf("purchase vendor:%d, already exists", vendorID)) } + _, isSingleStore := handler.(ISingleStoreHandler) + _, isMultiStore := handler.(IMultipleStoresHandler) + if !isSingleStore && !isMultiStore { + panic(fmt.Sprintf("platform:%d type is wrong!", vendorID)) + } PurchasePlatformHandlers[vendorID] = handler } func GetPurchasePlatformFromVendorID(vendorID int) IPurchasePlatformHandler { return PurchasePlatformHandlers[vendorID] } + +func GetMultiStoreVendorIDs() (vendorIDs []int) { + for k, v := range PurchasePlatformHandlers { + if _, ok := v.(IMultipleStoresHandler); ok { + vendorIDs = append(vendorIDs, k) + } + } + return vendorIDs +} + +func GetSingleStoreVendorIDs() (vendorIDs []int) { + for k, v := range PurchasePlatformHandlers { + if _, ok := v.(ISingleStoreHandler); !ok { + vendorIDs = append(vendorIDs, k) + } + } + return vendorIDs +}