diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index aa963fb05..0a79b3af9 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -6,6 +6,7 @@ import ( "strconv" "strings" + "git.rosy.net.cn/baseapi/platformapi/ebaiapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" @@ -14,6 +15,7 @@ import ( "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" + "git.rosy.net.cn/jx-callback/globals/api" ) type SkuNamesInfo struct { @@ -25,6 +27,19 @@ var ( ErrInputCatsDoesntMatch = errors.New("输入的类别列表不合法,需要输入一个父ID下的所有子类别") ) +var ( + ebaiUploadRTFShopID string // 饿百找一个店用于调用SkuUploadRTF +) + +func getAndSetEbaiUploadRTFShopID() (shopID string) { + if ebaiUploadRTFShopID == "" { + if storeDetail, err := dao.GetStoreDetail(dao.GetDB(), 0, model.VendorIDEBAI); err == nil { + ebaiUploadRTFShopID = utils.Int2Str(storeDetail.Store.ID) + } + } + return ebaiUploadRTFShopID +} + // parentID 为-1表示所有 func GetVendorCategories(ctx *jxcontext.Context, vendorID int, parentID string) (vendorCats []*model.SkuVendorCategory, err error) { cond := map[string]interface{}{ @@ -548,6 +563,14 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s skuNameExt.ImgWeimob = imgHintMap[model.VendorIDWSC] skuNameExt.ImgEbai = imgHintMap[model.VendorIDEBAI] + if skuNameExt.DescImg != "" && getAndSetEbaiUploadRTFShopID() != "" { + skuNameExt.DescImgEbai, err = api.EbaiAPI.SkuUploadRTF(getAndSetEbaiUploadRTFShopID(), ebaiapi.BuildRFTFromImgs(skuNameExt.DescImg)) + } + if err != nil { + dao.Rollback(db) + return nil, err + } + if err = dao.CreateEntity(db, &skuNameExt.SkuName); err != nil { dao.Rollback(db) return nil, err @@ -594,9 +617,12 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf if err = dao.GetEntity(db, skuName); err != nil { return 0, err } - if _, ok := payload["isSpu"]; ok { - delete(payload, "isSpu") - } + delete(payload, "isSpu") + delete(payload, "ImgHashCode") + delete(payload, "ImgWeimob") + delete(payload, "ImgEbai") + delete(payload, "descImgEbai") + valid := dao.StrictMakeMapByStructObject(payload, skuName, userName) valid = utils.RemoveGeneralMapKeys(valid, model.FieldSpecQuality, model.FieldSpecUnit) _, hasPlaces := payload["places"] @@ -630,6 +656,20 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf valid["ImgWeimob"] = imgHintMap[model.VendorIDWSC] valid["ImgEbai"] = imgHintMap[model.VendorIDEBAI] } + if valid["descImg"] != nil { + descImg := valid["descImg"].(string) + if descImg != "" { + if getAndSetEbaiUploadRTFShopID() != "" { + valid["descImgEbai"], err = api.EbaiAPI.SkuUploadRTF(getAndSetEbaiUploadRTFShopID(), ebaiapi.BuildRFTFromImgs(descImg)) + if err != nil { + dao.Rollback(db) + return 0, err + } + } + } else { + valid["descImgEbai"] = "" + } + } if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, skuName, valid, userName, nil, model.FieldJdSyncStatus, model.SyncFlagModifiedMask); err == nil && num == 1 { if utils.Interface2Int64WithDefault(payload["isGlobal"], 0) == 0 && payload["places"] != nil { if places, ok := payload["places"].([]interface{}); ok { diff --git a/business/model/sku.go b/business/model/sku.go index f0ea534ab..b51e50286 100644 --- a/business/model/sku.go +++ b/business/model/sku.go @@ -182,7 +182,8 @@ type SkuName struct { Status int `orm:"default(1)" json:"status"` // skuname状态,取值同sku.Status IsSpu int8 `orm:"column(is_spu)" json:"isSpu"` // 用于指明是否SKUNAME当成SPU - DescImg string `orm:"size(255)" json:"descImg"` // 商品详情图片描述 + DescImg string `orm:"size(255)" json:"descImg"` // 商品详情图片描述 + DescImgEbai string `orm:"size(255)" json:"descImgEbai"` // 饿百的商品详情图片描述RTF JdID int64 `orm:"column(jd_id);null;index" json:"jdID"` JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"` diff --git a/business/partner/purchase/ebai/store_sku.go b/business/partner/purchase/ebai/store_sku.go index a7922433c..66f1bdfd3 100644 --- a/business/partner/purchase/ebai/store_sku.go +++ b/business/partner/purchase/ebai/store_sku.go @@ -31,15 +31,15 @@ type tStoreSkuFullInfo struct { Weight int `json:"weight"` // 重量/质量,单位为克,当相应的SkuName的SpecUnit为g或kg时,必须等于SpecQuality SkuStatus int - Prefix string `orm:"size(255)" json:"prefix"` - Name string `orm:"size(255);index" json:"name"` - Comment string `orm:"size(255)" json:"comment"` - IsGlobal int8 `orm:"default(1)" json:"isGlobal"` // 是否是全部(全国)可见,如果否的话,可见性由SkuPlace决定 - Unit string `orm:"size(8)" json:"unit"` - Img string `orm:"size(255)" json:"img"` - PlaceStr string - Upc string - DescImg string + Prefix string `orm:"size(255)" json:"prefix"` + Name string `orm:"size(255);index" json:"name"` + Comment string `orm:"size(255)" json:"comment"` + IsGlobal int8 `orm:"default(1)" json:"isGlobal"` // 是否是全部(全国)可见,如果否的话,可见性由SkuPlace决定 + Unit string `orm:"size(8)" json:"unit"` + Img string `orm:"size(255)" json:"img"` + PlaceStr string + Upc string + DescImgEbai string CatName string `orm:"size(255)"` @@ -83,7 +83,7 @@ var ( func (p *PurchaseHandler) getDirtyStoreSkus(db *dao.DaoDB, storeID int, skuIDs []int) (storeSkuInfoList []*tStoreSkuFullInfo, err error) { sql := ` SELECT t8.price_percentage, t1.*, t2.id sku_id, t2.spec_quality, t2.spec_unit, t2.weight, t2.status sku_status, - t3.id name_id, t3.prefix, t3.name, t2.comment, t3.is_global, t3.unit, IF(t3.img_ebai <> '', t3.img_ebai, t3.img) img, t3.upc, t3.desc_img, + t3.id name_id, t3.prefix, t3.name, t2.comment, t3.is_global, t3.unit, IF(t3.img_ebai <> '', t3.img_ebai, t3.img) img, t3.upc, t3.desc_img_ebai, t4.name cat_name, t4.ebai_price_percentage cat_price_percentage, t4.id cat_id, t4.level cat_level, t5.ebai_id cat_ebai_id, t4p.id parent_cat_id, t5p.ebai_id parent_cat_ebai_id, t5p.ebai_sync_status parent_cat_ebai_sync_status, @@ -388,18 +388,6 @@ func (p *PurchaseHandler) RefreshStoresAllSkusID(ctx *jxcontext.Context, parentT /////////// func genSkuParamsFromStoreSkuInfo(storeSku *tStoreSkuFullInfo) (params map[string]interface{}) { price := jxutils.CaculateSkuVendorPrice(storeSku.Price, storeSku.PricePercentage, storeSku.CatPricePercentage) - photos := []map[string]interface{}{ - map[string]interface{}{ - "is_master": true, - "url": storeSku.Img, - }, - } - if storeSku.DescImg != "" { - // photos = append(photos, map[string]interface{}{ - // "is_master": false, - // "url": storeSku.DescImg, - // }) - } params = map[string]interface{}{ "name": jxutils.ComposeSkuName(storeSku.Prefix, storeSku.Name, storeSku.Comment, storeSku.Unit, storeSku.SpecQuality, storeSku.SpecUnit, 0), "left_num": model.MaxStoreSkuStockQty, @@ -408,7 +396,15 @@ func genSkuParamsFromStoreSkuInfo(storeSku *tStoreSkuFullInfo) (params map[strin "cat2_id": getEbaiCat(storeSku.EbaiCat2ID, 2), "cat3_id": getEbaiCat(storeSku.EbaiCat3ID, 3), "weight": storeSku.Weight, - "photos": photos, + "photos": []map[string]interface{}{ + map[string]interface{}{ + "is_master": true, + "url": storeSku.Img, + }, + }, + } + if storeSku.DescImgEbai != "" { + params["rtf"] = storeSku.DescImgEbai } if storeSku.EbaiSyncStatus&(model.SyncFlagPriceMask|model.SyncFlagNewMask) != 0 { params["sale_price"] = price