整理DataResource相关的内容
This commit is contained in:
@@ -615,39 +615,18 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s
|
|||||||
skuNameExt.SpecUnit = skuNameExt.Skus[0].SpecUnit
|
skuNameExt.SpecUnit = skuNameExt.Skus[0].SpecUnit
|
||||||
}
|
}
|
||||||
|
|
||||||
if globals.EnableStoreWrite {
|
for _, imgName := range []string{skuNameExt.Img, skuNameExt.Img2} {
|
||||||
// imgContent, imgMD5, err := jxutils.DownloadFileByURL(skuNameExt.Img)
|
if imgName != "" {
|
||||||
// if err != nil {
|
_, err2 := datares.TryRegisterDataResource(ctx, skuNameExt.Name, imgName, model.ImgTypeMain, false)
|
||||||
// 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, 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, model.ImgTypeMain, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
if skuNameExt.DescImg != "" {
|
|
||||||
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
|
||||||
}
|
}
|
||||||
skuNameExt.DescImgEbai = dataRes.EbaiURL
|
|
||||||
}
|
}
|
||||||
if err != nil {
|
}
|
||||||
|
|
||||||
|
if skuNameExt.DescImg != "" {
|
||||||
|
_, err2 := datares.TryRegisterDataResource(ctx, skuNameExt.Name+"desc", skuNameExt.DescImg, model.ImgTypeDesc, false)
|
||||||
|
if err = err2; err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -724,10 +703,6 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|||||||
}
|
}
|
||||||
|
|
||||||
delete(payload, "isSpu")
|
delete(payload, "isSpu")
|
||||||
delete(payload, "imgHashCode")
|
|
||||||
delete(payload, "imgWeimob")
|
|
||||||
delete(payload, "imgEbai")
|
|
||||||
delete(payload, "descImgEbai")
|
|
||||||
delete(payload, "seq")
|
delete(payload, "seq")
|
||||||
|
|
||||||
valid := dao.StrictMakeMapByStructObject(payload, skuName, userName)
|
valid := dao.StrictMakeMapByStructObject(payload, skuName, userName)
|
||||||
@@ -747,31 +722,27 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|||||||
}
|
}
|
||||||
err = nil
|
err = nil
|
||||||
}
|
}
|
||||||
if globals.EnableStoreWrite {
|
for _, imgName := range []string{"img", "img2"} {
|
||||||
if valid["img"] != nil {
|
if valid[imgName] != nil {
|
||||||
dataRes, err2 := datares.TryRegisterDataResource(ctx, skuName.Name, valid["img"].(string), model.ImgTypeMain, false)
|
if imgStr := utils.Interface2String(valid[imgName]); imgStr != "" {
|
||||||
if err = err2; err != nil {
|
_, err2 := datares.TryRegisterDataResource(ctx, skuName.Name, valid[imgName].(string), model.ImgTypeMain, true)
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
valid["ImgEbai"] = dataRes.EbaiURL
|
|
||||||
}
|
|
||||||
if valid["img2"] != nil {
|
|
||||||
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, model.ImgTypeDesc, false)
|
|
||||||
if err = err2; err != nil {
|
if err = err2; err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
valid["descImgEbai"] = dataRes.EbaiURL
|
|
||||||
} else {
|
|
||||||
valid["descImgEbai"] = ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if valid["descImg"] != nil {
|
||||||
|
descImg := valid["descImg"].(string)
|
||||||
|
if descImg != "" {
|
||||||
|
_, err2 := datares.TryRegisterDataResource(ctx, skuName.Name+"_desc", descImg, model.ImgTypeDesc, false)
|
||||||
|
if err = err2; err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dao.Begin(db)
|
dao.Begin(db)
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
|
|||||||
@@ -5,8 +5,6 @@ import (
|
|||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/autonavi"
|
"git.rosy.net.cn/baseapi/platformapi/autonavi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"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/jxcontext"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
"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"
|
||||||
@@ -190,88 +188,88 @@ func InitVendorCategory(ctx *jxcontext.Context, vendorID int, isAsync bool) (hin
|
|||||||
}
|
}
|
||||||
|
|
||||||
func UploadImg4Vendors(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func UploadImg4Vendors(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
db := dao.GetDB()
|
// db := dao.GetDB()
|
||||||
rootTask := tasksch.NewSeqTask("合并SkuName图片至DataResource", ctx,
|
// rootTask := tasksch.NewSeqTask("合并SkuName图片至DataResource", ctx,
|
||||||
func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
// func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
switch step {
|
// switch step {
|
||||||
case 0: // 计算SkuName中缺失的hashCode(注意是DescImg不是Img)
|
// case 0: // 计算SkuName中缺失的hashCode(注意是DescImg不是Img)
|
||||||
var skuNameList []*model.SkuName
|
// var skuNameList []*model.SkuName
|
||||||
if err = dao.GetRows(db, &skuNameList, `
|
// if err = dao.GetRows(db, &skuNameList, `
|
||||||
SELECT t1.*
|
// SELECT t1.*
|
||||||
FROM sku_name t1
|
// FROM sku_name t1
|
||||||
WHERE t1.desc_img <> '' AND t1.img_hash_code = ''
|
// WHERE t1.desc_img <> '' AND t1.img_hash_code = ''
|
||||||
`); err == nil && len(skuNameList) > 0 {
|
// `); err == nil && len(skuNameList) > 0 {
|
||||||
calcTask := tasksch.NewParallelTask("UploadImg4Vendors calc hashCode",
|
// calcTask := tasksch.NewParallelTask("UploadImg4Vendors calc hashCode",
|
||||||
tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(5), ctx,
|
// tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(5), ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
skuName := batchItemList[0].(*model.SkuName)
|
// skuName := batchItemList[0].(*model.SkuName)
|
||||||
_, skuName.ImgHashCode, err = jxutils.DownloadFileByURL(skuName.DescImg)
|
// _, skuName.ImgHashCode, err = jxutils.DownloadFileByURL(skuName.DescImg)
|
||||||
if err == nil {
|
// if err == nil {
|
||||||
dao.UpdateEntity(db, skuName, "ImgHashCode")
|
// dao.UpdateEntity(db, skuName, "ImgHashCode")
|
||||||
}
|
// }
|
||||||
return retVal, err
|
// return retVal, err
|
||||||
}, skuNameList)
|
// }, skuNameList)
|
||||||
tasksch.HandleTask(calcTask, task, false).Run()
|
// tasksch.HandleTask(calcTask, task, false).Run()
|
||||||
_, err = calcTask.GetResult(0)
|
// _, err = calcTask.GetResult(0)
|
||||||
}
|
// }
|
||||||
case 1: // 从SkuName添加缺失的图片至DataResource
|
// case 1: // 从SkuName添加缺失的图片至DataResource
|
||||||
_, err = dao.ExecuteSQL(db, `
|
// _, err = dao.ExecuteSQL(db, `
|
||||||
INSERT INTO data_resource(created_at, updated_at, last_operator, hash_code,
|
// INSERT INTO data_resource(created_at, updated_at, last_operator, hash_code,
|
||||||
resource_type, name, main_url, ebai_url, qiniu_url, use_type)
|
// resource_type, name, main_url, ebai_url, qiniu_url, use_type)
|
||||||
SELECT t1.created_at, t1.created_at, t1.last_operator, t1.img_hash_code,
|
// SELECT t1.created_at, t1.created_at, t1.last_operator, t1.img_hash_code,
|
||||||
CASE
|
// CASE
|
||||||
WHEN INSTR(t1.desc_img, ".jpg") > 0 OR INSTR(t1.desc_img, ".jpeg") > 0 THEN
|
// WHEN INSTR(t1.desc_img, ".jpg") > 0 OR INSTR(t1.desc_img, ".jpeg") > 0 THEN
|
||||||
'image/jpeg'
|
// 'image/jpeg'
|
||||||
WHEN INSTR(t1.desc_img, ".png") > 0 OR INSTR(t1.desc_img, ".peg") > 0 THEN
|
// WHEN INSTR(t1.desc_img, ".png") > 0 OR INSTR(t1.desc_img, ".peg") > 0 THEN
|
||||||
'image/png'
|
// 'image/png'
|
||||||
WHEN INSTR(t1.desc_img, ".gif") THEN
|
// WHEN INSTR(t1.desc_img, ".gif") THEN
|
||||||
'image/gif'
|
// 'image/gif'
|
||||||
ELSE
|
// ELSE
|
||||||
''
|
// ''
|
||||||
END resource_type,
|
// END resource_type,
|
||||||
CONCAT(t1.name, '_desc'), desc_img main_url, t1.desc_img_ebai ebai_url,
|
// CONCAT(t1.name, '_desc'), desc_img main_url, t1.desc_img_ebai ebai_url,
|
||||||
IF(INSTR(t1.desc_img, "image.jxc4.com") > 0, t1.desc_img, '') qiniu_url, 2
|
// IF(INSTR(t1.desc_img, "image.jxc4.com") > 0, t1.desc_img, '') qiniu_url, 2
|
||||||
FROM sku_name t1
|
// FROM sku_name t1
|
||||||
JOIN (
|
// JOIN (
|
||||||
SELECT img_hash_code, MAX(id) id, COUNT(*) ct
|
// SELECT img_hash_code, MAX(id) id, COUNT(*) ct
|
||||||
FROM sku_name
|
// FROM sku_name
|
||||||
WHERE img_hash_code <> '' AND desc_img <> ''
|
// WHERE img_hash_code <> '' AND desc_img <> ''
|
||||||
GROUP BY 1
|
// GROUP BY 1
|
||||||
) t3 ON t3.id = t1.id
|
// ) t3 ON t3.id = t1.id
|
||||||
LEFT JOIN data_resource t2 ON (t2.main_url <> '' AND t2.main_url = t1.desc_img)
|
// LEFT JOIN data_resource t2 ON (t2.main_url <> '' AND t2.main_url = t1.desc_img)
|
||||||
WHERE t1.desc_img <> '' AND t1.img_hash_code <> '' AND t2.id IS NULL;
|
// WHERE t1.desc_img <> '' AND t1.img_hash_code <> '' AND t2.id IS NULL;
|
||||||
`)
|
// `)
|
||||||
case 2: // 统一SkuName中同hashCode,不同图片地址至同一地址
|
// case 2: // 统一SkuName中同hashCode,不同图片地址至同一地址
|
||||||
_, err = dao.ExecuteSQL(db, `
|
// _, err = dao.ExecuteSQL(db, `
|
||||||
UPDATE sku_name t1
|
// UPDATE sku_name t1
|
||||||
JOIN data_resource t2 ON t2.hash_code = t1.img_hash_code AND t2.main_url <> ''
|
// JOIN data_resource t2 ON t2.hash_code = t1.img_hash_code AND t2.main_url <> ''
|
||||||
SET t1.desc_img = t2.main_url
|
// SET t1.desc_img = t2.main_url
|
||||||
WHERE t1.img_hash_code <> '' AND t1.desc_img <> t2.main_url;
|
// WHERE t1.img_hash_code <> '' AND t1.desc_img <> t2.main_url;
|
||||||
`)
|
// `)
|
||||||
case 3: // 上传DataResource中缺失的平台图片
|
// case 3: // 上传DataResource中缺失的平台图片
|
||||||
dataResList, err2 := dao.GetNeedUploadDataResource(db)
|
// dataResList, err2 := dao.GetNeedUploadDataResource(db)
|
||||||
if err = err2; err == nil && len(dataResList) > 0 {
|
// if err = err2; err == nil && len(dataResList) > 0 {
|
||||||
uploadTask := tasksch.NewParallelTask("批量上传图片至平台",
|
// uploadTask := tasksch.NewParallelTask("批量上传图片至平台",
|
||||||
tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(2), ctx,
|
// tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(2), ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
dataRes := batchItemList[0].(*model.DataResource)
|
// dataRes := batchItemList[0].(*model.DataResource)
|
||||||
_, err = datares.UploadImage2Vendors(ctx, task, dataRes, nil, false)
|
// _, err = datares.UploadImage2Vendors(ctx, task, dataRes, nil, false)
|
||||||
return nil, err
|
// return nil, err
|
||||||
}, dataResList)
|
// }, dataResList)
|
||||||
tasksch.HandleTask(uploadTask, task, true).Run()
|
// tasksch.HandleTask(uploadTask, task, true).Run()
|
||||||
_, err = uploadTask.GetResult(0)
|
// _, err = uploadTask.GetResult(0)
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return result, err
|
// return result, err
|
||||||
}, 4)
|
// }, 4)
|
||||||
tasksch.HandleTask(rootTask, nil, true).Run()
|
// tasksch.HandleTask(rootTask, nil, true).Run()
|
||||||
if !isAsync {
|
// if !isAsync {
|
||||||
if _, err = rootTask.GetResult(0); err == nil {
|
// if _, err = rootTask.GetResult(0); err == nil {
|
||||||
hint = "1"
|
// hint = "1"
|
||||||
}
|
// }
|
||||||
} else {
|
// } else {
|
||||||
hint = rootTask.ID
|
// hint = rootTask.ID
|
||||||
}
|
// }
|
||||||
return hint, err
|
return hint, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,10 +4,6 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"image"
|
|
||||||
"image/jpeg"
|
|
||||||
"image/png"
|
|
||||||
"net/http"
|
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
@@ -1046,92 +1042,92 @@ func CreateConsumerFromOrders(ctx *jxcontext.Context, vendorIDs []int, fromDate,
|
|||||||
}
|
}
|
||||||
|
|
||||||
func CheckImages(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func CheckImages(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
db := dao.GetDB()
|
// db := dao.GetDB()
|
||||||
rootTask := tasksch.NewSeqTask("检查图片的有效性", ctx,
|
// rootTask := tasksch.NewSeqTask("检查图片的有效性", ctx,
|
||||||
func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
// func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
switch step {
|
// switch step {
|
||||||
case 0: // 检查图片的格式与大小
|
// case 0: // 检查图片的格式与大小
|
||||||
var imgList []*model.DataResource
|
// var imgList []*model.DataResource
|
||||||
if err = dao.GetRows(db, &imgList, `
|
// if err = dao.GetRows(db, &imgList, `
|
||||||
SELECT t1.*
|
// SELECT t1.*
|
||||||
FROM data_resource t1
|
// FROM data_resource t1
|
||||||
WHERE t1.use_type = 1
|
// WHERE t1.use_type = 1
|
||||||
`); err == nil && len(imgList) > 0 {
|
// `); err == nil && len(imgList) > 0 {
|
||||||
calcTask := tasksch.NewParallelTask("检查京西图片的有效性",
|
// calcTask := tasksch.NewParallelTask("检查京西图片的有效性",
|
||||||
tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(5), ctx,
|
// tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(5), ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
dataRes := batchItemList[0].(*model.DataResource)
|
// dataRes := batchItemList[0].(*model.DataResource)
|
||||||
binaryData, hashCode, err2 := jxutils.DownloadFileByURL(dataRes.MainURL)
|
// binaryData, hashCode, err2 := jxutils.DownloadFileByURL(dataRes.MainURL)
|
||||||
if err = err2; err == nil {
|
// if err = err2; err == nil {
|
||||||
errMsg := ""
|
// errMsg := ""
|
||||||
if hashCode != dataRes.HashCode {
|
// if hashCode != dataRes.HashCode {
|
||||||
errMsg = fmt.Sprintf("hashcode:%s", hashCode)
|
// errMsg = fmt.Sprintf("hashcode:%s", hashCode)
|
||||||
dataRes.HashCode = hashCode
|
// dataRes.HashCode = hashCode
|
||||||
}
|
// }
|
||||||
resType := http.DetectContentType(binaryData)
|
// resType := http.DetectContentType(binaryData)
|
||||||
if resType != dataRes.ResourceType {
|
// if resType != dataRes.ResourceType {
|
||||||
errMsg += "," + resType
|
// errMsg += "," + resType
|
||||||
dataRes.ResourceType = resType
|
// dataRes.ResourceType = resType
|
||||||
}
|
// }
|
||||||
var img image.Image
|
// var img image.Image
|
||||||
if dataRes.ResourceType == "image/png" {
|
// if dataRes.ResourceType == "image/png" {
|
||||||
img, err = png.Decode(bytes.NewReader(binaryData))
|
// img, err = png.Decode(bytes.NewReader(binaryData))
|
||||||
} else if dataRes.ResourceType == "image/jpeg" {
|
// } else if dataRes.ResourceType == "image/jpeg" {
|
||||||
img, err = jpeg.Decode(bytes.NewReader(binaryData))
|
// img, err = jpeg.Decode(bytes.NewReader(binaryData))
|
||||||
}
|
// }
|
||||||
if err == nil {
|
// if err == nil {
|
||||||
if img != nil {
|
// if img != nil {
|
||||||
if img.Bounds().Dx() != 800 || img.Bounds().Dy() != 800 {
|
// if img.Bounds().Dx() != 800 || img.Bounds().Dy() != 800 {
|
||||||
errMsg += fmt.Sprintf(",size:%dx%d", img.Bounds().Dx(), img.Bounds().Dy())
|
// errMsg += fmt.Sprintf(",size:%dx%d", img.Bounds().Dx(), img.Bounds().Dy())
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
} else {
|
// } else {
|
||||||
errMsg += "," + err.Error()
|
// errMsg += "," + err.Error()
|
||||||
}
|
// }
|
||||||
if errMsg != "" {
|
// if errMsg != "" {
|
||||||
dataRes.Remark = errMsg
|
// dataRes.Remark = errMsg
|
||||||
dao.UpdateEntity(dao.GetDB(), dataRes, "Remark", "ResourceType", "HashCode")
|
// dao.UpdateEntity(dao.GetDB(), dataRes, "Remark", "ResourceType", "HashCode")
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return retVal, err
|
// return retVal, err
|
||||||
}, imgList)
|
// }, imgList)
|
||||||
tasksch.HandleTask(calcTask, task, false).Run()
|
// tasksch.HandleTask(calcTask, task, false).Run()
|
||||||
_, err = calcTask.GetResult(0)
|
// _, err = calcTask.GetResult(0)
|
||||||
}
|
// }
|
||||||
case 1: // 检查京东商品图片
|
// case 1: // 检查京东商品图片
|
||||||
skuNameInfo, err2 := cms.GetSkuNames(ctx, "", false, map[string]interface{}{}, 0, -1)
|
// skuNameInfo, err2 := cms.GetSkuNames(ctx, "", false, map[string]interface{}{}, 0, -1)
|
||||||
if err = err2; err == nil && len(skuNameInfo.SkuNames) > 0 {
|
// if err = err2; err == nil && len(skuNameInfo.SkuNames) > 0 {
|
||||||
calcTask := tasksch.NewParallelTask("检查京东图片的有效性",
|
// calcTask := tasksch.NewParallelTask("检查京东图片的有效性",
|
||||||
tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(5), ctx,
|
// tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(5), ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
skuName := batchItemList[0].(*model.SkuNameExt)
|
// skuName := batchItemList[0].(*model.SkuNameExt)
|
||||||
for _, sku := range skuName.Skus {
|
// for _, sku := range skuName.Skus {
|
||||||
if sku.JdID != 0 {
|
// if sku.JdID != 0 {
|
||||||
skuPageInfo, err2 := api.JdAPI.GetSkuPageInfo(sku.JdID)
|
// skuPageInfo, err2 := api.JdAPI.GetSkuPageInfo(sku.JdID)
|
||||||
if err = err2; err == nil && skuPageInfo.FixedStatus && len(skuPageInfo.Image) == 0 {
|
// if err = err2; err == nil && skuPageInfo.FixedStatus && len(skuPageInfo.Image) == 0 {
|
||||||
err = fmt.Errorf("skuName:%d, sku:%d, jdid:%d, 没有图片", skuName.ID, sku.ID, sku.JdID)
|
// err = fmt.Errorf("skuName:%d, sku:%d, jdid:%d, 没有图片", skuName.ID, sku.ID, sku.JdID)
|
||||||
skuName.ImgHashCode = "np"
|
// skuName.ImgHashCode = "np"
|
||||||
dao.UpdateEntity(dao.GetDB(), &skuName.SkuName, "ImgHashCode")
|
// dao.UpdateEntity(dao.GetDB(), &skuName.SkuName, "ImgHashCode")
|
||||||
}
|
// }
|
||||||
break
|
// break
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return retVal, err
|
// return retVal, err
|
||||||
}, skuNameInfo.SkuNames)
|
// }, skuNameInfo.SkuNames)
|
||||||
tasksch.HandleTask(calcTask, task, false).Run()
|
// tasksch.HandleTask(calcTask, task, false).Run()
|
||||||
_, err = calcTask.GetResult(0)
|
// _, err = calcTask.GetResult(0)
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return result, err
|
// return result, err
|
||||||
}, 2)
|
// }, 2)
|
||||||
tasksch.HandleTask(rootTask, nil, true).Run()
|
// tasksch.HandleTask(rootTask, nil, true).Run()
|
||||||
if !isAsync {
|
// if !isAsync {
|
||||||
if _, err = rootTask.GetResult(0); err == nil {
|
// if _, err = rootTask.GetResult(0); err == nil {
|
||||||
hint = "1"
|
// hint = "1"
|
||||||
}
|
// }
|
||||||
} else {
|
// } else {
|
||||||
hint = rootTask.ID
|
// hint = rootTask.ID
|
||||||
}
|
// }
|
||||||
return hint, err
|
return hint, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -108,8 +108,10 @@ func RegisterDataResource(ctx *jxcontext.Context, name, resourceURL, mimeType, h
|
|||||||
return dataRes, err
|
return dataRes, err
|
||||||
}
|
}
|
||||||
if imgType > 0 {
|
if imgType > 0 {
|
||||||
// 忽略上传错误
|
if globals.EnableStoreWrite {
|
||||||
UploadImage2Vendors(ctx, nil, dataRes, resBinary, isAsyncUpload2Vendor)
|
// 忽略上传错误
|
||||||
|
UploadImage2Vendors(ctx, nil, dataRes, resBinary, isAsyncUpload2Vendor)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return dataRes, err
|
return dataRes, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,16 +12,10 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// imgFieldMap = map[int]string{
|
|
||||||
// model.VendorIDEBAI: "img_ebai",
|
|
||||||
// }
|
|
||||||
dataResFieldMap = map[int]string{
|
dataResFieldMap = map[int]string{
|
||||||
model.VendorIDMTWM: "mtwm_url",
|
model.VendorIDMTWM: "mtwm_url",
|
||||||
model.VendorIDEBAI: "ebai_url",
|
model.VendorIDEBAI: "ebai_url",
|
||||||
}
|
}
|
||||||
// descImgFieldMap = map[int]string{
|
|
||||||
// model.VendorIDEBAI: "desc_img_ebai",
|
|
||||||
// }
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type SkuStoreCatInfo struct {
|
type SkuStoreCatInfo struct {
|
||||||
|
|||||||
@@ -173,13 +173,13 @@ type SkuName struct {
|
|||||||
SpecUnit string `orm:"size(8)" json:"-"` // 为份必然为克,这个主要作用只是用于确保SkuName的唯一性
|
SpecUnit string `orm:"size(8)" json:"-"` // 为份必然为克,这个主要作用只是用于确保SkuName的唯一性
|
||||||
Price int `json:"price"` // 单位为分,标准价,不为份的就为实际标准价,为份的为每市斤价,实际还要乘质量。todo 为份的确定必须有质量
|
Price int `json:"price"` // 单位为分,标准价,不为份的就为实际标准价,为份的为每市斤价,实际还要乘质量。todo 为份的确定必须有质量
|
||||||
|
|
||||||
Img string `orm:"size(512)" json:"img"`
|
Img string `orm:"size(512)" json:"img"`
|
||||||
Img2 string `orm:"size(512)" json:"img2"` // 第二张图片
|
Img2 string `orm:"size(512)" json:"img2"` // 第二张图片
|
||||||
ImgEbai string `orm:"size(255)" json:"imgEbai"` // 饿百图片地址
|
// ImgEbai string `orm:"size(255)" json:"imgEbai"` // 饿百图片地址
|
||||||
ImgHashCode string `orm:"size(255);index" json:"img_hash_code"`
|
// ImgHashCode string `orm:"size(255);index" json:"img_hash_code"`
|
||||||
|
|
||||||
DescImg string `orm:"size(255)" json:"descImg"` // 商品详情图片描述
|
DescImg string `orm:"size(255)" json:"descImg"` // 商品详情图片描述
|
||||||
DescImgEbai string `orm:"size(255)" json:"descImgEbai"` // 饿百的商品详情图片描述RTF
|
// DescImgEbai string `orm:"size(255)" json:"descImgEbai"` // 饿百的商品详情图片描述RTF
|
||||||
|
|
||||||
Upc string `orm:"size(20);index"`
|
Upc string `orm:"size(20);index"`
|
||||||
Status int `orm:"default(1)" json:"status"` // skuname状态,取值同sku.Status
|
Status int `orm:"default(1)" json:"status"` // skuname状态,取值同sku.Status
|
||||||
|
|||||||
Reference in New Issue
Block a user