- 新版同步逻辑编译通过,欠SKU的创建已存在与删除不存在判断逻辑
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
"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"
|
||||
"git.rosy.net.cn/jx-callback/business/partner/putils"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
)
|
||||
@@ -50,6 +51,14 @@ func convertVendorCatList(remoteCats []*ebaiapi.CategoryInfo) (cats []*partner.B
|
||||
return cats
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) IsErrCategoryExist(err error) (isExist bool) {
|
||||
return ebaiapi.IsErrCategoryExist(err)
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) IsErrCategoryNotExist(err error) (isNotExist bool) {
|
||||
return ebaiapi.IsErrCategoryNotExist(err)
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) CreateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (err error) {
|
||||
var vendorCatID int64
|
||||
if globals.EnableEbaiStoreWrite {
|
||||
@@ -78,16 +87,16 @@ func (p *PurchaseHandler) DeleteStoreCategory(ctx *jxcontext.Context, storeID in
|
||||
// 门店商品
|
||||
|
||||
// 多门店平台不需要实现这个接口
|
||||
func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (err error) {
|
||||
func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (successList []*dao.StoreSkuSyncInfo, err error) {
|
||||
storeSku := storeSkuList[0]
|
||||
if globals.EnableEbaiStoreWrite {
|
||||
_, err = api.EbaiAPI.SkuUpdate(utils.Int2Str(storeID), utils.Str2Int64(storeSku.VendorSkuID), genSkuParamsFromStoreSkuInfo2(storeSku))
|
||||
}
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 对于多门店平台来说,storeSkuList中只有SkuID与VendorSkuID有意义
|
||||
func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (err error) {
|
||||
func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (successList []*dao.StoreSkuSyncInfo, err error) {
|
||||
storeSku := storeSkuList[0]
|
||||
var vendorSkuID int64
|
||||
if globals.EnableEbaiStoreWrite {
|
||||
@@ -96,40 +105,45 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v
|
||||
vendorSkuID = jxutils.GenFakeID()
|
||||
}
|
||||
storeSku.VendorSkuID = utils.Int64ToStr(vendorSkuID)
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
|
||||
func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (successList []*partner.StoreSkuInfo, err error) {
|
||||
if globals.EnableEbaiStoreWrite {
|
||||
_, err = api.EbaiAPI.SkuDelete(utils.Int2Str(storeID), partner.BareStoreSkuInfoList(storeSkuList).GetVendorSkuIDIntList(), nil)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
|
||||
var validSkus, invalidSkus []int64
|
||||
for _, storeSku := range storeSkuList {
|
||||
if storeSku.Status == model.SkuStatusNormal {
|
||||
validSkus = append(validSkus, utils.Str2Int64(storeSku.VendorSkuID))
|
||||
} else {
|
||||
invalidSkus = append(invalidSkus, utils.Str2Int64(storeSku.VendorSkuID))
|
||||
}
|
||||
}
|
||||
if globals.EnableEbaiStoreWrite {
|
||||
if len(invalidSkus) > 1 {
|
||||
_, err = api.EbaiAPI.SkuOffline(utils.Int2Str(storeID), invalidSkus, nil, nil)
|
||||
} else if len(invalidSkus) == 1 {
|
||||
err = api.EbaiAPI.SkuOfflineOne(utils.Int2Str(storeID), invalidSkus[0], "", "")
|
||||
}
|
||||
if err == nil {
|
||||
if len(validSkus) > 1 {
|
||||
_, err = api.EbaiAPI.SkuOnline(utils.Int2Str(storeID), validSkus, nil, nil)
|
||||
} else if len(validSkus) == 1 {
|
||||
err = api.EbaiAPI.SkuOnlineOne(utils.Int2Str(storeID), validSkus[0], "", "")
|
||||
failedEbaiSkuIDs, err2 := api.EbaiAPI.SkuDelete(utils.Int2Str(storeID), partner.BareStoreSkuInfoList(storeSkuList).GetVendorSkuIDIntList(), nil)
|
||||
if err = err2; err == nil {
|
||||
if err = putils.GenPartialFailedErr(failedEbaiSkuIDs, len(failedEbaiSkuIDs)); err != nil {
|
||||
successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, utils.Int64Slice2String(failedEbaiSkuIDs))
|
||||
}
|
||||
}
|
||||
}
|
||||
return err
|
||||
return successList, err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo, status int) (successList []*partner.StoreSkuInfo, err error) {
|
||||
vendorSkuIDs := partner.BareStoreSkuInfoList(storeSkuList).GetVendorSkuIDIntList()
|
||||
if globals.EnableEbaiStoreWrite {
|
||||
var failedEbaiSkuIDs []int64
|
||||
if status == model.SkuStatusNormal {
|
||||
if len(vendorSkuIDs) > 1 {
|
||||
failedEbaiSkuIDs, err = api.EbaiAPI.SkuOnline(utils.Int2Str(storeID), vendorSkuIDs, nil, nil)
|
||||
} else if len(vendorSkuIDs) == 1 {
|
||||
err = api.EbaiAPI.SkuOnlineOne(utils.Int2Str(storeID), vendorSkuIDs[0], "", "")
|
||||
}
|
||||
} else {
|
||||
if len(vendorSkuIDs) > 1 {
|
||||
failedEbaiSkuIDs, err = api.EbaiAPI.SkuOffline(utils.Int2Str(storeID), vendorSkuIDs, nil, nil)
|
||||
} else if len(vendorSkuIDs) == 1 {
|
||||
err = api.EbaiAPI.SkuOfflineOne(utils.Int2Str(storeID), vendorSkuIDs[0], "", "")
|
||||
}
|
||||
}
|
||||
if err == nil {
|
||||
if err = putils.GenPartialFailedErr(failedEbaiSkuIDs, len(failedEbaiSkuIDs)); err != nil {
|
||||
successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, utils.Int64Slice2String(failedEbaiSkuIDs))
|
||||
}
|
||||
}
|
||||
}
|
||||
return successList, err
|
||||
}
|
||||
|
||||
func StoreSkuInfoList2Ebai(storeSkuList []*partner.StoreSkuInfo) (outList ebaiapi.ShopSkuInfoList) {
|
||||
@@ -145,26 +159,45 @@ func StoreSkuInfoList2Ebai(storeSkuList []*partner.StoreSkuInfo) (outList ebaiap
|
||||
return outList
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
|
||||
func getFailedVendorIDs(l []*ebaiapi.ShopSkuPriceUpdateResponseItem) (vendorSkuIDs []string) {
|
||||
for _, v := range l {
|
||||
if v.ErrorNo != 0 {
|
||||
vendorSkuIDs = append(vendorSkuIDs, utils.Int64ToStr(v.SkuID))
|
||||
}
|
||||
}
|
||||
return vendorSkuIDs
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (successList []*partner.StoreSkuInfo, err error) {
|
||||
if globals.EnableEbaiStoreWrite {
|
||||
if len(storeSkuList) > 1 {
|
||||
_, err = api.EbaiAPI.SkuPriceUpdateBatch(utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList), ebaiapi.SkuIDTypeSkuID)
|
||||
updateResponse, err2 := api.EbaiAPI.SkuPriceUpdateBatch(utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList), ebaiapi.SkuIDTypeSkuID)
|
||||
if err = err2; err != nil {
|
||||
if len(updateResponse.FailedList) > 0 {
|
||||
successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getFailedVendorIDs(updateResponse.FailedList))
|
||||
}
|
||||
}
|
||||
} else if len(storeSkuList) == 1 {
|
||||
err = api.EbaiAPI.SkuPriceUpdateOne(utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList)[0])
|
||||
}
|
||||
}
|
||||
return err
|
||||
return successList, err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
|
||||
func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (successList []*partner.StoreSkuInfo, err error) {
|
||||
if globals.EnableEbaiStoreWrite {
|
||||
if len(storeSkuList) > 1 {
|
||||
_, err = api.EbaiAPI.SkuStockUpdateBatch(utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList), ebaiapi.SkuIDTypeSkuID)
|
||||
failedEbaiSkuIDs, err2 := api.EbaiAPI.SkuStockUpdateBatch(utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList), ebaiapi.SkuIDTypeSkuID)
|
||||
if err = err2; err == nil {
|
||||
if err = putils.GenPartialFailedErr(failedEbaiSkuIDs, len(failedEbaiSkuIDs)); err != nil {
|
||||
successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, utils.Int64Slice2String(failedEbaiSkuIDs))
|
||||
}
|
||||
}
|
||||
} else if len(storeSkuList) == 1 {
|
||||
err = api.EbaiAPI.SkuStockUpdateOne(utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList)[0])
|
||||
}
|
||||
}
|
||||
return err
|
||||
return successList, err
|
||||
}
|
||||
|
||||
func genSkuParamsFromStoreSkuInfo2(storeSku *dao.StoreSkuSyncInfo) (params map[string]interface{}) {
|
||||
@@ -232,7 +265,7 @@ func (p *PurchaseHandler) GetStoreSkusFullInfo(ctx *jxcontext.Context, parentTas
|
||||
for i := 2; i <= page1.Pages; i++ {
|
||||
pages[i-2] = i
|
||||
}
|
||||
task := tasksch.NewParallelTask("ebai GetStoreAllSkus", nil, ctx,
|
||||
task := tasksch.NewParallelTask("ebai GetStoreSkusFullInfo", nil, ctx,
|
||||
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
callParams := &ebaiapi.SkuListParams{
|
||||
PageSize: MaxPageSize,
|
||||
|
||||
Reference in New Issue
Block a user