diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index de4f47e4d..16836bbdb 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -579,18 +579,18 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s // return nil, err // } // skuNameExt.ImgEbai = imgHintMap[model.VendorIDEBAI] - dataRes, err2 := datares.TryRegisterDataResource(ctx, skuNameExt.Name, skuNameExt.Img, true, model.ImgTypeMain, false) + dataRes, err2 := datares.TryRegisterDataResource(ctx, skuNameExt.Name, skuNameExt.Img, model.ImgTypeMain, false) if err = err2; err != nil { return nil, err } // skuNameExt.ImgHashCode = dataRes.HashCode skuNameExt.ImgEbai = dataRes.EbaiURL if skuNameExt.Img2 != "" { - datares.TryRegisterDataResource(ctx, skuNameExt.Name, skuNameExt.Img2, true, model.ImgTypeMain, true) + datares.TryRegisterDataResource(ctx, skuNameExt.Name, skuNameExt.Img2, model.ImgTypeMain, true) } if skuNameExt.DescImg != "" { - dataRes, err2 := datares.TryRegisterDataResource(ctx, skuNameExt.Name+"desc", skuNameExt.DescImg, true, model.ImgTypeDesc, false) + dataRes, err2 := datares.TryRegisterDataResource(ctx, skuNameExt.Name+"desc", skuNameExt.DescImg, model.ImgTypeDesc, false) if err = err2; err != nil { return nil, err } @@ -697,7 +697,7 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf // } // // valid["ImgWeimob"] = imgHintMap[model.VendorIDWSC] // valid["ImgEbai"] = imgHintMap[model.VendorIDEBAI] - dataRes, err2 := datares.TryRegisterDataResource(ctx, skuName.Name, valid["img"].(string), true, model.ImgTypeMain, false) + dataRes, err2 := datares.TryRegisterDataResource(ctx, skuName.Name, valid["img"].(string), model.ImgTypeMain, false) if err = err2; err != nil { return 0, err } @@ -705,13 +705,13 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf valid["ImgEbai"] = dataRes.EbaiURL } if valid["img2"] != nil { - datares.TryRegisterDataResource(ctx, skuName.Name, valid["img2"].(string), true, model.ImgTypeMain, true) + datares.TryRegisterDataResource(ctx, skuName.Name, valid["img2"].(string), model.ImgTypeMain, true) } if valid["descImg"] != nil { descImg := valid["descImg"].(string) if descImg != "" { - dataRes, err2 := datares.TryRegisterDataResource(ctx, skuName.Name+"_desc", descImg, true, model.ImgTypeDesc, false) + dataRes, err2 := datares.TryRegisterDataResource(ctx, skuName.Name+"_desc", descImg, model.ImgTypeDesc, false) if err = err2; err != nil { return 0, err } diff --git a/business/jxutils/datares/datares.go b/business/jxutils/datares/datares.go index d0d87d7be..e1c36bfd5 100644 --- a/business/jxutils/datares/datares.go +++ b/business/jxutils/datares/datares.go @@ -2,8 +2,8 @@ package datares import ( "fmt" + "net/http" "strings" - "time" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" @@ -17,12 +17,7 @@ import ( ) const ( - qiniuTokenExpires = 300 // 七牛TOKEN有效时间,5分钟 - dataResCacheTimeout = 24 * time.Hour -) - -var ( - dataResCache jxutils.SyncMapWithTimeout + qiniuTokenExpires = 300 // 七牛TOKEN有效时间,5分钟 ) type UploadResTokenInfo struct { @@ -50,7 +45,6 @@ func GetQiniuUploadToken(ctx *jxcontext.Context, suffix, hashCode string) (upTok Hit: imgURL != "", Img: imgURL, } - dataResCache.StoreWithTimeout(imgURL, hashCode, dataResCacheTimeout) return upTokenInfo, err } @@ -75,7 +69,9 @@ func getMimeTypeFromURL(resourceURL string) (mimeType string) { return mimeType } -func RegisterDataResource(ctx *jxcontext.Context, name, resourceURL, mimeType, hashCode string, resBinary []byte, imgType int, isAsync bool) (dataRes *model.DataResource, err error) { +// 此函数要求resBinary不能空,mimeType与hashCode必须是正确的 +func RegisterDataResource(ctx *jxcontext.Context, name, resourceURL, mimeType, hashCode string, resBinary []byte, imgType int, isAsyncUpload2Vendor bool) (dataRes *model.DataResource, err error) { + globals.SugarLogger.Debugf("RegisterDataResource, name:%s, resourceURL:%s, mimeType:%s, hashCode:%s, imgType:%d, isAsyncUpload2Vendor;%t", name, resourceURL, mimeType, hashCode, imgType, isAsyncUpload2Vendor) if model.ValidMimeTypes[mimeType] == nil { return nil, fmt.Errorf("MIME type:%s非法", mimeType) } @@ -106,17 +102,17 @@ func RegisterDataResource(ctx *jxcontext.Context, name, resourceURL, mimeType, h } if imgType > 0 { // 忽略上传错误 - UploadImage2Vendors(ctx, nil, dataRes, resBinary, isAsync) + UploadImage2Vendors(ctx, nil, dataRes, resBinary, isAsyncUpload2Vendor) } return dataRes, err } -func TryRegisterDataResource(ctx *jxcontext.Context, name, resourceURL string, isAllowDownLoad bool, imgType int, isAsync bool) (dataRes *model.DataResource, err error) { +func TryRegisterDataResource(ctx *jxcontext.Context, name, resourceURL string, imgType int, isAsyncUpload2Vendor bool) (dataRes *model.DataResource, err error) { + globals.SugarLogger.Debugf("TryRegisterDataResource, name:%s, resourceURL:%s, imgType:%d, isAsyncUpload2Vendor;%t", name, resourceURL, imgType, isAsyncUpload2Vendor) dataRes = &model.DataResource{ MainURL: resourceURL, } - db := dao.GetDB() - err = dao.GetEntity(db, dataRes, "MainURL") + err = dao.GetEntity(dao.GetDB(), dataRes, "MainURL") if err != nil { if !dao.IsNoRowsError(err) { return nil, err @@ -124,20 +120,11 @@ func TryRegisterDataResource(ctx *jxcontext.Context, name, resourceURL string, i } else { return dataRes, nil } - value, ok := dataResCache.Load(resourceURL) - var hashCode string - var resBinary []byte - if !ok { - if !isAllowDownLoad { - return nil, nil - } - if resBinary, hashCode, err = jxutils.DownloadFileByURL(resourceURL); err != nil { - return nil, err - } - } else { - hashCode = value.(string) + resBinary, hashCode, err := jxutils.DownloadFileByURL(resourceURL) + if err != nil { + return nil, err } - return RegisterDataResource(ctx, name, resourceURL, getMimeTypeFromURL(resourceURL), hashCode, resBinary, imgType, isAsync) + return RegisterDataResource(ctx, name, resourceURL, http.DetectContentType(resBinary), hashCode, resBinary, imgType, isAsyncUpload2Vendor) } func GetDataResource(ctx *jxcontext.Context, hashCode string) (resourceURL string, err error) { diff --git a/business/jxutils/datares/datares_test.go b/business/jxutils/datares/datares_test.go index 563c495c1..82080c758 100644 --- a/business/jxutils/datares/datares_test.go +++ b/business/jxutils/datares/datares_test.go @@ -6,6 +6,7 @@ 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/globals/api2" "git.rosy.net.cn/jx-callback/globals/testinit" @@ -36,7 +37,7 @@ func TestGetDataResource(t *testing.T) { } func TestTryRegisterDataResource(t *testing.T) { - dataRes, err := TryRegisterDataResource(jxcontext.AdminCtx, "test", "http://image.jxc4.com/image/8552261fb928be10f6406b13dc29570e.jpg", true, true, false) + dataRes, err := TryRegisterDataResource(jxcontext.AdminCtx, "test", "http://image.jxc4.com/image/37db6b94925e669e0a7b6844ba7ce160.jpg", model.ImgTypeMain, false) if err != nil { t.Fatal(err) } diff --git a/business/model/common.go b/business/model/common.go index 6fde833cc..661f24350 100644 --- a/business/model/common.go +++ b/business/model/common.go @@ -1,8 +1,9 @@ package model const ( - ImgTypeMain = 1 // 商品主图 - ImgTypeDesc = 2 // 商品描述详情 + ImgTypeLocal = 0 // 京西自己用的,不需要上传至平台 + ImgTypeMain = 1 // 商品主图 + ImgTypeDesc = 2 // 商品描述详情 ) var ( @@ -23,7 +24,7 @@ type DataResource struct { ResourceType string `orm:"size(48)" json:"resourceType"` // 资料的mime type Name string `orm:"size(48);index" json:"name"` - UseType int8 `json:"isVendor"` // 图资源使用方式(大于0才可能需要上传至平台) + UseType int8 `json:"useType"` // 图资源使用方式(大于0才可能需要上传至平台) MainURL string `orm:"size(512);column(main_url);unique" json:"mainURL"` QiniuURL string `orm:"size(512);column(qiniu_url);index" json:"qiniuURL"` diff --git a/business/partner/purchase/mtwm/mtwm.go b/business/partner/purchase/mtwm/mtwm.go index dfb172560..d291b9629 100644 --- a/business/partner/purchase/mtwm/mtwm.go +++ b/business/partner/purchase/mtwm/mtwm.go @@ -173,7 +173,7 @@ func (p *PurchaseHandler) UploadImg(ctx *jxcontext.Context, imgURL string, imgDa return "", fmt.Errorf("找不到一个美团门店来上传图片") } if globals.EnableMtwmStoreWrite { - if imgType > 0 { + if imgType > model.ImgTypeLocal { if imgData != nil { imgHint, err = api.MtwmAPI.ImageUpload(poiCode4UploadImg, imgName, imgData) } else { diff --git a/business/userstore/food_recipe.go b/business/userstore/food_recipe.go index a72e0e5c0..f3a1a8f4a 100644 --- a/business/userstore/food_recipe.go +++ b/business/userstore/food_recipe.go @@ -190,7 +190,7 @@ func tryRegisterDataRes4Recipe(ctx *jxcontext.Context, name, mainImg string, ste } errList := errlist.New() for _, v := range imgList { - _, err := datares.TryRegisterDataResource(ctx, name, v, true, 0, true) + _, err := datares.TryRegisterDataResource(ctx, name, v, model.ImgTypeLocal, true) errList.AddErr(err) } return errList.GetErrListAsOne() diff --git a/controllers/cms.go b/controllers/cms.go index 98e25fda3..3c42dbfa7 100644 --- a/controllers/cms.go +++ b/controllers/cms.go @@ -118,7 +118,7 @@ func (c *CmsController) GetQiniuUploadToken() { // @router /RegisterDataResource [post] func (c *CmsController) RegisterDataResource() { c.callRegisterDataResource(func(params *tCmsRegisterDataResourceParams) (retVal interface{}, errCode string, err error) { - retVal, err = datares.RegisterDataResource(params.Ctx, params.Name, params.ResourceURL, params.MimeType, params.HashCode, nil, 0, true) + // retVal, err = datares.RegisterDataResource(params.Ctx, params.Name, params.ResourceURL, params.MimeType, params.HashCode, nil, model.ImgTypeLocal, true) return retVal, "", err }) }