diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index d3c35489e..57d64bcb7 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -425,6 +425,7 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params ma t1.unit, t1.price, t1.img, + t1.img2, t1.status, t1.is_spu, t1.img_hash_code, @@ -451,6 +452,7 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params ma t1.unit, t1.price, t1.img, + t1.img2, t1.status, t1.is_spu, t1.img_hash_code, diff --git a/business/jxutils/jxutils.go b/business/jxutils/jxutils.go index 3c8b6f16d..414a90ead 100644 --- a/business/jxutils/jxutils.go +++ b/business/jxutils/jxutils.go @@ -725,3 +725,12 @@ func GuessDataResourceVendor(resourceURL string) (vendorID int) { } return vendorID } + +func BatchString2Slice(strs ...string) (strList []string) { + for _, v := range strs { + if v != "" { + strList = append(strList, v) + } + } + return strList +} diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index d08aa17d8..9fece18bc 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -11,9 +11,12 @@ import ( var ( imgFieldMap = map[int]string{ - // model.VendorIDWSC: "img_weimob", model.VendorIDEBAI: "img_ebai", } + dataResFieldMap = map[int]string{ + model.VendorIDMTWM: "mtwm_url", + model.VendorIDEBAI: "ebai_url", + } descImgFieldMap = map[int]string{ model.VendorIDEBAI: "desc_img_ebai", } @@ -58,6 +61,7 @@ type StoreSkuSyncInfo struct { // 平台相关的图片信息 Img string + Img2 string DescImg string // 饿百是SkuName中的DescImgEbai VendorVendorCatID int64 `orm:"column(vendor_vendor_cat_id)"` // 平台商品分类(叶子结点) @@ -218,17 +222,16 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, isDirty bool) SELECT t1.id bind_id, t1.sku_id, t1.price, t1.unit_price, t1.status store_sku_status, %s.%s_id vendor_sku_id, t1.%s_sync_status store_sku_sync_status, %s vendor_name_id, t1.store_id, t1.deleted_at bind_deleted_at, t2.*, - t3.id name_id, t3.prefix, t3.name, t3.unit, IF(t3.%s <> '', t3.%s, t3.img) img, t3.upc, t3.%s desc_img, - t4.%s_category_id vendor_vendor_cat_id - ` + t3.id name_id, t3.prefix, t3.name, t3.unit, t3.upc, t3.%s desc_img, + IF(t11.%s <> '', t11.%s, IF(t3.%s <> '', t3.%s, t3.img)) img, + IF(t12.%s <> '', t12.%s, t3.img2) img2, + t4.%s_category_id vendor_vendor_cat_id` fmtParams := []interface{}{ - tableName, fieldPrefix, fieldPrefix, vendorSkuNameField, GetImgFieldName(vendorID), - GetImgFieldName(vendorID), GetDescImgFieldName(vendorID), fieldPrefix, + tableName, fieldPrefix, fieldPrefix, vendorSkuNameField, GetDescImgFieldName(vendorID), + GetDataResFieldName(vendorID), GetDataResFieldName(vendorID), GetImgFieldName(vendorID), GetImgFieldName(vendorID), + GetDataResFieldName(vendorID), GetDataResFieldName(vendorID), + fieldPrefix, } - // if vendorID == model.VendorIDEBAI { - // sql += `, - // t4vp.vendor_category_id vendor_vendor_cat_id2, t4vp.parent_id vendor_vendor_cat_id3` - // } if isSingleStorePF { sql += `, t5.%s_sync_status store_cat_sync_status, t5.%s_id vendor_cat_id, @@ -244,7 +247,9 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, isDirty bool) FROM store_sku_bind t1 LEFT JOIN sku t2 ON t1.sku_id = t2.id AND t2.deleted_at = ? AND t2.status = ? LEFT JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ? AND t3.status = ? - LEFT JOIN sku_category t4 ON t3.category_id = t4.id AND t4.deleted_at = ?` + LEFT JOIN sku_category t4 ON t3.category_id = t4.id AND t4.deleted_at = ? + LEFT JOIN data_resource t11 ON t11.main_url = t3.img + LEFT JOIN data_resource t12 ON t12.main_url = t3.img2` sqlParams := []interface{}{ utils.DefaultTimeValue, model.SkuStatusNormal, @@ -252,13 +257,6 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, isDirty bool) model.SkuStatusNormal, utils.DefaultTimeValue, } - // if vendorID == model.VendorIDEBAI { - // sql += ` - // LEFT JOIN sku_vendor_category t4v ON t4v.vendor_category_id = CONCAT(t4.%s_category_id, '') AND t4v.vendor_id = ? - // LEFT JOIN sku_vendor_category t4vp ON t4vp.vendor_category_id = t4v.parent_id AND t4v.vendor_id = ?` - // fmtParams = append(fmtParams, fieldPrefix) - // sqlParams = append(sqlParams, vendorID, vendorID) - // } if isSingleStorePF { sql += ` LEFT JOIN store_sku_category_map t5 ON t4.id = t5.category_id AND t5.store_id = t1.store_id AND t5.deleted_at = ? @@ -310,7 +308,9 @@ func GetFullStoreSkus(db *DaoDB, vendorID, storeID int) (skus []*StoreSkuSyncInf SELECT t1.id bind_id, t1.price, t1.unit_price, t1.status store_sku_status, t2.%s_id vendor_sku_id, t1.%s_sync_status store_sku_sync_status, t1.store_id, t1.deleted_at bind_deleted_at, t2.*, t2.id sku_id, - t3.id name_id, t3.prefix, t3.name, t3.unit, IF(t3.%s <> '', t3.%s, t3.img) img, t3.upc, t3.desc_img, + t3.id name_id, t3.prefix, t3.name, t3.unit, t3.upc, t3.desc_img, + IF(t11.%s <> '', t11.%s, IF(t3.%s <> '', t3.%s, t3.img)) img, + IF(t12.%s <> '', t12.%s, t3.img2) img2, t4.%s_category_id vendor_vendor_cat_id, t4.%s_sync_status store_cat_sync_status, t4.%s_id vendor_cat_id, t5sku.%s_sync_status sku_store_cat_sync_status, t5sku.%s_id sku_vendor_cat_id @@ -319,6 +319,8 @@ func GetFullStoreSkus(db *DaoDB, vendorID, storeID int) (skus []*StoreSkuSyncInf JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ? AND t3.status = ? JOIN sku_category t4 ON t3.category_id = t4.id AND t4.deleted_at = ? LEFT JOIN sku_category t5sku ON t2.category_id = t5sku.id + LEFT JOIN data_resource t11 ON t11.main_url = t3.img + LEFT JOIN data_resource t12 ON t12.main_url = t3.img2 WHERE t2.deleted_at = ? AND t2.status = ? AND t2.%s_id <> 0 ORDER BY t1.price DESC` sqlParams := []interface{}{ @@ -331,8 +333,14 @@ func GetFullStoreSkus(db *DaoDB, vendorID, storeID int) (skus []*StoreSkuSyncInf model.SkuStatusNormal, } fieldPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID]) - sql = fmt.Sprintf(sql, fieldPrefix, fieldPrefix, GetImgFieldName(vendorID), GetImgFieldName(vendorID), - fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix) + sql = fmt.Sprintf(sql, fieldPrefix, + fieldPrefix, + GetDataResFieldName(vendorID), GetDataResFieldName(vendorID), GetImgFieldName(vendorID), GetImgFieldName(vendorID), + GetDataResFieldName(vendorID), GetDataResFieldName(vendorID), + fieldPrefix, + fieldPrefix, fieldPrefix, + fieldPrefix, fieldPrefix, + fieldPrefix) // globals.SugarLogger.Debug(sql) // globals.SugarLogger.Debug(utils.Format4Output(sqlParams, false)) if err = GetRows(db, &skus, sql, sqlParams...); err != nil { @@ -425,6 +433,14 @@ func GetImgFieldName(vendorID int) (fieldName string) { return fieldName } +func GetDataResFieldName(vendorID int) (fieldName string) { + fieldName = dataResFieldMap[vendorID] + if fieldName == "" { + fieldName = "main_url" + } + return fieldName +} + func GetDescImgFieldName(vendorID int) (fieldName string) { fieldName = descImgFieldMap[vendorID] if fieldName == "" { diff --git a/business/partner/purchase/ebai/store_sku2.go b/business/partner/purchase/ebai/store_sku2.go index d4d9ad942..78a265ed7 100644 --- a/business/partner/purchase/ebai/store_sku2.go +++ b/business/partner/purchase/ebai/store_sku2.go @@ -235,6 +235,18 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, storeID i } func genSkuParamsFromStoreSkuInfo2(storeSku *dao.StoreSkuSyncInfo, isCreate bool) (params map[string]interface{}) { + photos := []map[string]interface{}{ + map[string]interface{}{ + "is_master": true, + "url": storeSku.Img, + }, + } + if storeSku.Img2 != "" { + photos = append(photos, map[string]interface{}{ + "is_master": false, + "url": storeSku.Img2, + }) + } params = map[string]interface{}{ "name": utils.LimitMixedStringLen(storeSku.SkuName, ebaiapi.MaxSkuNameByteCount), "left_num": model.MaxStoreSkuStockQty, @@ -244,12 +256,7 @@ func genSkuParamsFromStoreSkuInfo2(storeSku *dao.StoreSkuSyncInfo, isCreate bool // "cat2_id": getEbaiCat(storeSku.VendorVendorCatID2, 2), "cat3_id": getEbaiCat(storeSku.VendorVendorCatID, 3), "weight": storeSku.Weight, - "photos": []map[string]interface{}{ - map[string]interface{}{ - "is_master": true, - "url": storeSku.Img, - }, - }, + "photos": photos, } if storeSku.DescImg != "" { params["rtf"] = storeSku.DescImg diff --git a/business/partner/purchase/jd/sku.go b/business/partner/purchase/jd/sku.go index 3c63ab3bd..6b78f8b5a 100644 --- a/business/partner/purchase/jd/sku.go +++ b/business/partner/purchase/jd/sku.go @@ -152,7 +152,10 @@ func (p *PurchaseHandler) ReorderCategories(db *dao.DaoDB, parentCatID int, user func (p *PurchaseHandler) cuSku(db *dao.DaoDB, sku *model.Sku, handler func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (string, error)) (err error) { var skuInfoExt tSkuInfoExt err = dao.GetRow(nil, &skuInfoExt, ` - SELECT t2.*, t3.jd_id jd_cat_id, IF(t2.jd_category_id > 0, t2.jd_category_id, t3.jd_category_id) jd_category_id, t4.jd_id sku_cat_id + SELECT + t2.*, IF(t2.jd_category_id > 0, t2.jd_category_id, t3.jd_category_id) jd_category_id, + t3.jd_id jd_cat_id, + t4.jd_id sku_cat_id FROM sku t1 JOIN sku_name t2 ON t1.name_id = t2.id JOIN sku_category t3 ON t2.category_id = t3.id @@ -213,7 +216,7 @@ func (p *PurchaseHandler) CreateSku(db *dao.DaoDB, sku *model.Sku, userName stri return p.cuSku(db, sku, func(skuExt *tSkuInfoExt, price int, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) { if skuExt.IsSpu == 0 { if globals.EnableStoreWrite { - vendorSkuID, err = getAPI("").AddSku(utils.Int2Str(sku.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, skuName, price, jxutils.IntWeight2Float(sku.Weight), []string{skuExt.Img}, jxStatus2jdStatus(sku.Status), true, addParams) + vendorSkuID, err = getAPI("").AddSku(utils.Int2Str(sku.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, skuName, price, jxutils.IntWeight2Float(sku.Weight), jxutils.BatchString2Slice(skuExt.Img, skuExt.Img2), jxStatus2jdStatus(sku.Status), true, addParams) if err != nil { if jdSkuID := jdapi.GetJdSkuIDFromError(err); jdSkuID > 0 { vendorSkuID = utils.Int64ToStr(jdSkuID) @@ -305,7 +308,7 @@ func (p *PurchaseHandler) UpdateSku(db *dao.DaoDB, sku *model.Sku, userName stri params[jdapi.KeyBrandId] = skuExt.BrandID params[jdapi.KeySkuName] = skuName params[jdapi.KeyWeight] = jxutils.IntWeight2Float(sku.Weight) - params[jdapi.KeyImages] = []string{skuExt.Img} + params[jdapi.KeyImages] = jxutils.BatchString2Slice(skuExt.Img, skuExt.Img2) params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status) if skuExt.IsSpu == 0 { if globals.EnableStoreWrite { diff --git a/business/partner/purchase/mtwm/store_sku2.go b/business/partner/purchase/mtwm/store_sku2.go index d85b58fe9..5ffc2a6a9 100644 --- a/business/partner/purchase/mtwm/store_sku2.go +++ b/business/partner/purchase/mtwm/store_sku2.go @@ -2,6 +2,7 @@ package mtwm import ( "regexp" + "strings" "git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/utils" @@ -172,7 +173,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI foodData["box_price"] = 0.0 foodData["category_name"] = storeSku.VendorCatID foodData["is_sold_out"] = skuStatusJX2Mtwm(storeSku.MergedStatus) - foodData["picture"] = storeSku.Img + foodData["picture"] = strings.Join(jxutils.BatchString2Slice(storeSku.Img, storeSku.Img2), ",") if storeSku.DescImg != "" { foodData["picture_contents"] = storeSku.DescImg }