实验饿百同步饿鲜达商品

This commit is contained in:
苏尹岚
2020-02-11 11:35:15 +08:00
parent 7d24d9a31a
commit 7e4993ae55
2 changed files with 32 additions and 8 deletions

View File

@@ -63,6 +63,9 @@ type StoreSkuSyncInfo struct {
BindDeletedAt time.Time `orm:"type(datetime)" json:"bindDeletedAt"` BindDeletedAt time.Time `orm:"type(datetime)" json:"bindDeletedAt"`
model.Sku model.Sku
ExdSkuID string `orm:"column(exd_sku_id)"`
ExdSkuName string
ExdUpc int
// sku_name // sku_name
Prefix string Prefix string

View File

@@ -2,6 +2,7 @@ package ebai
import ( import (
"regexp" "regexp"
"strings"
"time" "time"
"git.rosy.net.cn/baseapi/platformapi/ebaiapi" "git.rosy.net.cn/baseapi/platformapi/ebaiapi"
@@ -19,6 +20,7 @@ import (
const ( const (
defVendorCatID = 201222934 // 其他蔬菜 defVendorCatID = 201222934 // 其他蔬菜
exdStoreName = "饿鲜达"
) )
var ( var (
@@ -118,7 +120,7 @@ func (p *PurchaseHandler) IsErrSkuNotExist(err error) (isNotExist bool) {
func (p *PurchaseHandler) updateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo, isNeedMapCat bool) (failedList []*partner.StoreSkuInfoWithErr, err error) { func (p *PurchaseHandler) updateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo, isNeedMapCat bool) (failedList []*partner.StoreSkuInfoWithErr, err error) {
storeSku := storeSkuList[0] storeSku := storeSkuList[0]
strStoreID := utils.Int2Str(storeID) strStoreID := utils.Int2Str(storeID)
params := genSkuParamsFromStoreSkuInfo2(storeSku, false) params := genSkuParamsFromStoreSkuInfo2(storeSku, false, false)
if globals.EnableEbaiStoreWrite { if globals.EnableEbaiStoreWrite {
_, err = api.EbaiAPI.SkuUpdate(ctx.GetTrackInfo(), strStoreID, utils.Str2Int64(storeSku.VendorSkuID), params) _, err = api.EbaiAPI.SkuUpdate(ctx.GetTrackInfo(), strStoreID, utils.Str2Int64(storeSku.VendorSkuID), params)
if err != nil { if err != nil {
@@ -141,11 +143,23 @@ func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, v
// 对于多门店平台来说storeSkuList中只有SkuID与VendorSkuID有意义 // 对于多门店平台来说storeSkuList中只有SkuID与VendorSkuID有意义
func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
storeSku := storeSkuList[0] storeSku := storeSkuList[0]
var vendorSkuID int64 var (
params := genSkuParamsFromStoreSkuInfo2(storeSku, true) vendorSkuID int64
isExd bool = false
customSkuID int64
)
store, _ := dao.GetStoreDetail(dao.GetDB(), storeSku.StoreID, model.VendorIDEBAI)
if strings.Contains(store.Name, exdStoreName) {
isExd = true
customSkuID = utils.Str2Int64(storeSku.ExdSkuID)
} else {
isExd = false
customSkuID = int64(storeSku.SkuID)
}
params := genSkuParamsFromStoreSkuInfo2(storeSku, true, isExd)
if globals.EnableEbaiStoreWrite { if globals.EnableEbaiStoreWrite {
strStoreID := utils.Int2Str(storeID) strStoreID := utils.Int2Str(storeID)
if vendorSkuID, err = api.EbaiAPI.SkuCreate(ctx.GetTrackInfo(), strStoreID, storeSku.SkuID, params); err == nil { if vendorSkuID, err = api.EbaiAPI.SkuCreate(ctx.GetTrackInfo(), strStoreID, customSkuID, params); err == nil {
utils.AfterFuncWithRecover(5*time.Second, func() { utils.AfterFuncWithRecover(5*time.Second, func() {
api.EbaiAPI.SkuShopCategoryMap(strStoreID, vendorSkuID, "", utils.Str2Int64(storeSku.VendorCatID), genSkuCatRank(storeSku)) api.EbaiAPI.SkuShopCategoryMap(strStoreID, vendorSkuID, "", utils.Str2Int64(storeSku.VendorCatID), genSkuCatRank(storeSku))
// 饿百平台有BUG会导致新建一个之前删除的商品时信息不会及时更新强制刷新一下 // 饿百平台有BUG会导致新建一个之前删除的商品时信息不会及时更新强制刷新一下
@@ -270,7 +284,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrg
return failedList, err return failedList, err
} }
func genSkuParamsFromStoreSkuInfo2(storeSku *dao.StoreSkuSyncInfo, isCreate bool) (params map[string]interface{}) { func genSkuParamsFromStoreSkuInfo2(storeSku *dao.StoreSkuSyncInfo, isCreate, isExd bool) (params map[string]interface{}) {
photos := []map[string]interface{}{ photos := []map[string]interface{}{
map[string]interface{}{ map[string]interface{}{
"is_master": true, "is_master": true,
@@ -284,14 +298,21 @@ func genSkuParamsFromStoreSkuInfo2(storeSku *dao.StoreSkuSyncInfo, isCreate bool
}) })
} }
params = map[string]interface{}{ params = map[string]interface{}{
"name": utils.LimitMixedStringLen(storeSku.SkuName, ebaiapi.MaxSkuNameByteCount), // "name": utils.LimitMixedStringLen(storeSku.SkuName, ebaiapi.MaxSkuNameByteCount),
"left_num": model.MaxStoreSkuStockQty, "left_num": model.MaxStoreSkuStockQty,
"category_id": utils.Str2Int64(storeSku.VendorCatID), // "category_id": utils.Str2Int64(storeSku.VendorCatID),
"predict_cat": 0, // 不使用推荐类目 "predict_cat": 0, // 不使用推荐类目
"cat3_id": getEbaiCat(storeSku.VendorVendorCatID), "cat3_id": getEbaiCat(storeSku.VendorVendorCatID),
"weight": storeSku.Weight, "weight": storeSku.Weight,
"photos": photos, "photos": photos,
} }
if !isExd {
params["category_id"] = utils.Str2Int64(storeSku.VendorCatID)
params["name"] = utils.LimitMixedStringLen(storeSku.SkuName, ebaiapi.MaxSkuNameByteCount)
} else {
params["upc"] = storeSku.ExdUpc
params["name"] = storeSku.ExdSkuName
}
if storeSku.DescImg != "" { if storeSku.DescImg != "" {
params["rtf"] = storeSku.DescImg params["rtf"] = storeSku.DescImg
} }