- 整理sync.go
This commit is contained in:
@@ -89,11 +89,10 @@ func InitServiceInfo(version string, buildTime time.Time, gitCommit string) {
|
|||||||
"actCreateTypeName": model.ActCreateTypeName,
|
"actCreateTypeName": model.ActCreateTypeName,
|
||||||
"storeAuditStatusName": model.StoreAuditStatusName,
|
"storeAuditStatusName": model.StoreAuditStatusName,
|
||||||
"configTypeName": model.ConfigTypeName,
|
"configTypeName": model.ConfigTypeName,
|
||||||
"autoSaleAt": "20:45:00",
|
"autoSaleAt": AutoSaleAtStr,
|
||||||
"userTypeName": model.UserTypeName,
|
"userTypeName": model.UserTypeName,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
Init()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetServiceInfo(ctx *jxcontext.Context) interface{} {
|
func GetServiceInfo(ctx *jxcontext.Context) interface{} {
|
||||||
|
|||||||
@@ -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)
|
num2, err2 := dao.SetStoreCategorySyncStatus(db, vendorID, storeIDs, catIDs, syncStatus)
|
||||||
if err = err2; err != nil {
|
if err = err2; err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
@@ -703,7 +703,7 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
skuIDs, err2 := dao.GetSkuIDByNames(db, []int{nameID})
|
skuIDs, err2 := dao.GetSkuIDByNames(db, []int{nameID})
|
||||||
if err = err2; err == nil && len(skuIDs) > 0 {
|
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 {
|
if err == nil {
|
||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
@@ -832,7 +832,7 @@ func UpdateSku(ctx *jxcontext.Context, skuID int, payload map[string]interface{}
|
|||||||
t1.spec_unit = t2.spec_unit
|
t1.spec_unit = t2.spec_unit
|
||||||
WHERE t1.deleted_at = ? AND t2.id = ? AND t1.unit <> ?
|
WHERE t1.deleted_at = ? AND t2.id = ? AND t1.unit <> ?
|
||||||
`, utils.DefaultTimeValue, skuID, model.SpecialUnit); err == nil {
|
`, 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 {
|
if maskValue&model.SyncFlagSpecMask != 0 {
|
||||||
err = refreshStoreSkuPrice(ctx, db, skuID)
|
err = refreshStoreSkuPrice(ctx, db, skuID)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package cms
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"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/model/dao"
|
||||||
"git.rosy.net.cn/jx-callback/business/partner"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
|
||||||
"git.rosy.net.cn/jx-callback/globals/refutil"
|
"git.rosy.net.cn/jx-callback/globals/refutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -23,9 +21,6 @@ type LoopStoreMapInfo struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type VendorSync struct {
|
type VendorSync struct {
|
||||||
MultiStoreVendorIDs []int
|
|
||||||
SingleStoreVendorIDs []int
|
|
||||||
PurchaseHandlers map[int]partner.IPurchasePlatformHandler
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type SyncError struct {
|
type SyncError struct {
|
||||||
@@ -52,34 +47,6 @@ var (
|
|||||||
ErrEntityNotExist = errors.New("找不到相应实体")
|
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) {
|
func (p *MultiStoreHandlerWrapper) DeleteCategory(db *dao.DaoDB, cat *model.SkuCategory, userName string) (err error) {
|
||||||
if jxutils.IsEmptyID(cat.JdID) {
|
if jxutils.IsEmptyID(cat.JdID) {
|
||||||
return nil
|
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 {
|
func (v *VendorSync) GetStoreHandler(vendorID int) partner.IPurchasePlatformHandler {
|
||||||
return v.PurchaseHandlers[vendorID]
|
return partner.GetPurchasePlatformFromVendorID(vendorID)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *VendorSync) GetMultiStoreHandler(vendorID int) partner.IMultipleStoresHandler {
|
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 handler
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *VendorSync) GetSingleStoreHandler(vendorID int) partner.ISingleStoreHandler {
|
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 handler
|
||||||
}
|
}
|
||||||
return nil
|
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) {
|
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,
|
hint, err = v.LoopMultiStoresVendors(ctx, db, fmt.Sprintf("同步分类信息:%d", categoryID), isAsync, false,
|
||||||
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||||
vendorID := batchItemList[0].(int)
|
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) {
|
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()
|
tasksch.HandleTask(task, nil, isManageIt).Run()
|
||||||
if !isAsync {
|
if !isAsync {
|
||||||
result, err2 := task.GetResult(0)
|
result, err2 := task.GetResult(0)
|
||||||
|
|||||||
@@ -211,9 +211,32 @@ func RegisterPurchasePlatform(handler IPurchasePlatformHandler) {
|
|||||||
if _, ok := PurchasePlatformHandlers[vendorID]; ok {
|
if _, ok := PurchasePlatformHandlers[vendorID]; ok {
|
||||||
panic(fmt.Sprintf("purchase vendor:%d, already exists", vendorID))
|
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
|
PurchasePlatformHandlers[vendorID] = handler
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetPurchasePlatformFromVendorID(vendorID int) IPurchasePlatformHandler {
|
func GetPurchasePlatformFromVendorID(vendorID int) IPurchasePlatformHandler {
|
||||||
return PurchasePlatformHandlers[vendorID]
|
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
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user