- 处理饿百商品富文本详情
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
"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/model/dao"
|
||||||
"git.rosy.net.cn/jx-callback/business/partner"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
type SkuNamesInfo struct {
|
type SkuNamesInfo struct {
|
||||||
@@ -25,6 +27,19 @@ var (
|
|||||||
ErrInputCatsDoesntMatch = errors.New("输入的类别列表不合法,需要输入一个父ID下的所有子类别")
|
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表示所有
|
// parentID 为-1表示所有
|
||||||
func GetVendorCategories(ctx *jxcontext.Context, vendorID int, parentID string) (vendorCats []*model.SkuVendorCategory, err error) {
|
func GetVendorCategories(ctx *jxcontext.Context, vendorID int, parentID string) (vendorCats []*model.SkuVendorCategory, err error) {
|
||||||
cond := map[string]interface{}{
|
cond := map[string]interface{}{
|
||||||
@@ -548,6 +563,14 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s
|
|||||||
skuNameExt.ImgWeimob = imgHintMap[model.VendorIDWSC]
|
skuNameExt.ImgWeimob = imgHintMap[model.VendorIDWSC]
|
||||||
skuNameExt.ImgEbai = imgHintMap[model.VendorIDEBAI]
|
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 {
|
if err = dao.CreateEntity(db, &skuNameExt.SkuName); err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
return nil, err
|
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 {
|
if err = dao.GetEntity(db, skuName); err != nil {
|
||||||
return 0, err
|
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 := dao.StrictMakeMapByStructObject(payload, skuName, userName)
|
||||||
valid = utils.RemoveGeneralMapKeys(valid, model.FieldSpecQuality, model.FieldSpecUnit)
|
valid = utils.RemoveGeneralMapKeys(valid, model.FieldSpecQuality, model.FieldSpecUnit)
|
||||||
_, hasPlaces := payload["places"]
|
_, hasPlaces := payload["places"]
|
||||||
@@ -630,6 +656,20 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|||||||
valid["ImgWeimob"] = imgHintMap[model.VendorIDWSC]
|
valid["ImgWeimob"] = imgHintMap[model.VendorIDWSC]
|
||||||
valid["ImgEbai"] = imgHintMap[model.VendorIDEBAI]
|
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 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 utils.Interface2Int64WithDefault(payload["isGlobal"], 0) == 0 && payload["places"] != nil {
|
||||||
if places, ok := payload["places"].([]interface{}); ok {
|
if places, ok := payload["places"].([]interface{}); ok {
|
||||||
|
|||||||
@@ -182,7 +182,8 @@ type SkuName struct {
|
|||||||
Status int `orm:"default(1)" json:"status"` // skuname状态,取值同sku.Status
|
Status int `orm:"default(1)" json:"status"` // skuname状态,取值同sku.Status
|
||||||
IsSpu int8 `orm:"column(is_spu)" json:"isSpu"` // 用于指明是否SKUNAME当成SPU
|
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"`
|
JdID int64 `orm:"column(jd_id);null;index" json:"jdID"`
|
||||||
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
||||||
|
|||||||
@@ -31,15 +31,15 @@ type tStoreSkuFullInfo struct {
|
|||||||
Weight int `json:"weight"` // 重量/质量,单位为克,当相应的SkuName的SpecUnit为g或kg时,必须等于SpecQuality
|
Weight int `json:"weight"` // 重量/质量,单位为克,当相应的SkuName的SpecUnit为g或kg时,必须等于SpecQuality
|
||||||
SkuStatus int
|
SkuStatus int
|
||||||
|
|
||||||
Prefix string `orm:"size(255)" json:"prefix"`
|
Prefix string `orm:"size(255)" json:"prefix"`
|
||||||
Name string `orm:"size(255);index" json:"name"`
|
Name string `orm:"size(255);index" json:"name"`
|
||||||
Comment string `orm:"size(255)" json:"comment"`
|
Comment string `orm:"size(255)" json:"comment"`
|
||||||
IsGlobal int8 `orm:"default(1)" json:"isGlobal"` // 是否是全部(全国)可见,如果否的话,可见性由SkuPlace决定
|
IsGlobal int8 `orm:"default(1)" json:"isGlobal"` // 是否是全部(全国)可见,如果否的话,可见性由SkuPlace决定
|
||||||
Unit string `orm:"size(8)" json:"unit"`
|
Unit string `orm:"size(8)" json:"unit"`
|
||||||
Img string `orm:"size(255)" json:"img"`
|
Img string `orm:"size(255)" json:"img"`
|
||||||
PlaceStr string
|
PlaceStr string
|
||||||
Upc string
|
Upc string
|
||||||
DescImg string
|
DescImgEbai string
|
||||||
|
|
||||||
CatName string `orm:"size(255)"`
|
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) {
|
func (p *PurchaseHandler) getDirtyStoreSkus(db *dao.DaoDB, storeID int, skuIDs []int) (storeSkuInfoList []*tStoreSkuFullInfo, err error) {
|
||||||
sql := `
|
sql := `
|
||||||
SELECT t8.price_percentage, t1.*, t2.id sku_id, t2.spec_quality, t2.spec_unit, t2.weight, t2.status sku_status,
|
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.name cat_name, t4.ebai_price_percentage cat_price_percentage,
|
||||||
t4.id cat_id, t4.level cat_level, t5.ebai_id cat_ebai_id,
|
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,
|
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{}) {
|
func genSkuParamsFromStoreSkuInfo(storeSku *tStoreSkuFullInfo) (params map[string]interface{}) {
|
||||||
price := jxutils.CaculateSkuVendorPrice(storeSku.Price, storeSku.PricePercentage, storeSku.CatPricePercentage)
|
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{}{
|
params = map[string]interface{}{
|
||||||
"name": jxutils.ComposeSkuName(storeSku.Prefix, storeSku.Name, storeSku.Comment, storeSku.Unit, storeSku.SpecQuality, storeSku.SpecUnit, 0),
|
"name": jxutils.ComposeSkuName(storeSku.Prefix, storeSku.Name, storeSku.Comment, storeSku.Unit, storeSku.SpecQuality, storeSku.SpecUnit, 0),
|
||||||
"left_num": model.MaxStoreSkuStockQty,
|
"left_num": model.MaxStoreSkuStockQty,
|
||||||
@@ -408,7 +396,15 @@ func genSkuParamsFromStoreSkuInfo(storeSku *tStoreSkuFullInfo) (params map[strin
|
|||||||
"cat2_id": getEbaiCat(storeSku.EbaiCat2ID, 2),
|
"cat2_id": getEbaiCat(storeSku.EbaiCat2ID, 2),
|
||||||
"cat3_id": getEbaiCat(storeSku.EbaiCat3ID, 3),
|
"cat3_id": getEbaiCat(storeSku.EbaiCat3ID, 3),
|
||||||
"weight": storeSku.Weight,
|
"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 {
|
if storeSku.EbaiSyncStatus&(model.SyncFlagPriceMask|model.SyncFlagNewMask) != 0 {
|
||||||
params["sale_price"] = price
|
params["sale_price"] = price
|
||||||
|
|||||||
Reference in New Issue
Block a user