@@ -955,14 +955,14 @@ func (v *VendorSync) SyncStoreSkusFromYb(ctx *jxcontext.Context, storeIDs []int,
func syncStoreSkusFromYb ( ctx * jxcontext . Context , storeID , vendorID int , vendorStoreID string , isAsync , isContinueWhenError bool ) ( hint string , err error ) {
func syncStoreSkusFromYb ( ctx * jxcontext . Context , storeID , vendorID int , vendorStoreID string , isAsync , isContinueWhenError bool ) ( hint string , err error ) {
var (
var (
db = dao . GetDB ( )
db = dao . GetDB ( )
localSkuMap = make ( map [ string ] * dao . StoreSkuSyncInfo )
localSkuMap = make ( map [ string ] * dao . StoreSkuSyncInfo )
vendorSkuMap = make ( map [ string ] * partner . SkuNameInfo )
vendorSkuMap = make ( map [ string ] * partner . SkuNameInfo )
skuBindInfosDel [ ] * StoreSkuBindInfo
// skuBindInfosDel []* StoreSkuBindInfo
skuBindInfosUpt [ ] * StoreSkuBindInfo
// skuBindInfosUpt []* StoreSkuBindInfo
addList [ ] * partner . SkuNameInfo
addList [ ] * partner . SkuNameInfo
updateList [ ] * partner . SkuNameInfo
updateList [ ] * partner . SkuNameInfo
deleteList [ ] * dao . StoreSkuSyncInfo
deleteList [ ] * dao . StoreSkuSyncInfo
)
)
handler , _ := partner . GetPurchasePlatformFromVendorID ( vendorID ) . ( partner . ISingleStoreStoreSkuHandler )
handler , _ := partner . GetPurchasePlatformFromVendorID ( vendorID ) . ( partner . ISingleStoreStoreSkuHandler )
@@ -992,101 +992,102 @@ func syncStoreSkusFromYb(ctx *jxcontext.Context, storeID, vendorID int, vendorSt
deleteList = append ( deleteList , v )
deleteList = append ( deleteList , v )
}
}
}
}
// fmt. Println( "remoteSkuList", len( remoteSkuList) )
fmt . Println( "remoteSkuList", len ( remoteSkuList) )
// fmt. Println( "addList", len( addList) )
fmt . Println( "addList", len ( addList) )
// fmt. Println( "updateList", len(updateList) )
fmt . Println( "updateList", utils . Format4Output ( updateList , false ) )
taskSeqFunc := func ( task * tasksch . SeqTask , step int , params ... interface { } ) ( result interface { } , err error ) {
fmt . Println ( "deleteList" , utils . Format4Output ( deleteList , false ) )
store , _ := dao . GetStoreDetail ( db , storeID , vendorID )
// taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
switch step {
// store, _ := dao.GetStoreDetail(db, storeID, vendorID)
case 0 :
// switch step {
if len ( addList ) > 0 {
// case 0:
taskFunc := func ( task * tasksch . ParallelTask , batchItemList [ ] interface { } , params ... interface { } ) ( retVal interface { } , err error ) {
// if len(addList) > 0 {
var (
// taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
v = batchItemList [ 0 ] . ( * partner . SkuNameInfo )
// var (
upc = v . YbBarCode
// v = batchItemList[0].(*partner.SkuNameInfo)
)
// upc = v.YbBarCode
err = AddSkuNameByUpc ( ctx , upc , store , v )
// )
if err != nil {
// err = AddSkuNameByUpc(ctx, upc, store, v)
task . AddFailedList ( putils . GetErrMsg2FailedSingleList ( nil , err , storeID , model . VendorChineseNames [ vendorID ] , "根据upc创建京西商品" ) )
// if err != nil {
}
// task.AddFailedList(putils.GetErrMsg2FailedSingleList(nil, err, storeID, model.VendorChineseNames[vendorID], "根据upc创建京西商品"))
return retVal , err
// }
}
// return retVal, err
taskParallel := tasksch . NewParallelTask ( "创建商品" , tasksch . NewParallelConfig ( ) . SetIsContinueWhenError ( true ) , ctx , taskFunc , addList )
// }
tasksch . Hand leTask( taskParallel , task , true ) . Run ( )
// taskParallel := tasksch.NewParal lel Task("创建商品", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, taskFunc, addList )
_ , err = taskParallel . GetResult ( 0 )
// tasksch.HandleTask(taskParallel, task, true).Run( )
}
// _, err = taskParallel.GetResult(0)
case 1 :
// }
if len ( deleteList ) > 0 {
// case 1:
taskFunc := func ( task * tasksch . ParallelTask , batchI tem List [ ] interface { } , params ... interface { } ) ( retVal interface { } , err error ) {
// if len(dele teList) > 0 {
var (
// taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
v = batchItemList [ 0 ] . ( * dao . StoreSkuSyncInfo )
// var (
)
// v = batchItemList[0].(*dao.StoreSkuSyncInfo )
skuBindInfo := & StoreSkuBindInfo {
// )
NameID : v . NameID ,
// skuBindInfo := &StoreSkuBindInfo{
IsFocus : - 1 ,
// NameID: v.NameID ,
}
// IsFocus: -1,
retVal = [ ] * StoreSkuBindInfo { skuBindInfo }
// }
return retVal , err
// retVal = []*StoreSkuBindInfo{skuBindInfo}
}
// return retVal, err
taskParallel := tasksch . NewParallelTask ( "删除商品" , tasksch . NewParallelConfig ( ) . SetIsContinueWhenError ( true ) , ctx , taskFunc , deleteList )
// }
tasksch . Hand leTask( taskParallel , task , true ) . Run ( )
// taskParallel := tasksch.NewParal lel Task("删除商品", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, taskFunc, deleteList )
resultDel , _ := taskParallel . GetResult ( 0 )
// tasksch.HandleTask(taskParallel, task, true).Run( )
for _ , v := range resultDel {
// resultDel, _ := taskParallel.GetResult(0)
skuBindInfosDel = append ( skuBindInfosDel , v . ( * StoreSkuBindInfo ) )
// for _, v := range resultDel {
}
// skuBindInfosDel = append(skuBindInfosDel, v.(*StoreSkuBindInfo))
_ , err = updateStoresSkusWithoutSync ( ctx , db , [ ] int { storeID } , skuBindInfosDel , false , false )
// }
}
// _, err = updateStoresSkusWithoutSync(ctx, db, []int{storeID}, skuBindInfosDel, false, false)
case 2 :
// }
if len ( updateList ) > 0 {
// case 2:
taskFunc := func ( task * tasksch . ParallelTask , batchItemList [ ] interface { } , params ... interface { } ) ( retVal interface { } , err error ) {
// if len(updateList) > 0 {
var (
// taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
v = batchItemList [ 0 ] . ( * partner . SkuNameInfo )
// var (
skuBindInfo = & StoreSkuBindInfo { }
// v = batchItemList[0].(*partner.SkuNameInfo)
storeSkus [ ] * dao . StoreSkuExt
// skuBindInfo = &StoreSkuBindInfo{}
pricePercentagePack [ ] * model . PricePercentageItem
// storeSkus []*dao.StoreSkuExt
)
// pricePercentagePack []*model.PricePercentageItem
sql := `
// )
SELECT a.*, c.id name_id
// sql := `
FROM store_sku_bind a
// SELECT a.*, c.id name_id
JOIN sku b ON a.sku_id = b.id
// FROM store_sku_bind a
JOIN sku_name c ON c.id = b.name_id
// JOIN sku b ON a.sku_id = b.id
WHERE a.store_id = ? AND a.yb_id = ? AND a.deleted_at = ?
// JOIN sku_name c ON c.id = b.name_id
`
// WHERE a.store_id = ? AND a.yb_id = ? AND a.deleted_at = ?
sqlParams := [ ] interface { } { storeID , v . SkuList [ 0 ] . VendorSkuID , utils . DefaultTimeValue }
// `
err = dao . GetRows ( db , & st ore Skus , sql , sqlParams )
// sqlParams := []interface{}{storeID, v.SkuList[0].Vend orSkuID, utils.DefaultTimeValue}
if len ( storeSkus ) > 0 {
// err = dao.GetRows(db, &storeSkus, sql, sqlParams)
if storeSkus [ 0 ] . YbPrice != int ( v . SkuList [ 0 ] . VendorPrice ) {
// if len(storeSkus) > 0 {
err = jxutils . Strings2Objs ( store . PricePercentagePackStr , & pricePercentagePack )
// if storeSkus[0].YbPrice != int(v.SkuList[0].VendorPrice) {
skuBindInfo . UnitPrice = jxutils . CaculateJxPriceByPricePack ( pricePercentagePack , 0 , int ( v . SkuList [ 0 ] . VendorPrice ) )
// err = jxutils.Strings2Objs(store.PricePercentagePackStr, &pricePercentagePack )
}
// skuBindInfo.UnitPrice = jxutils.CaculateJxPriceByPricePack(pricePercentagePack, 0, int(v.SkuList[0].VendorPrice))
} else {
// }
return retVal , fmt . Errorf ( "未查询到门店商品, yb_id [%v]" , v . SkuList [ 0 ] . VendorSkuID )
// } else {
}
// return retVal, fmt.Errorf("未查询到门店商品, yb_id [%v]", v.SkuList[0].VendorSkuID)
if v . SkuList [ 0 ] . Stock < 1 {
// }
skuBindInfo . IsSale = model . StoreSkuBindStatusDontSale
// if v.SkuList[0].Stock < 1 {
} else {
// skuBindInfo.IsSale = model.StoreSkuBindStatusDontSale
skuBindInfo . IsSale = model . StoreSkuBindStatusNormal
// } else {
}
// skuBindInfo.IsSale = model.StoreSkuBindStatusNormal
skuBindInfo . NameID = storeSkus [ 0 ] . NameID
// }
retVal = [ ] * StoreSkuBindInfo { skuBindInfo }
// skuBindInfo.NameID = storeSkus[0].NameID
return retVal , err
// retVal = []*StoreSkuBindInfo{skuBindInfo}
}
// return retVal, err
taskParallel := tasksch . NewParallelTask ( "更新商品价格和库存" , tasksch . NewParallelConfig ( ) . SetIsContinueWhenError ( true ) , ctx , taskFunc , updateList )
// }
tasksch . Hand leTask( taskParallel , task , true ) . Run ( )
// taskParallel := tasksch.NewParal lel Task("更新商品价格和库存", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, taskFunc, updateList )
resultUpt , _ := taskParallel . GetResult ( 0 )
// tasksch.HandleTask(taskParallel, task, true).Run( )
for _ , v := range resultUpt {
// resultUpt, _ := taskParallel.GetResult(0)
skuBindInfosUpt = append ( skuBindInfosUpt , v . ( * StoreSkuBindInfo ) )
// for _, v := range resultUpt {
}
// skuBindInfosUpt = append(skuBindInfosUpt, v.(*StoreSkuBindInfo))
_ , err = updateStoresSkusWithoutSync ( ctx , db , [ ] int { storeID } , skuBindInfosUpt , false , false )
// }
}
// _, err = updateStoresSkusWithoutSync(ctx, db, []int{storeID}, skuBindInfosUpt, false, false)
case 3 :
// }
_ , err = CurVendorSync . SyncStoresSkus2 ( jxcontext . AdminCtx , nil , 0 , db , [ ] int { 0 , 1 , 3 } , nil , false , nil , nil , 0 , true , true )
// case 3:
}
// _, err = CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{0, 1, 3}, nil, false, nil, nil, 0, true, true)
return result , err
// }
}
// return result, err
taskSeq := tasksch . NewSeqTask2 ( "同步银豹商品到京西" , ctx , true , taskSeqFunc , 3 )
// }
tasksch . HandleTask ( taskSeq , nil , true ) . Run ( )
// taskSeq := tasksch.NewSeqTask2("同步银豹商品到京西", ctx, true, taskSeqFunc, 3 )
hint = taskSeq . GetID ( )
// tasksch.HandleTask(taskSeq, nil, true).Run( )
// hint = taskSeq.GetID()
return hint , err
return hint , err
}
}
@@ -1118,9 +1119,13 @@ func syncJdsStoreStock(ctx *jxcontext.Context, db *dao.DaoDB, storeSkus []*model
stock = 9999
stock = 9999
}
}
storeSku2 , _ := dao . GetStoresSkusInfo ( db , [ ] int { storeMap . StoreID } , [ ] int { storeSku . SkuID } )
storeSku2 , _ := dao . GetStoresSkusInfo ( db , [ ] int { storeMap . StoreID } , [ ] int { storeSku . SkuID } )
if storeSku . JdsID != 0 && len ( storeSku2 ) > 0 {
if storeSku . JdsID != 0 {
if storeSku . Status != storeSku2 [ 0 ] . Status && storeMap . VendorStoreID != "" {
if len ( storeSku2 ) > 0 {
err = api . JdShopAPI . UpdateSkuSiteStock ( storeSku . JdsID , stock , utils . Str2Int ( storeMap . VendorStoreID ) )
if storeSku . Status != storeSku2 [ 0 ] . Status && storeMap . VendorStoreID != "" {
err = api . JdShopAPI . UpdateSkuSiteStock ( storeSku . JdsID , stock , utils . Str2Int ( storeMap . VendorStoreID ) )
}
} else {
err = api . JdShopAPI . UpdateSkuSiteStock ( storeSku . JdsID , 0 , utils . Str2Int ( storeMap . VendorStoreID ) )
}
}
}
}
}
}