不需要客户端再主动调用RegisterDataResource了,RegisterDataResource改为空操作

This commit is contained in:
gazebo
2019-09-27 16:56:51 +08:00
parent f4c13e2159
commit 4af8ebd8ef
7 changed files with 28 additions and 39 deletions

View File

@@ -579,18 +579,18 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s
// return nil, err // return nil, err
// } // }
// skuNameExt.ImgEbai = imgHintMap[model.VendorIDEBAI] // 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 { if err = err2; err != nil {
return nil, err return nil, err
} }
// skuNameExt.ImgHashCode = dataRes.HashCode // skuNameExt.ImgHashCode = dataRes.HashCode
skuNameExt.ImgEbai = dataRes.EbaiURL skuNameExt.ImgEbai = dataRes.EbaiURL
if skuNameExt.Img2 != "" { 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 != "" { 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 { if err = err2; err != nil {
return nil, err return nil, err
} }
@@ -697,7 +697,7 @@ 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]
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 { if err = err2; err != nil {
return 0, err return 0, err
} }
@@ -705,13 +705,13 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
valid["ImgEbai"] = dataRes.EbaiURL valid["ImgEbai"] = dataRes.EbaiURL
} }
if valid["img2"] != nil { 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 { if valid["descImg"] != nil {
descImg := valid["descImg"].(string) descImg := valid["descImg"].(string)
if descImg != "" { 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 { if err = err2; err != nil {
return 0, err return 0, err
} }

View File

@@ -2,8 +2,8 @@ package datares
import ( import (
"fmt" "fmt"
"net/http"
"strings" "strings"
"time"
"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"
@@ -18,11 +18,6 @@ import (
const ( const (
qiniuTokenExpires = 300 // 七牛TOKEN有效时间5分钟 qiniuTokenExpires = 300 // 七牛TOKEN有效时间5分钟
dataResCacheTimeout = 24 * time.Hour
)
var (
dataResCache jxutils.SyncMapWithTimeout
) )
type UploadResTokenInfo struct { type UploadResTokenInfo struct {
@@ -50,7 +45,6 @@ func GetQiniuUploadToken(ctx *jxcontext.Context, suffix, hashCode string) (upTok
Hit: imgURL != "", Hit: imgURL != "",
Img: imgURL, Img: imgURL,
} }
dataResCache.StoreWithTimeout(imgURL, hashCode, dataResCacheTimeout)
return upTokenInfo, err return upTokenInfo, err
} }
@@ -75,7 +69,9 @@ func getMimeTypeFromURL(resourceURL string) (mimeType string) {
return mimeType 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 { if model.ValidMimeTypes[mimeType] == nil {
return nil, fmt.Errorf("MIME type:%s非法", mimeType) return nil, fmt.Errorf("MIME type:%s非法", mimeType)
} }
@@ -106,17 +102,17 @@ func RegisterDataResource(ctx *jxcontext.Context, name, resourceURL, mimeType, h
} }
if imgType > 0 { if imgType > 0 {
// 忽略上传错误 // 忽略上传错误
UploadImage2Vendors(ctx, nil, dataRes, resBinary, isAsync) UploadImage2Vendors(ctx, nil, dataRes, resBinary, isAsyncUpload2Vendor)
} }
return dataRes, err 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{ dataRes = &model.DataResource{
MainURL: resourceURL, MainURL: resourceURL,
} }
db := dao.GetDB() err = dao.GetEntity(dao.GetDB(), dataRes, "MainURL")
err = dao.GetEntity(db, dataRes, "MainURL")
if err != nil { if err != nil {
if !dao.IsNoRowsError(err) { if !dao.IsNoRowsError(err) {
return nil, err return nil, err
@@ -124,20 +120,11 @@ func TryRegisterDataResource(ctx *jxcontext.Context, name, resourceURL string, i
} else { } else {
return dataRes, nil return dataRes, nil
} }
value, ok := dataResCache.Load(resourceURL) resBinary, hashCode, err := jxutils.DownloadFileByURL(resourceURL)
var hashCode string if err != nil {
var resBinary []byte
if !ok {
if !isAllowDownLoad {
return nil, nil
}
if resBinary, hashCode, err = jxutils.DownloadFileByURL(resourceURL); err != nil {
return nil, err return nil, err
} }
} else { return RegisterDataResource(ctx, name, resourceURL, http.DetectContentType(resBinary), hashCode, resBinary, imgType, isAsyncUpload2Vendor)
hashCode = value.(string)
}
return RegisterDataResource(ctx, name, resourceURL, getMimeTypeFromURL(resourceURL), hashCode, resBinary, imgType, isAsync)
} }
func GetDataResource(ctx *jxcontext.Context, hashCode string) (resourceURL string, err error) { func GetDataResource(ctx *jxcontext.Context, hashCode string) (resourceURL string, err error) {

View File

@@ -6,6 +6,7 @@ import (
"git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "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/api2"
"git.rosy.net.cn/jx-callback/globals/testinit" "git.rosy.net.cn/jx-callback/globals/testinit"
@@ -36,7 +37,7 @@ func TestGetDataResource(t *testing.T) {
} }
func TestTryRegisterDataResource(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 { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -1,6 +1,7 @@
package model package model
const ( const (
ImgTypeLocal = 0 // 京西自己用的,不需要上传至平台
ImgTypeMain = 1 // 商品主图 ImgTypeMain = 1 // 商品主图
ImgTypeDesc = 2 // 商品描述详情 ImgTypeDesc = 2 // 商品描述详情
) )
@@ -23,7 +24,7 @@ type DataResource struct {
ResourceType string `orm:"size(48)" json:"resourceType"` // 资料的mime type ResourceType string `orm:"size(48)" json:"resourceType"` // 资料的mime type
Name string `orm:"size(48);index" json:"name"` 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"` MainURL string `orm:"size(512);column(main_url);unique" json:"mainURL"`
QiniuURL string `orm:"size(512);column(qiniu_url);index" json:"qiniuURL"` QiniuURL string `orm:"size(512);column(qiniu_url);index" json:"qiniuURL"`

View File

@@ -173,7 +173,7 @@ func (p *PurchaseHandler) UploadImg(ctx *jxcontext.Context, imgURL string, imgDa
return "", fmt.Errorf("找不到一个美团门店来上传图片") return "", fmt.Errorf("找不到一个美团门店来上传图片")
} }
if globals.EnableMtwmStoreWrite { if globals.EnableMtwmStoreWrite {
if imgType > 0 { if imgType > model.ImgTypeLocal {
if imgData != nil { if imgData != nil {
imgHint, err = api.MtwmAPI.ImageUpload(poiCode4UploadImg, imgName, imgData) imgHint, err = api.MtwmAPI.ImageUpload(poiCode4UploadImg, imgName, imgData)
} else { } else {

View File

@@ -190,7 +190,7 @@ func tryRegisterDataRes4Recipe(ctx *jxcontext.Context, name, mainImg string, ste
} }
errList := errlist.New() errList := errlist.New()
for _, v := range imgList { 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) errList.AddErr(err)
} }
return errList.GetErrListAsOne() return errList.GetErrListAsOne()

View File

@@ -118,7 +118,7 @@ func (c *CmsController) GetQiniuUploadToken() {
// @router /RegisterDataResource [post] // @router /RegisterDataResource [post]
func (c *CmsController) RegisterDataResource() { func (c *CmsController) RegisterDataResource() {
c.callRegisterDataResource(func(params *tCmsRegisterDataResourceParams) (retVal interface{}, errCode string, err error) { 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 return retVal, "", err
}) })
} }