- 将skuName中的图片外移至dataResource
This commit is contained in:
@@ -18,19 +18,14 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
|
||||
"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/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
"github.com/qiniu/api.v7/storage"
|
||||
)
|
||||
|
||||
const (
|
||||
qiniuTokenExpires = 300 // 七牛TOKEN有效时间,5分钟
|
||||
|
||||
SendMsgTypeOpenStoreRequest = "openStoreRequest"
|
||||
)
|
||||
|
||||
@@ -51,14 +46,6 @@ var (
|
||||
}
|
||||
)
|
||||
|
||||
type UploadResTokenInfo struct {
|
||||
Token string `json:"token,omitempty"`
|
||||
Expires uint64 `json:"expires,omitempty"`
|
||||
FileName string `json:"fileName,omitempty"`
|
||||
Hit bool `json:"hit,omitempty"`
|
||||
Img string `json:"img,omitempty"`
|
||||
}
|
||||
|
||||
func InitServiceInfo(version string, buildTime time.Time, gitCommit string) {
|
||||
buildTimeStr := ""
|
||||
if !utils.IsTimeZero(buildTime) {
|
||||
@@ -108,71 +95,6 @@ func GetServiceInfo(ctx *jxcontext.Context) interface{} {
|
||||
return serviceInfo
|
||||
}
|
||||
|
||||
func GetQiniuUploadToken(ctx *jxcontext.Context, suffix, hashCode string) (upTokenInfo *UploadResTokenInfo, err error) {
|
||||
imgURL := ""
|
||||
if hashCode != "" {
|
||||
imgURL, _ = GetDataResource(ctx, hashCode)
|
||||
}
|
||||
|
||||
putPolicy := storage.PutPolicy{
|
||||
Scope: globals.QiniuBucket,
|
||||
Expires: qiniuTokenExpires,
|
||||
}
|
||||
upTokenInfo = &UploadResTokenInfo{
|
||||
Token: putPolicy.UploadToken(api.QiniuAPI),
|
||||
Expires: putPolicy.Expires,
|
||||
FileName: jxutils.GenPicFileName(suffix),
|
||||
Hit: imgURL != "",
|
||||
Img: imgURL,
|
||||
}
|
||||
return upTokenInfo, err
|
||||
}
|
||||
|
||||
func RegisterDataResource(ctx *jxcontext.Context, name, resourceURL, mimeType, hashCode string) (dataRes *model.DataResource, err error) {
|
||||
if model.ValideMimeTypes[mimeType] == 0 {
|
||||
return nil, fmt.Errorf("MIME type:%s非法", mimeType)
|
||||
}
|
||||
dataRes = &model.DataResource{
|
||||
Name: name,
|
||||
HashCode: hashCode,
|
||||
ResoureType: mimeType,
|
||||
MainURL: resourceURL,
|
||||
}
|
||||
vendorID := jxutils.GuessDataResourceVendor(resourceURL)
|
||||
switch vendorID {
|
||||
case model.VendorIDQiNiuCloud:
|
||||
dataRes.QiniuURL = resourceURL
|
||||
case model.VendorIDEBAI:
|
||||
dataRes.EbaiURL = resourceURL
|
||||
case model.VendorIDMTWM:
|
||||
dataRes.MtwmURL = resourceURL
|
||||
}
|
||||
|
||||
dao.WrapAddIDCULEntity(dataRes, ctx.GetUserName())
|
||||
if err = dao.CreateEntity(dao.GetDB(), dataRes); err != nil {
|
||||
dataRes = nil
|
||||
}
|
||||
return dataRes, err
|
||||
}
|
||||
|
||||
func GetDataResource(ctx *jxcontext.Context, hashCode string) (resourceURL string, err error) {
|
||||
db := dao.GetDB()
|
||||
dataRes, err := dao.GetDataResource(db, hashCode, "")
|
||||
if err != nil {
|
||||
if dao.IsNoRowsError(err) {
|
||||
skuName, err2 := dao.GetSkuNameByHashCode(db, hashCode)
|
||||
if err = err2; err == nil {
|
||||
resourceURL = skuName.Img
|
||||
} else if dao.IsNoRowsError(err) {
|
||||
err = nil
|
||||
}
|
||||
}
|
||||
} else {
|
||||
resourceURL = dataRes.MainURL
|
||||
}
|
||||
return resourceURL, err
|
||||
}
|
||||
|
||||
func GetPlaces(ctx *jxcontext.Context, keyword string, includeDisabled bool, params map[string]interface{}) ([]*model.Place, error) {
|
||||
sql := `
|
||||
SELECT *
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
package cms
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||
"git.rosy.net.cn/jx-callback/globals/api2"
|
||||
"git.rosy.net.cn/jx-callback/globals/testinit"
|
||||
|
||||
@@ -20,19 +15,3 @@ func init() {
|
||||
testinit.Init()
|
||||
api2.Init()
|
||||
}
|
||||
|
||||
func TestGetQiniuUploadToken(t *testing.T) {
|
||||
token, err := GetQiniuUploadToken(jxcontext.AdminCtx, "", "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
fmt.Print(token)
|
||||
}
|
||||
|
||||
func TestGetDataResource(t *testing.T) {
|
||||
dataRes, err := GetDataResource(jxcontext.AdminCtx, "1D3E4A8259F359FB4CF47D541843950D")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log(utils.Format4Output(dataRes, false))
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user