From 743bc89cbcee0bd3e6d0c067807a45d66dc4779d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 30 Apr 2020 15:55:05 +0800 Subject: [PATCH] =?UTF-8?q?=E9=93=B6=E8=B1=B9=E5=88=B0=E4=BA=AC=E8=A5=BF?= =?UTF-8?q?=E8=BF=98=E6=98=AF=E5=BC=80=E7=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sync.go | 177 +++++++++++++++++------------------ 1 file changed, 87 insertions(+), 90 deletions(-) diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index df7b0c78e..2dec86e8e 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -913,14 +913,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) { var ( - db = dao.GetDB() - localSkuMap = make(map[string]*dao.StoreSkuSyncInfo) - vendorSkuMap = make(map[string]*partner.SkuNameInfo) - // skuBindInfosDel []*StoreSkuBindInfo - // skuBindInfosUpt []*StoreSkuBindInfo - addList []*partner.SkuNameInfo - updateList []*partner.SkuNameInfo - deleteList []*dao.StoreSkuSyncInfo + db = dao.GetDB() + localSkuMap = make(map[string]*dao.StoreSkuSyncInfo) + vendorSkuMap = make(map[string]*partner.SkuNameInfo) + skuBindInfosDel []*StoreSkuBindInfo + skuBindInfosUpt []*StoreSkuBindInfo + addList []*partner.SkuNameInfo + updateList []*partner.SkuNameInfo + deleteList []*dao.StoreSkuSyncInfo ) handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) @@ -953,93 +953,90 @@ func syncStoreSkusFromYb(ctx *jxcontext.Context, storeID, vendorID int, vendorSt // fmt.Println("remoteSkuList", len(remoteSkuList)) // fmt.Println("addList", len(addList)) // fmt.Println("updateList", len(updateList)) - for _, v := range deleteList { - fmt.Println("deleteList", utils.Format4Output(v.SkuID, false)) - } taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { - // store, _ := dao.GetStoreDetail(db, storeID, vendorID) + store, _ := dao.GetStoreDetail(db, storeID, vendorID) switch step { case 0: - // if len(addList) > 0 { - // taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - // var ( - // v = batchItemList[0].(*partner.SkuNameInfo) - // upc = v.YbBarCode - // ) - // err = AddSkuNameByUpc(ctx, upc, store, v) - // if err != nil { - // task.AddFailedList(putils.GetErrMsg2FailedSingleList(nil, err, storeID, model.VendorChineseNames[vendorID], "根据upc创建京西商品")) - // } - // return retVal, err - // } - // taskParallel := tasksch.NewParallelTask("创建商品", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, taskFunc, addList) - // tasksch.HandleTask(taskParallel, task, true).Run() - // _, err = taskParallel.GetResult(0) - // } + if len(addList) > 0 { + taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + var ( + v = batchItemList[0].(*partner.SkuNameInfo) + upc = v.YbBarCode + ) + err = AddSkuNameByUpc(ctx, upc, store, v) + if err != nil { + task.AddFailedList(putils.GetErrMsg2FailedSingleList(nil, err, storeID, model.VendorChineseNames[vendorID], "根据upc创建京西商品")) + } + return retVal, err + } + taskParallel := tasksch.NewParallelTask("创建商品", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, taskFunc, addList) + tasksch.HandleTask(taskParallel, task, true).Run() + _, err = taskParallel.GetResult(0) + } case 1: - // if len(deleteList) > 0 { - // taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - // var ( - // v = batchItemList[0].(*dao.StoreSkuSyncInfo) - // ) - // skuBindInfo := &StoreSkuBindInfo{ - // NameID: v.NameID, - // IsFocus: -1, - // } - // retVal = []*StoreSkuBindInfo{skuBindInfo} - // return retVal, err - // } - // taskParallel := tasksch.NewParallelTask("删除商品", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, taskFunc, deleteList) - // tasksch.HandleTask(taskParallel, task, true).Run() - // resultDel, _ := taskParallel.GetResult(0) - // for _, v := range resultDel { - // skuBindInfosDel = append(skuBindInfosDel, v.(*StoreSkuBindInfo)) - // } - // _, err = updateStoresSkusWithoutSync(ctx, db, []int{storeID}, skuBindInfosDel, false) - // } + if len(deleteList) > 0 { + taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + var ( + v = batchItemList[0].(*dao.StoreSkuSyncInfo) + ) + skuBindInfo := &StoreSkuBindInfo{ + NameID: v.NameID, + IsFocus: -1, + } + retVal = []*StoreSkuBindInfo{skuBindInfo} + return retVal, err + } + taskParallel := tasksch.NewParallelTask("删除商品", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, taskFunc, deleteList) + tasksch.HandleTask(taskParallel, task, true).Run() + resultDel, _ := taskParallel.GetResult(0) + for _, v := range resultDel { + skuBindInfosDel = append(skuBindInfosDel, v.(*StoreSkuBindInfo)) + } + _, err = updateStoresSkusWithoutSync(ctx, db, []int{storeID}, skuBindInfosDel, false) + } case 2: - // if len(updateList) > 0 { - // taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - // var ( - // v = batchItemList[0].(*partner.SkuNameInfo) - // skuBindInfo = &StoreSkuBindInfo{} - // storeSkus []*dao.StoreSkuExt - // pricePercentagePack []*model.PricePercentageItem - // ) - // sql := ` - // SELECT a.*, c.id name_id - // FROM store_sku_bind a - // JOIN sku b ON a.sku_id = b.id - // 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, &storeSkus, sql, sqlParams) - // if len(storeSkus) > 0 { - // if storeSkus[0].YbPrice != 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) - // } - // if v.SkuList[0].Stock < 1 { - // skuBindInfo.IsSale = model.StoreSkuBindStatusDontSale - // } else { - // skuBindInfo.IsSale = model.StoreSkuBindStatusNormal - // } - // skuBindInfo.NameID = storeSkus[0].NameID - // retVal = []*StoreSkuBindInfo{skuBindInfo} - // return retVal, err - // } - // taskParallel := tasksch.NewParallelTask("更新商品价格和库存", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, taskFunc, updateList) - // tasksch.HandleTask(taskParallel, task, true).Run() - // resultUpt, _ := taskParallel.GetResult(0) - // for _, v := range resultUpt { - // skuBindInfosUpt = append(skuBindInfosUpt, v.(*StoreSkuBindInfo)) - // } - // _, err = updateStoresSkusWithoutSync(ctx, db, []int{storeID}, skuBindInfosUpt, false) - // } + if len(updateList) > 0 { + taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + var ( + v = batchItemList[0].(*partner.SkuNameInfo) + skuBindInfo = &StoreSkuBindInfo{} + storeSkus []*dao.StoreSkuExt + pricePercentagePack []*model.PricePercentageItem + ) + sql := ` + SELECT a.*, c.id name_id + FROM store_sku_bind a + JOIN sku b ON a.sku_id = b.id + 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, &storeSkus, sql, sqlParams) + if len(storeSkus) > 0 { + if storeSkus[0].YbPrice != 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) + } + if v.SkuList[0].Stock < 1 { + skuBindInfo.IsSale = model.StoreSkuBindStatusDontSale + } else { + skuBindInfo.IsSale = model.StoreSkuBindStatusNormal + } + skuBindInfo.NameID = storeSkus[0].NameID + retVal = []*StoreSkuBindInfo{skuBindInfo} + return retVal, err + } + taskParallel := tasksch.NewParallelTask("更新商品价格和库存", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, taskFunc, updateList) + tasksch.HandleTask(taskParallel, task, true).Run() + resultUpt, _ := taskParallel.GetResult(0) + for _, v := range resultUpt { + skuBindInfosUpt = append(skuBindInfosUpt, v.(*StoreSkuBindInfo)) + } + _, err = updateStoresSkusWithoutSync(ctx, db, []int{storeID}, skuBindInfosUpt, false) + } } return result, err }