- 将skuName中的图片外移至dataResource

This commit is contained in:
gazebo
2019-09-26 08:35:26 +08:00
parent 1766adf203
commit 7f46072cc5
15 changed files with 507 additions and 171 deletions

View File

@@ -9,8 +9,8 @@ import (
"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/datares"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner"
@@ -569,21 +569,29 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s
}
if globals.EnableStoreWrite {
imgContent, imgMD5, err := jxutils.DownloadFileByURL(skuNameExt.Img)
if err != nil {
// imgContent, imgMD5, err := jxutils.DownloadFileByURL(skuNameExt.Img)
// if err != nil {
// return nil, err
// }
// if skuNameExt.ImgHashCode == "" {
// skuNameExt.ImgHashCode = imgMD5
// } else if skuNameExt.ImgHashCode != imgMD5 {
// return nil, errors.New("图片HASH值不同")
// }
// imgHintMap, err := UploadImg2Platforms(ctx, nil, skuNameExt.Img, imgContent, "")
// if err != nil {
// return nil, err
// }
// skuNameExt.ImgEbai = imgHintMap[model.VendorIDEBAI]
dataRes, err2 := datares.TryRegisterDataResource(ctx, skuNameExt.Name, skuNameExt.Img, true, true, false)
if err = err2; err != nil {
return nil, err
}
if skuNameExt.ImgHashCode == "" {
skuNameExt.ImgHashCode = imgMD5
} else if skuNameExt.ImgHashCode != imgMD5 {
return nil, errors.New("图片HASH值不同")
skuNameExt.ImgHashCode = dataRes.HashCode
skuNameExt.ImgEbai = dataRes.EbaiURL
if skuNameExt.Img2 != "" {
datares.TryRegisterDataResource(ctx, skuNameExt.Name, skuNameExt.Img2, true, true, true)
}
imgHintMap, err := UploadImg2Platforms(ctx, nil, skuNameExt.Img, imgContent, "")
if err != nil {
return nil, err
}
// 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))
@@ -664,8 +672,6 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
_, hasPlaces := payload["places"]
if len(valid) > 0 || hasPlaces {
globals.SugarLogger.Debugf("UpdateSkuName valid:%s", utils.Format4Output(valid, false))
dao.Begin(db)
defer dao.Rollback(db)
if upc, _ := valid["upc"].(string); upc != "" {
skuName := &model.SkuName{
Upc: upc,
@@ -680,26 +686,34 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
}
if globals.EnableStoreWrite {
if valid["img"] != nil {
imgContent, imgMD5, err2 := jxutils.DownloadFileByURL(valid["img"].(string))
// imgContent, imgMD5, err2 := jxutils.DownloadFileByURL(valid["img"].(string))
// if err = err2; err != nil {
// return 0, err
// }
// valid["ImgHashCode"] = imgMD5
// imgHintMap, err := UploadImg2Platforms(ctx, nil, valid["img"].(string), imgContent, "")
// if err != nil {
// return 0, err
// }
// // valid["ImgWeimob"] = imgHintMap[model.VendorIDWSC]
// valid["ImgEbai"] = imgHintMap[model.VendorIDEBAI]
dataRes, err2 := datares.TryRegisterDataResource(ctx, skuName.Name, valid["img"].(string), true, true, false)
if err = err2; err != nil {
return 0, err
}
valid["ImgHashCode"] = imgMD5
imgHintMap, err := UploadImg2Platforms(ctx, nil, valid["img"].(string), imgContent, "")
if err != nil {
dao.Rollback(db)
return 0, err
}
// valid["ImgWeimob"] = imgHintMap[model.VendorIDWSC]
valid["ImgEbai"] = imgHintMap[model.VendorIDEBAI]
valid["ImgHashCode"] = dataRes.HashCode
valid["ImgEbai"] = dataRes.EbaiURL
}
if valid["img2"] != nil {
datares.TryRegisterDataResource(ctx, skuName.Name, valid["img2"].(string), true, true, true)
}
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
}
}
@@ -708,6 +722,13 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
}
}
}
dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
panic(r)
}
}()
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 {
@@ -720,6 +741,7 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
placeBind.NameID = nameID
err = dao.CreateEntity(db, placeBind)
} else {
dao.Rollback(db)
return 0, errors.New("地点代码非法")
}
}
@@ -736,12 +758,14 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
if err = err2; err == nil && len(skuIDs) > 0 {
_, err = SetStoreSkuSyncStatus2(db, nil, partner.GetSingleStoreVendorIDs(), skuIDs, model.SyncFlagModifiedMask)
}
if err == nil {
dao.Commit(db)
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
}
}
}
if err == nil {
dao.Commit(db)
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
} else {
dao.Rollback(db)
}
}
}
return num, err
@@ -1013,35 +1037,6 @@ func GetVendorSku(ctx *jxcontext.Context, vendorID int, vendorSkuID string) (sku
return nil, ErrCanNotFindVendor
}
func UploadImg2Platforms(ctx *jxcontext.Context, parentTask tasksch.ITask, imgURL string, imgData []byte, imgName string) (imgHintMap map[int]string, err error) {
task := tasksch.NewParallelTask("UploadImg2Platforms", nil, ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
vendorID := batchItemList[0].(int)
if handler := partner.GetPurchasePlatformFromVendorID(vendorID); handler != nil {
imgHint, err2 := handler.UploadImg(ctx, imgURL, imgData, imgName)
if err = err2; err == nil {
return [][]interface{}{
[]interface{}{
vendorID,
imgHint,
},
}, nil
}
}
return nil, err
}, []int{model.VendorIDEBAI})
tasksch.HandleTask(task, parentTask, false).Run()
resultList, err := task.GetResult(0)
if err == nil {
imgHintMap = make(map[int]string)
for _, v := range resultList {
vList := v.([]interface{})
imgHintMap[vList[0].(int)] = vList[1].(string)
}
}
return imgHintMap, err
}
func SortCategorySkus(ctx *jxcontext.Context, catID int, skuIDList []int) (err error) {
db := dao.GetDB()
userName := ctx.GetUserName()