diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 0b030011a..bec3bdb74 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -650,7 +650,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, storeIDs []int, skuBind updateFieldMap[model.FieldUpdatedAt] = 1 updateFieldMap[model.FieldLastOperator] = 1 - setStoreSkuBindStatus(skuBind, model.SyncFlagModifiedMask) + // setStoreSkuBindStatus(skuBind, model.SyncFlagModifiedMask) dao.WrapUpdateULEntity(skuBind, userName) if num, err = dao.UpdateEntity(db, skuBind /*, utils.Map2KeySlice(updateFieldMap)...*/); err != nil { dao.Rollback(db) @@ -823,11 +823,11 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID, toStoreID int, copyMode now, pricePercentage, pricePercentage, - model.SyncFlagModifiedMask | model.SyncFlagPriceMask, - model.SyncFlagModifiedMask | model.SyncFlagPriceMask, - model.SyncFlagModifiedMask | model.SyncFlagPriceMask, - model.SyncFlagModifiedMask | model.SyncFlagPriceMask, - model.SyncFlagModifiedMask | model.SyncFlagPriceMask, + model.SyncFlagPriceMask, + model.SyncFlagPriceMask, + model.SyncFlagPriceMask, + model.SyncFlagPriceMask, + model.SyncFlagPriceMask, toStoreID, utils.DefaultTimeValue, } @@ -927,11 +927,11 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID, toStoreID int, copyMode pricePercentage, pricePercentage, pricePercentage, - model.SyncFlagModifiedMask | model.SyncFlagPriceMask | model.SyncFlagSaleMask, - model.SyncFlagModifiedMask | model.SyncFlagPriceMask | model.SyncFlagSaleMask, - model.SyncFlagModifiedMask | model.SyncFlagPriceMask | model.SyncFlagSaleMask, - model.SyncFlagModifiedMask | model.SyncFlagPriceMask | model.SyncFlagSaleMask, - model.SyncFlagModifiedMask | model.SyncFlagPriceMask | model.SyncFlagSaleMask, + model.SyncFlagStoreSkuOnlyMask, + model.SyncFlagStoreSkuOnlyMask, + model.SyncFlagStoreSkuOnlyMask, + model.SyncFlagStoreSkuOnlyMask, + model.SyncFlagStoreSkuOnlyMask, toStoreID, utils.DefaultTimeValue, } diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index e0693cf71..f377e73d2 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -777,7 +777,7 @@ func TransformJdSpu2Sku(ctx *jxcontext.Context, skuNameIDs []int, count int, isA rootTask.AddChild(subTask).Run() if _, err = subTask.GetResult(0); err == nil { if len(skuIDs) > 0 { - if _, err = dao.SetStoreSkuSyncStatus(db, model.VendorIDJD, -1, skuIDs, model.SyncFlagModifiedMask|model.SyncFlagPriceMask|model.SyncFlagSaleMask); err == nil { + if _, err = dao.SetStoreSkuSyncStatus(db, model.VendorIDJD, -1, skuIDs, model.SyncFlagStoreSkuModifiedMask); err == nil { // time.Sleep(20 * time.Second) // _, err = cms.CurVendorSync.SyncStoresSkus(ctx, db, []int{model.VendorIDJD}, nil, skuIDs, false, isContinueWhenError) } diff --git a/business/model/model.go b/business/model/model.go index c21b271ef..de48a6173 100644 --- a/business/model/model.go +++ b/business/model/model.go @@ -67,12 +67,15 @@ const ( SyncFlagModifiedMask = 1 SyncFlagNewMask = 2 SyncFlagDeletedMask = 4 - SyncFlagChangedMask = SyncFlagModifiedMask | SyncFlagNewMask | SyncFlagDeletedMask SyncFlagSaleMask = 8 SyncFlagPriceMask = 16 SyncFlagSpecMask = 32 + SyncFlagStoreSkuOnlyMask = SyncFlagSaleMask | SyncFlagPriceMask + SyncFlagStoreSkuModifiedMask = SyncFlagStoreSkuOnlyMask | SyncFlagModifiedMask + SyncFlagChangedMask = SyncFlagSpecMask | SyncFlagNewMask | SyncFlagDeletedMask | SyncFlagStoreSkuModifiedMask + SyncFlagStoreName = 8 SyncFlagStoreAddress = 16 ) diff --git a/business/partner/purchase/ebai/store_sku.go b/business/partner/purchase/ebai/store_sku.go index 7557c68ec..6a76a0256 100644 --- a/business/partner/purchase/ebai/store_sku.go +++ b/business/partner/purchase/ebai/store_sku.go @@ -123,7 +123,7 @@ func (p *PurchaseHandler) getDirtyStoreSkus(db *dao.DaoDB, storeID int, skuIDs [ func (p *PurchaseHandler) createCatByStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, db *dao.DaoDB, storeID int, storeSkuInfoList []*tStoreSkuFullInfo) (num int64, err error) { catList2Add := make(map[int]int) for _, storeSku := range storeSkuInfoList { - if storeSku.SkuID != 0 && storeSku.EbaiSyncStatus&(model.SyncFlagNewMask|model.SyncFlagModifiedMask) != 0 { + if storeSku.SkuID != 0 && storeSku.EbaiSyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreSkuModifiedMask) != 0 { if storeSku.ParentCatEbaiID == 0 && storeSku.ParentCatID != 0 { catList2Add[storeSku.ParentCatID] = 1 } @@ -248,7 +248,7 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { storeSku := batchItemList[0].(*tStoreSkuFullInfo) updateFields := []string{model.FieldEbaiSyncStatus} - if globals.EnableEbaiStoreWrite { + if globals.EnableEbaiStoreWrite { if storeSku.SkuID == 0 || storeSku.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 { if storeSku.EbaiSyncStatus&model.SyncFlagNewMask == 0 && storeSku.EbaiID != 0 { err = api.EbaiAPI.SkuDelete(strStoreID, utils.Int64ToStr(storeSku.EbaiID)) @@ -263,7 +263,7 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks updateFields = append(updateFields, model.FieldEbaiID) _, err = api.EbaiAPI.SkuUpdate(strStoreID, storeSku.EbaiID, genSkuParamsFromStoreSkuInfo(storeSku)) } - } else if storeSku.EbaiSyncStatus&model.SyncFlagModifiedMask != 0 { + } else if storeSku.EbaiSyncStatus&model.SyncFlagStoreSkuModifiedMask != 0 { if jxutils.IsFakeID(storeSku.EbaiID) { err = fmt.Errorf("京西数据异常,修改一个没有创建的饿百商品:%d, store:%s", storeSku.SkuID, strStoreID) } else { @@ -344,7 +344,7 @@ func (p *PurchaseHandler) DeleteRemoteSkus(ctx *jxcontext.Context, parentTask ta for k, v := range batchItemList { strList[k] = v.(string) } - if globals.EnableEbaiStoreWrite { + if globals.EnableEbaiStoreWrite { err = api.EbaiAPI.SkuDelete(utils.Int2Str(storeID), strings.Join(strList, ",")) } return nil, err @@ -369,7 +369,7 @@ func (p *PurchaseHandler) DeleteRemoteCategories(ctx *jxcontext.Context, parentT } task := tasksch.NewParallelTask("DeleteRemoteCategories", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - if globals.EnableEbaiStoreWrite { + if globals.EnableEbaiStoreWrite { err = api.EbaiAPI.ShopCategoryDelete(strStoreID, batchItemList[0].(int64)) } return nil, err diff --git a/business/partner/purchase/jd/store_sku.go b/business/partner/purchase/jd/store_sku.go index ee2981692..27f1e8dd9 100644 --- a/business/partner/purchase/jd/store_sku.go +++ b/business/partner/purchase/jd/store_sku.go @@ -163,7 +163,7 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks func (p *PurchaseHandler) FullSyncStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, isAsync, isContinueWhenError bool) (hint string, err error) { globals.SugarLogger.Debugf("jd FullSyncStoreSkus, storeID:%d", storeID) db := dao.GetDB() - _, err = dao.SetStoreSkuSyncStatus(db, model.VendorIDJD, storeID, nil, model.SyncFlagModifiedMask|model.SyncFlagPriceMask|model.SyncFlagSaleMask) + _, err = dao.SetStoreSkuSyncStatus(db, model.VendorIDJD, storeID, nil, model.SyncFlagStoreSkuOnlyMask) if err != nil { return "", err } diff --git a/business/partner/purchase/mtwm/store_sku.go b/business/partner/purchase/mtwm/store_sku.go index 268c924d8..7bf320284 100644 --- a/business/partner/purchase/mtwm/store_sku.go +++ b/business/partner/purchase/mtwm/store_sku.go @@ -41,7 +41,7 @@ func (p *PurchaseHandler) SyncStoreCategory(ctx *jxcontext.Context, parentTask t globals.SugarLogger.Debugf("RetailCatDelete vendorStoreID:%s, MtwmID:%s", vendorStoreID, catInfo.MtwmID) err = api.MtwmAPI.RetailCatDelete(vendorStoreID, catInfo.MtwmID) } - } else if catInfo.MtwmSyncStatus&(model.SyncFlagNewMask|model.SyncFlagModifiedMask) != 0 { // 新增 + } else if catInfo.MtwmSyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreSkuModifiedMask) != 0 { // 新增 catName := catInfo.CatName subCatName := "" originName := "" @@ -259,43 +259,52 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks if skuItem.SkuSyncStatus&model.SyncFlagNewMask == 0 && skuItem.VendorSkuID != "" { err = api.MtwmAPI.RetailDelete(vendorStoreID, skuItem.VendorSkuID) } - } else if skuItem.SkuSyncStatus&(model.SyncFlagModifiedMask|model.SyncFlagNewMask) != 0 { + } else if skuItem.SkuSyncStatus&(model.SyncFlagStoreSkuModifiedMask|model.SyncFlagNewMask) != 0 { foodData := make(map[string]interface{}) foodDataList[0] = foodData foodData[mtwmapi.KeyAppFoodCode] = utils.Int2Str(skuItem.ID) - foodData["name"] = jxutils.ComposeSkuName(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 30) - foodData["description"] = skuItem.Comment - foodData["price"] = jxutils.IntPrice2Standard(int64(jxutils.CaculateSkuVendorPrice(int(skuItem.Price), int(storeDetail.PricePercentage)))) - foodData["min_order_count"] = 1 - foodData["unit"] = skuItem.Unit - foodData["box_num"] = 0 - foodData["box_price"] = 0.0 - foodData["category_name"] = skuItem.VendorCatID - foodData["is_sold_out"] = skuStatusJX2Mtwm(jxutils.MergeSkuStatus(skuItem.Status, skuItem.StoreSkuStatus)) - foodData["picture"] = skuItem.Img - foodData["sequence"] = skuItem.Seq - if skuItem.VendorVendorCatID != 0 { - foodData["tag_id"] = utils.Int64ToStr(skuItem.VendorVendorCatID) - } else { - // foodData["tag_id"] = utils.Int64ToStr(defVendorCatID) - } skus := []map[string]interface{}{ map[string]interface{}{ "sku_id": foodData[mtwmapi.KeyAppFoodCode], - "spec": jxutils.ComposeSkuSpec(skuItem.SpecQuality, skuItem.SpecUnit), - "price": foodData["price"], - "stock": "*", - "upc": skuItem.Upc, }, } - if foodData["tag_id"] != nil { - skus[0]["weight"] = skuItem.Weight // weight字段仅限服饰鞋帽、美妆、日用品、母婴、生鲜果蔬、生活超市下的便利店/超市门店品类的商家使用 - } foodData["skus"] = skus - if globals.EnableMtwmStoreWrite { - if err = api.MtwmAPI.RetailBatchInitData(vendorStoreID, foodDataList); err == nil { - storeSkuBind.MtwmID = int64(skuItem.ID) - updateFields = append(updateFields, model.FieldMtwmID) + if skuItem.SkuSyncStatus&(model.SyncFlagModifiedMask|model.SyncFlagNewMask|model.SyncFlagPriceMask) != 0 { + foodData["name"] = jxutils.ComposeSkuName(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 30) + foodData["description"] = skuItem.Comment + foodData["price"] = jxutils.IntPrice2Standard(int64(jxutils.CaculateSkuVendorPrice(int(skuItem.Price), int(storeDetail.PricePercentage)))) + foodData["min_order_count"] = 1 + foodData["unit"] = skuItem.Unit + foodData["box_num"] = 0 + foodData["box_price"] = 0.0 + foodData["category_name"] = skuItem.VendorCatID + foodData["is_sold_out"] = skuStatusJX2Mtwm(jxutils.MergeSkuStatus(skuItem.Status, skuItem.StoreSkuStatus)) + foodData["picture"] = skuItem.Img + foodData["sequence"] = skuItem.Seq + if skuItem.VendorVendorCatID != 0 { + foodData["tag_id"] = utils.Int64ToStr(skuItem.VendorVendorCatID) + } else { + // foodData["tag_id"] = utils.Int64ToStr(defVendorCatID) + } + skus[0]["spec"] = jxutils.ComposeSkuSpec(skuItem.SpecQuality, skuItem.SpecUnit) + skus[0]["price"] = foodData["price"] + skus[0]["stock"] = "*" + skus[0]["upc"] = skuItem.Upc + if foodData["tag_id"] != nil { + skus[0]["weight"] = skuItem.Weight // weight字段仅限服饰鞋帽、美妆、日用品、母婴、生鲜果蔬、生活超市下的便利店/超市门店品类的商家使用 + } + if globals.EnableMtwmStoreWrite { + if err = api.MtwmAPI.RetailBatchInitData(vendorStoreID, foodDataList); err == nil { + storeSkuBind.MtwmID = int64(skuItem.ID) + updateFields = append(updateFields, model.FieldMtwmID) + } + } + } else { + if skuItem.SkuSyncStatus&(model.SyncFlagSaleMask) != 0 { + sellStatus := skuStatusJX2Mtwm(jxutils.MergeSkuStatus(skuItem.Status, skuItem.StoreSkuStatus)) + if globals.EnableMtwmStoreWrite { + err = api.MtwmAPI.RetailSkuSellStatus(vendorStoreID, foodDataList, sellStatus) + } } } } diff --git a/business/partner/purchase/weimob/wsc/store_sku.go b/business/partner/purchase/weimob/wsc/store_sku.go index 8f6f0e5f6..504b1976f 100644 --- a/business/partner/purchase/weimob/wsc/store_sku.go +++ b/business/partner/purchase/weimob/wsc/store_sku.go @@ -52,7 +52,7 @@ func (p *PurchaseHandler) SyncStoreCategory(ctx *jxcontext.Context, parentTask t if catInfo.WscID, err = api.WeimobAPI.AddClassify(catInfo.CatName, utils.Str2Int64WithDefault(catInfo.ParentVendorCatID, 0), catImg); err == nil { updateFields = append(updateFields, dao.GetVendorThingIDStructField(model.VendorNames[model.VendorIDWSC])) } - } else if catInfo.WscSyncStatus&(model.SyncFlagModifiedMask|model.SyncFlagModifiedMask) != 0 { // 修改 + } else if catInfo.WscSyncStatus&(model.SyncFlagModifiedMask) != 0 { // 修改 err = api.WeimobAPI.UpdateClassify(catInfo.WscID, catInfo.CatName, "") } } @@ -189,7 +189,7 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks err = nil // 强制忽略 } } - } else if skuItem.SkuSyncStatus&(model.SyncFlagModifiedMask|model.SyncFlagNewMask) != 0 { + } else if skuItem.SkuSyncStatus&(model.SyncFlagStoreSkuModifiedMask|model.SyncFlagNewMask) != 0 { outerGoodsCode := utils.Int2Str(skuItem.NameID) title := jxutils.ComposeSkuName(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 30) isPutAway := jxutils.MergeSkuStatus(skuItem.Status, skuItem.StoreSkuStatus) == model.SkuStatusNormal