diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 0d9c8f758..bbf1ba3c8 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -8,10 +8,11 @@ import ( "git.rosy.net.cn/baseapi/utils" "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/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" "git.rosy.net.cn/jx-callback/globals" - "git.rosy.net.cn/jx-callback/globals/api" ) type SkuNamesInfo struct { @@ -457,24 +458,20 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s dao.Rollback(db) return nil, err } - if globals.EnableWscStoreWrite { - if skuNameExt.ImgWeimob, err = api.WeimobAPI.UploadImg(imgContent, ""); err != nil { - dao.Rollback(db) - return nil, err - } - } - if globals.EnableEbaiStoreWrite { - if skuNameExt.ImgEbai, err = api.EbaiAPI.PictureUpload(skuNameExt.Img, nil); err != nil { - dao.Rollback(db) - return nil, err - } - } if skuNameExt.ImgHashCode == "" { skuNameExt.ImgHashCode = imgMD5 } else if skuNameExt.ImgHashCode != imgMD5 { dao.Rollback(db) return nil, errors.New("图片HASH值不同") } + imgHintMap, err := UploadImg2Platforms(ctx, nil, skuNameExt.Img, imgContent, "") + if err != nil { + dao.Rollback(db) + return nil, err + } + skuNameExt.ImgWeimob = imgHintMap[model.VendorIDWSC] + skuNameExt.ImgEbai = imgHintMap[model.VendorIDEBAI] + if err = dao.CreateEntity(db, &skuNameExt.SkuName); err != nil { dao.Rollback(db) return nil, err @@ -537,16 +534,13 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf return 0, err } valid["ImgHashCode"] = imgMD5 - if globals.EnableWscStoreWrite { - if valid["ImgWeimob"], err = api.WeimobAPI.UploadImg(imgContent, ""); err != nil { - return 0, err - } - } - if globals.EnableEbaiStoreWrite { - if valid["ImgEbai"], err = api.EbaiAPI.PictureUpload(valid["img"].(string), nil); err != nil { - return 0, err - } + 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] } 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 { @@ -784,3 +778,32 @@ 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, model.VendorIDWSC}) + 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 +} diff --git a/business/partner/partner.go b/business/partner/partner.go index dc7695e80..0ab6894d8 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -166,6 +166,7 @@ type IPurchasePlatformHandler interface { GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) ReplyOrderComment(ctx *jxcontext.Context, orderComment *model.OrderComment, replyComment string) (err error) + UploadImg(ctx *jxcontext.Context, imgURL string, imgData []byte, imgName string) (imgHint string, err error) } // db *dao.DaoDB, diff --git a/business/partner/purchase/ebai/ebai.go b/business/partner/purchase/ebai/ebai.go index 61d924709..e17c93481 100644 --- a/business/partner/purchase/ebai/ebai.go +++ b/business/partner/purchase/ebai/ebai.go @@ -2,8 +2,11 @@ package ebai import ( "git.rosy.net.cn/baseapi/platformapi/ebaiapi" + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" + "git.rosy.net.cn/jx-callback/globals" + "git.rosy.net.cn/jx-callback/globals/api" ) var ( @@ -31,3 +34,10 @@ func EbaiBusStatus2JxStatus(ebaiStatus int) int { func (p *PurchaseHandler) GetVendorID() int { return model.VendorIDEBAI } + +func (p *PurchaseHandler) UploadImg(ctx *jxcontext.Context, imgURL string, imgData []byte, imgName string) (imgHint string, err error) { + if globals.EnableEbaiStoreWrite { + imgHint, err = api.EbaiAPI.PictureUpload(imgURL, imgData) + } + return imgHint, err +} diff --git a/business/partner/purchase/elm/elm.go b/business/partner/purchase/elm/elm.go index abe8248c0..af089cefe 100644 --- a/business/partner/purchase/elm/elm.go +++ b/business/partner/purchase/elm/elm.go @@ -4,6 +4,7 @@ import ( "git.rosy.net.cn/baseapi/platformapi/elmapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" ) @@ -82,3 +83,7 @@ func (c *PurchaseHandler) OnCallbackMsg(msg *elmapi.CallbackMsg) (retVal *elmapi } return retVal } + +func (p *PurchaseHandler) UploadImg(ctx *jxcontext.Context, imgURL string, imgData []byte, imgName string) (imgHint string, err error) { + return imgHint, err +} diff --git a/business/partner/purchase/jd/jd.go b/business/partner/purchase/jd/jd.go index 0a0adb380..859844b23 100644 --- a/business/partner/purchase/jd/jd.go +++ b/business/partner/purchase/jd/jd.go @@ -5,6 +5,7 @@ import ( "git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" @@ -83,3 +84,7 @@ func OnAfterSaleMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse }) return retVal } + +func (p *PurchaseHandler) UploadImg(ctx *jxcontext.Context, imgURL string, imgData []byte, imgName string) (imgHint string, err error) { + return imgHint, err +} diff --git a/business/partner/purchase/mtwm/mtwm.go b/business/partner/purchase/mtwm/mtwm.go index 99d993f5f..06b52ec59 100644 --- a/business/partner/purchase/mtwm/mtwm.go +++ b/business/partner/purchase/mtwm/mtwm.go @@ -7,6 +7,7 @@ import ( "git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals/api" @@ -147,3 +148,7 @@ func skuStatusJX2Mtwm(status int) int { } return 1 } + +func (p *PurchaseHandler) UploadImg(ctx *jxcontext.Context, imgURL string, imgData []byte, imgName string) (imgHint string, err error) { + return imgHint, err +} diff --git a/business/partner/purchase/weimob/wsc/wsc.go b/business/partner/purchase/weimob/wsc/wsc.go index efabdecd7..f1b3eea01 100644 --- a/business/partner/purchase/weimob/wsc/wsc.go +++ b/business/partner/purchase/weimob/wsc/wsc.go @@ -2,8 +2,10 @@ package wsc import ( "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" + "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" ) @@ -63,3 +65,10 @@ func vendorCategoryID2String(catID int64) string { } return "" } + +func (p *PurchaseHandler) UploadImg(ctx *jxcontext.Context, imgURL string, imgData []byte, imgName string) (imgHint string, err error) { + if globals.EnableWscStoreWrite { + imgHint, err = api.WeimobAPI.UploadImg(imgData, imgName) + } + return imgHint, err +}