From 08faa2b6ef01182b19d399c6a705ee59b9625199 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Wed, 1 Jul 2020 15:33:46 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E9=93=B6=E8=B1=B9?= =?UTF-8?q?=E5=88=B0=E4=BA=AC=E8=A5=BF=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sync.go | 206 +++++++++++++++++------------------ 1 file changed, 103 insertions(+), 103 deletions(-) diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index 8314af25d..218aee4dd 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -954,14 +954,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) @@ -991,101 +991,101 @@ func syncStoreSkusFromYb(ctx *jxcontext.Context, storeID, vendorID int, vendorSt deleteList = append(deleteList, v) } } - // fmt.Println("remoteSkuList", len(remoteSkuList)) - // fmt.Println("addList", len(addList)) - // fmt.Println("updateList", len(updateList)) - taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { - 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) - } - 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, 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, false) - } - case 3: - _, err = CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{0, 1, 3}, nil, false, nil, nil, 0, true, true) - } - return result, err - } - taskSeq := tasksch.NewSeqTask2("同步银豹商品到京西", ctx, true, taskSeqFunc, 3) - tasksch.HandleTask(taskSeq, nil, true).Run() - hint = taskSeq.GetID() + fmt.Println("remoteSkuList", len(remoteSkuList)) + fmt.Println("addList", len(addList)) + fmt.Println("updateList", len(updateList)) + // taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { + // 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) + // } + // 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, 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, false) + // } + // case 3: + // _, err = CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{0, 1, 3}, nil, false, nil, nil, 0, true, true) + // } + // return result, err + // } + // taskSeq := tasksch.NewSeqTask2("同步银豹商品到京西", ctx, true, taskSeqFunc, 3) + // tasksch.HandleTask(taskSeq, nil, true).Run() + // hint = taskSeq.GetID() return hint, err } From 7592e9a3741aa7c003ab4c03a719d876c1e0124f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Wed, 1 Jul 2020 17:27:02 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E9=93=B6=E8=B1=B9=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E5=95=86=E5=93=81=E5=A4=B1=E8=B4=A5=EF=BC=8C=E5=B0=9D=E8=AF=95?= =?UTF-8?q?=E6=8A=8A=E5=88=A0=E9=99=A4=E7=9A=84=E6=81=A2=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 4 ---- business/partner/purchase/yb/store_sku.go | 20 +++++++++++--------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 7858319e0..9178cc301 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -3983,11 +3983,7 @@ func BackUpStoreSkuBind(ctx *jxcontext.Context, isAsync, isContinueWhenError boo storeSkuBindHis := &model.StoreSkuBindHistory{ SnapshotAt: snapshotAt.AddDate(0, 0, -2), } - storeSkuBindHis2 := &model.StoreSkuBindHistory{ - SnapshotAt: snapshotAt, - } dao.DeleteEntity(db, storeSkuBindHis, "SnapshotAt") - dao.DeleteEntity(db, storeSkuBindHis2, "SnapshotAt") storeList, err := dao.GetStoreList(db, nil, nil, nil, nil, "") task := tasksch.NewParallelTask("BackUpStoreSkuBind", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { diff --git a/business/partner/purchase/yb/store_sku.go b/business/partner/purchase/yb/store_sku.go index 12add114e..f7857ef4e 100644 --- a/business/partner/purchase/yb/store_sku.go +++ b/business/partner/purchase/yb/store_sku.go @@ -38,15 +38,17 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v result, err = api.YinBaoAPI.AddProductInfo(buildProductInfoParam(storeSku)) } if err != nil { - // if strings.Contains(err.Error(), addErr1) { - // queryProductByBarcodeResult, err := api.YinBaoAPI.QueryProductByBarcodes([]string{storeSku.YbBarCode}) - // if err != nil && len(queryProductByBarcodeResult) > 0 { - // if queryProductByBarcodeResult[0].Enable == model.SkuStatusDeleted { - // api.YinBaoAPI.SaveProduct(userId, keyword, saveProductParam) - // } - // } - // } - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDYB], "创建商品") + if strings.Contains(err.Error(), addErr1) { + queryProductByBarcodeResult, err := api.YinBaoAPI.QueryProductByBarcodes([]string{storeSku.YbBarCode}) + if err != nil && len(queryProductByBarcodeResult) > 0 { + if queryProductByBarcodeResult[0].Enable == model.SkuStatusDeleted { + api.YinBaoAPI.BatchUpdateProductEnable(vendorStoreID, utils.Int64ToStr(queryProductByBarcodeResult[0].UID), model.SkuStatusNormal) + storeSku.VendorSkuID = utils.Int64ToStr(queryProductByBarcodeResult[0].UID) + } + } + } else { + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDYB], "创建商品") + } } else { storeSku.VendorSkuID = utils.Int64ToStr(result.UID) err = uploadYbImage(vendorStoreID, storeSku.YbBarCode, storeSku.Img) From acc17e2509132c0d4c8374eb6a9da97c65f863ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Wed, 1 Jul 2020 17:43:53 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E9=93=B6=E8=B1=B9?= =?UTF-8?q?=E5=88=B0=E4=BA=AC=E8=A5=BF=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sync.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index 218aee4dd..c378173f2 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -993,7 +993,8 @@ func syncStoreSkusFromYb(ctx *jxcontext.Context, storeID, vendorID int, vendorSt } fmt.Println("remoteSkuList", len(remoteSkuList)) fmt.Println("addList", len(addList)) - fmt.Println("updateList", len(updateList)) + fmt.Println("updateList", utils.Format4Output(updateList, false)) + fmt.Println("deleteList", utils.Format4Output(deleteList, false)) // taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { // store, _ := dao.GetStoreDetail(db, storeID, vendorID) // switch step { From edfaded8d75c8dbed8d33dd45149c0cdbb618679 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, 2 Jul 2020 10:17:29 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=BB=BA=E5=BA=97=E6=8A=8A=E4=B8=9C=E8=8E=9E=E7=AE=97=E8=BF=9B?= =?UTF-8?q?=E5=8E=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/const.go | 11 ++++++----- business/partner/purchase/jdshop/store.go | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/business/model/const.go b/business/model/const.go index 87a459c01..26b6ae09d 100644 --- a/business/model/const.go +++ b/business/model/const.go @@ -152,11 +152,12 @@ var ( } ZXCityCodeMap = map[int]string{ - 310100: "上海市", - 110100: "北京市", - 120100: "天津市", - 440300: "深圳市", - 500100: "重庆市", + 310100: "上海市", + 110100: "北京市", + 120100: "天津市", + 440300: "深圳市", + 500100: "重庆市", + 9441900: "东莞", } PrinterVendorInfo = map[int][]string{ diff --git a/business/partner/purchase/jdshop/store.go b/business/partner/purchase/jdshop/store.go index 1945f2062..da7fd3231 100644 --- a/business/partner/purchase/jdshop/store.go +++ b/business/partner/purchase/jdshop/store.go @@ -105,7 +105,7 @@ func (p *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri if createEntityStoreParam.AddCode == 0 { createEntityStoreParam.AddCode = store.JdCode } - //证明这个店可能隶属直辖市 + //证明这个店可能隶属直辖市或者东莞 if model.ZXCityCodeMap[store.CityCode] != "" { result, _ := api.AutonaviAPI.GetCoordinateAreaInfo(jxutils.IntCoordinate2Standard(store.Lng), jxutils.IntCoordinate2Standard(store.Lat)) if result["regeocode"] != nil { From ad3e7655e17afb12c9c5c508e6b06ed4746005e8 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, 2 Jul 2020 11:13:07 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=97=A8=E5=BA=97?= =?UTF-8?q?=E5=BA=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sync.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index c378173f2..b742fead4 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -1118,9 +1118,13 @@ func syncJdsStoreStock(ctx *jxcontext.Context, db *dao.DaoDB, storeSkus []*model stock = 9999 } storeSku2, _ := dao.GetStoresSkusInfo(db, []int{storeMap.StoreID}, []int{storeSku.SkuID}) - if storeSku.JdsID != 0 && len(storeSku2) > 0 { - if storeSku.Status != storeSku2[0].Status && storeMap.VendorStoreID != "" { - err = api.JdShopAPI.UpdateSkuSiteStock(storeSku.JdsID, stock, utils.Str2Int(storeMap.VendorStoreID)) + if storeSku.JdsID != 0 { + if len(storeSku2) > 0 { + 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)) } } }