- 重构GetSkusCategories与GetStoreCategories
This commit is contained in:
@@ -35,44 +35,49 @@ func (p *PurchaseHandler) SyncStoreCategory(ctx *jxcontext.Context, parentTask t
|
||||
task := tasksch.NewParallelTask(fmt.Sprintf("美团外卖SyncStoreCategory step2, level=%d", level), nil, ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
updateFields := []string{dao.GetSyncStatusStructField(model.VendorNames[model.VendorIDMTWM])}
|
||||
catInfo := batchItemList[0].(*dao.StoreCatSyncInfo)
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
if catInfo.MtwmSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除
|
||||
if catInfo.MtwmSyncStatus&model.SyncFlagNewMask == 0 && catInfo.MtwmID != "" {
|
||||
globals.SugarLogger.Debugf("RetailCatDelete vendorStoreID:%s, MtwmID:%s", vendorStoreID, catInfo.MtwmID)
|
||||
err = api.MtwmAPI.RetailCatDelete(vendorStoreID, catInfo.MtwmID)
|
||||
catInfo := batchItemList[0].(*dao.SkuStoreCatInfo)
|
||||
storeCatMap := &model.StoreSkuCategoryMap{}
|
||||
storeCatMap.ID = catInfo.MapID
|
||||
if catInfo.StoreCatSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除
|
||||
if catInfo.StoreCatSyncStatus&model.SyncFlagNewMask == 0 && !dao.IsVendorThingIDEmpty(catInfo.VendorCatID) {
|
||||
globals.SugarLogger.Debugf("RetailCatDelete vendorStoreID:%s, MtwmID:%s", vendorStoreID, catInfo.VendorCatID)
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = api.MtwmAPI.RetailCatDelete(vendorStoreID, catInfo.VendorCatID)
|
||||
}
|
||||
} else if catInfo.MtwmSyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreSkuModifiedMask) != 0 { // 新增
|
||||
catName := catInfo.CatName
|
||||
subCatName := ""
|
||||
originName := ""
|
||||
if catInfo.MtwmSyncStatus&model.SyncFlagNewMask == 0 {
|
||||
originName = catInfo.MtwmID
|
||||
}
|
||||
if level == 2 {
|
||||
originName = catInfo.ParentCatName
|
||||
catName = catInfo.ParentCatName
|
||||
subCatName = catInfo.CatName
|
||||
if catInfo.MtwmSyncStatus&model.SyncFlagNewMask == 0 {
|
||||
originName = catInfo.MtwmID
|
||||
catName = catInfo.CatName
|
||||
subCatName = ""
|
||||
}
|
||||
}
|
||||
if catName == "" {
|
||||
panic("catName is empty")
|
||||
}
|
||||
globals.SugarLogger.Debugf("RetailCatUpdate vendorStoreID:%s, originName:%s, catName:%s, subCatName:%s, seq:%d", vendorStoreID, originName, catName, subCatName, catInfo.Seq)
|
||||
if err = api.MtwmAPI.RetailCatUpdate(vendorStoreID, originName, catName, subCatName, catInfo.Seq); err == nil {
|
||||
catInfo.MtwmID = catInfo.CatName
|
||||
updateFields = append(updateFields, dao.GetVendorThingIDStructField(model.VendorNames[model.VendorIDMTWM]))
|
||||
}
|
||||
} else if catInfo.StoreCatSyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreSkuModifiedMask) != 0 { // 新增
|
||||
catName := catInfo.Name
|
||||
subCatName := ""
|
||||
originName := ""
|
||||
if catInfo.StoreCatSyncStatus&model.SyncFlagNewMask == 0 {
|
||||
originName = catInfo.VendorCatID
|
||||
}
|
||||
if level == 2 {
|
||||
originName = catInfo.ParentCatName
|
||||
catName = catInfo.ParentCatName
|
||||
subCatName = catInfo.Name
|
||||
if catInfo.StoreCatSyncStatus&model.SyncFlagNewMask == 0 {
|
||||
originName = catInfo.VendorCatID
|
||||
catName = catInfo.Name
|
||||
subCatName = ""
|
||||
}
|
||||
}
|
||||
if catName == "" {
|
||||
panic("catName is empty")
|
||||
}
|
||||
globals.SugarLogger.Debugf("RetailCatUpdate vendorStoreID:%s, originName:%s, catName:%s, subCatName:%s, seq:%d", vendorStoreID, originName, catName, subCatName, catInfo.Seq)
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = api.MtwmAPI.RetailCatUpdate(vendorStoreID, originName, catName, subCatName, catInfo.Seq)
|
||||
}
|
||||
if err == nil {
|
||||
storeCatMap.MtwmID = catInfo.Name
|
||||
updateFields = append(updateFields, dao.GetVendorThingIDStructField(model.VendorNames[model.VendorIDMTWM]))
|
||||
}
|
||||
}
|
||||
if err == nil {
|
||||
db2 := dao.GetDB()
|
||||
catInfo.MtwmSyncStatus = 0
|
||||
_, err = dao.UpdateEntity(db2, &catInfo.StoreSkuCategoryMap, updateFields...)
|
||||
storeCatMap.MtwmSyncStatus = 0
|
||||
_, err = dao.UpdateEntity(db2, storeCatMap, updateFields...)
|
||||
}
|
||||
return nil, err
|
||||
}, catList)
|
||||
@@ -258,7 +263,10 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
|
||||
storeSkuBind.ID = skuItem.BindID
|
||||
if skuItem.NameID == 0 || skuItem.StoreSkuSyncStatus&model.SyncFlagDeletedMask != 0 {
|
||||
if skuItem.StoreSkuSyncStatus&model.SyncFlagNewMask == 0 && !dao.IsVendorThingIDEmpty(skuItem.VendorSkuID) {
|
||||
err = ignoreNoAppFoodErr(api.MtwmAPI.RetailDelete(vendorStoreID, skuItem.VendorSkuID))
|
||||
if globals.EnableWscStoreWrite {
|
||||
err = api.MtwmAPI.RetailDelete(vendorStoreID, skuItem.VendorSkuID)
|
||||
}
|
||||
err = ignoreNoAppFoodErr(err)
|
||||
}
|
||||
if err == nil {
|
||||
storeSkuBind.DeletedAt = time.Now()
|
||||
@@ -312,10 +320,11 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
|
||||
skus[0]["weight"] = skuItem.Weight // weight字段仅限服饰鞋帽、美妆、日用品、母婴、生鲜果蔬、生活超市下的便利店/超市门店品类的商家使用
|
||||
}
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
if err = api.MtwmAPI.RetailBatchInitData(vendorStoreID, foodDataList); err == nil {
|
||||
storeSkuBind.MtwmID = int64(skuItem.SkuID)
|
||||
updateFields = append(updateFields, model.FieldMtwmID)
|
||||
}
|
||||
err = api.MtwmAPI.RetailBatchInitData(vendorStoreID, foodDataList)
|
||||
}
|
||||
if err == nil {
|
||||
storeSkuBind.MtwmID = int64(skuItem.SkuID)
|
||||
updateFields = append(updateFields, model.FieldMtwmID)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -37,29 +37,36 @@ func (p *PurchaseHandler) SyncStoreCategory(ctx *jxcontext.Context, parentTask t
|
||||
task := tasksch.NewParallelTask(fmt.Sprintf("微盟微商城SyncStoreCategory step2, level=%d", level), nil, ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
updateFields := []string{dao.GetSyncStatusStructField(model.VendorNames[model.VendorIDWSC])}
|
||||
catInfo := batchItemList[0].(*dao.StoreCatSyncInfo)
|
||||
if globals.EnableWscStoreWrite {
|
||||
if catInfo.WscSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除
|
||||
if catInfo.WscSyncStatus&model.SyncFlagNewMask == 0 {
|
||||
globals.SugarLogger.Debugf("UpdateClassify strStoreID:%s, WscID:%d", strStoreID, catInfo.WscID)
|
||||
err = api.WeimobAPI.UpdateClassify(catInfo.WscID, composeFakeDelName(catInfo.CatName), "")
|
||||
catInfo := batchItemList[0].(*dao.SkuStoreCatInfo)
|
||||
storeCatMap := &model.StoreSkuCategoryMap{}
|
||||
storeCatMap.ID = catInfo.MapID
|
||||
if catInfo.StoreCatSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除
|
||||
if catInfo.StoreCatSyncStatus&model.SyncFlagNewMask == 0 && !dao.IsVendorThingIDEmpty(catInfo.VendorCatID) {
|
||||
globals.SugarLogger.Debugf("UpdateClassify strStoreID:%s, WscID:%s", strStoreID, catInfo.VendorCatID)
|
||||
if globals.EnableWscStoreWrite {
|
||||
err = api.WeimobAPI.UpdateClassify(utils.Str2Int64(catInfo.VendorCatID), composeFakeDelName(catInfo.Name), "")
|
||||
}
|
||||
} else if catInfo.WscSyncStatus&(model.SyncFlagNewMask|model.SyncFlagModifiedMask) != 0 { // 新增
|
||||
catImg := ""
|
||||
if level == 2 {
|
||||
catImg = DefCatImg
|
||||
}
|
||||
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) != 0 { // 修改
|
||||
err = api.WeimobAPI.UpdateClassify(catInfo.WscID, catInfo.CatName, "")
|
||||
}
|
||||
} else if catInfo.StoreCatSyncStatus&(model.SyncFlagNewMask|model.SyncFlagModifiedMask) != 0 { // 新增
|
||||
catImg := ""
|
||||
if level == 2 {
|
||||
catImg = DefCatImg
|
||||
}
|
||||
if globals.EnableWscStoreWrite {
|
||||
storeCatMap.WscID, err = api.WeimobAPI.AddClassify(catInfo.Name, utils.Str2Int64WithDefault(catInfo.ParentVendorCatID, 0), catImg)
|
||||
}
|
||||
if err == nil {
|
||||
updateFields = append(updateFields, dao.GetVendorThingIDStructField(model.VendorNames[model.VendorIDWSC]))
|
||||
}
|
||||
} else if catInfo.StoreCatSyncStatus&(model.SyncFlagModifiedMask) != 0 { // 修改
|
||||
if globals.EnableWscStoreWrite {
|
||||
err = api.WeimobAPI.UpdateClassify(utils.Str2Int64(catInfo.VendorCatID), catInfo.Name, "")
|
||||
}
|
||||
}
|
||||
if err == nil {
|
||||
db2 := dao.GetDB()
|
||||
catInfo.WscSyncStatus = 0
|
||||
_, err = dao.UpdateEntity(db2, &catInfo.StoreSkuCategoryMap, updateFields...)
|
||||
storeCatMap.WscSyncStatus = 0
|
||||
_, err = dao.UpdateEntity(db2, storeCatMap, updateFields...)
|
||||
}
|
||||
return nil, err
|
||||
}, catList)
|
||||
@@ -183,10 +190,12 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
|
||||
if skuItem.StoreSkuSyncStatus&model.SyncFlagDeletedMask != 0 {
|
||||
if skuItem.StoreSkuSyncStatus&model.SyncFlagNewMask == 0 {
|
||||
goodsID := utils.Str2Int64WithDefault(skuItem.VendorNameID, 0)
|
||||
if err = api.WeimobAPI.UpdateGoodsShelfStatus([]int64{goodsID}, false); err == nil {
|
||||
err = api.WeimobAPI.UpdateGoodsTitle(goodsID, composeFakeDelName(skuItem.Name))
|
||||
} else if intErr, ok := err.(*utils.ErrorWithCode); ok && intErr.Code() == "1001930300001" { // 商品不存在错
|
||||
err = nil // 强制忽略
|
||||
if globals.EnableWscStoreWrite {
|
||||
if err = api.WeimobAPI.UpdateGoodsShelfStatus([]int64{goodsID}, false); err == nil {
|
||||
err = api.WeimobAPI.UpdateGoodsTitle(goodsID, composeFakeDelName(skuItem.Name))
|
||||
} else if intErr, ok := err.(*utils.ErrorWithCode); ok && intErr.Code() == "1001930300001" { // 商品不存在错
|
||||
err = nil // 强制忽略
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if skuItem.StoreSkuSyncStatus&(model.SyncFlagStoreSkuModifiedMask|model.SyncFlagNewMask) != 0 {
|
||||
@@ -222,26 +231,36 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
|
||||
},
|
||||
},
|
||||
}
|
||||
if globals.EnableWscStoreWrite {
|
||||
if skuItem.StoreSkuSyncStatus&model.SyncFlagNewMask != 0 {
|
||||
goodsID, skuMap, err2 := api.WeimobAPI.AddGoods(outerGoodsCode, title, false, []string{skuItem.Img}, skuItem.Comment, isPutAway, 0, categoryId, classifyIdList, b2cGoods, skuList, nil)
|
||||
if err = err2; err == nil {
|
||||
storeSkuBind.WscID = skuMap[utils.Int2Str(skuItem.ID)]
|
||||
storeSkuBind.WscID2 = goodsID
|
||||
updateFields = append(updateFields, model.FieldWscID, model.FieldWscID2)
|
||||
}
|
||||
if skuItem.StoreSkuSyncStatus&model.SyncFlagNewMask != 0 {
|
||||
var (
|
||||
goodsID int64
|
||||
skuMap map[string]int64
|
||||
)
|
||||
if globals.EnableWscStoreWrite {
|
||||
goodsID, skuMap, err = api.WeimobAPI.AddGoods(outerGoodsCode, title, false, []string{skuItem.Img}, skuItem.Comment, isPutAway, 0, categoryId, classifyIdList, b2cGoods, skuList, nil)
|
||||
} else {
|
||||
goodsID := utils.Str2Int64WithDefault(skuItem.VendorNameID, 0)
|
||||
|
||||
goodsInfo, err2 := api.WeimobAPI.QueryGoodsDetail(goodsID)
|
||||
if err = err2; err == nil {
|
||||
// http://open.weimob.com/docapi/article?tag=Af
|
||||
// sku id,如果为空,则新增sku; 如果更新之前的skuId与入参skuId对应,则更新sku; 如果更新之前的skuId没有和入参的skuId对应,删除更新之前的sku
|
||||
skuList[0][weimobapi.KeySkuID] = utils.Str2Int64WithDefault(skuItem.VendorSkuID, 0)
|
||||
remoteSkuList := goodsInfo[weimobapi.KeySkuList].([]interface{})
|
||||
if len(remoteSkuList) > 0 {
|
||||
// skuList[0][weimobapi.KeyEditStockNum] = model.MaxStoreSkuStockQty - int(utils.MustInterface2Int64(remoteSkuList[0].(map[string]interface{})[weimobapi.KeyAvailableStockNum]))
|
||||
}
|
||||
goodsID = jxutils.GenFakeID()
|
||||
skuMap = map[string]int64{
|
||||
utils.Int2Str(skuItem.ID): jxutils.GenFakeID(),
|
||||
}
|
||||
}
|
||||
if err == nil {
|
||||
storeSkuBind.WscID = skuMap[utils.Int2Str(skuItem.ID)]
|
||||
storeSkuBind.WscID2 = goodsID
|
||||
updateFields = append(updateFields, model.FieldWscID, model.FieldWscID2)
|
||||
}
|
||||
} else {
|
||||
goodsID := utils.Str2Int64WithDefault(skuItem.VendorNameID, 0)
|
||||
goodsInfo, err2 := api.WeimobAPI.QueryGoodsDetail(goodsID)
|
||||
if err = err2; err == nil {
|
||||
// http://open.weimob.com/docapi/article?tag=Af
|
||||
// sku id,如果为空,则新增sku; 如果更新之前的skuId与入参skuId对应,则更新sku; 如果更新之前的skuId没有和入参的skuId对应,删除更新之前的sku
|
||||
skuList[0][weimobapi.KeySkuID] = utils.Str2Int64WithDefault(skuItem.VendorSkuID, 0)
|
||||
remoteSkuList := goodsInfo[weimobapi.KeySkuList].([]interface{})
|
||||
if len(remoteSkuList) > 0 {
|
||||
// skuList[0][weimobapi.KeyEditStockNum] = model.MaxStoreSkuStockQty - int(utils.MustInterface2Int64(remoteSkuList[0].(map[string]interface{})[weimobapi.KeyAvailableStockNum]))
|
||||
}
|
||||
if globals.EnableWscStoreWrite {
|
||||
_, _, err = api.WeimobAPI.UpdateGoods(goodsID, title, false, []string{skuItem.Img}, skuItem.Comment, isPutAway, 0, categoryId, classifyIdList, b2cGoods, skuList, nil)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user