From 7fb09f99d1d5b476c382cc1756349412f64e4ad0 Mon Sep 17 00:00:00 2001 From: gazebo Date: Fri, 6 Dec 2019 15:20:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86DataResource=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E7=9A=84=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sku.go | 75 ++++------- business/jxstore/initdata/initdata.go | 166 ++++++++++++------------ business/jxstore/tempop/tempop.go | 176 +++++++++++++------------- business/jxutils/datares/datares.go | 6 +- business/model/dao/store_sku.go | 6 - business/model/sku.go | 12 +- 6 files changed, 201 insertions(+), 240 deletions(-) diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 9c18dbcea..e1b09f4dd 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -615,39 +615,18 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s skuNameExt.SpecUnit = skuNameExt.Skus[0].SpecUnit } - if globals.EnableStoreWrite { - // 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, 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) + for _, imgName := range []string{skuNameExt.Img, skuNameExt.Img2} { + if imgName != "" { + _, err2 := datares.TryRegisterDataResource(ctx, skuNameExt.Name, imgName, model.ImgTypeMain, false) if err = err2; err != nil { 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 } } @@ -724,10 +703,6 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf } delete(payload, "isSpu") - delete(payload, "imgHashCode") - delete(payload, "imgWeimob") - delete(payload, "imgEbai") - delete(payload, "descImgEbai") delete(payload, "seq") valid := dao.StrictMakeMapByStructObject(payload, skuName, userName) @@ -747,31 +722,27 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf } err = nil } - if globals.EnableStoreWrite { - if valid["img"] != nil { - dataRes, err2 := datares.TryRegisterDataResource(ctx, skuName.Name, valid["img"].(string), model.ImgTypeMain, false) - if err = err2; err != nil { - 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) + for _, imgName := range []string{"img", "img2"} { + if valid[imgName] != nil { + if imgStr := utils.Interface2String(valid[imgName]); imgStr != "" { + _, err2 := datares.TryRegisterDataResource(ctx, skuName.Name, valid[imgName].(string), model.ImgTypeMain, true) if err = err2; err != nil { 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) defer func() { if r := recover(); r != nil { diff --git a/business/jxstore/initdata/initdata.go b/business/jxstore/initdata/initdata.go index 70d0b2ba9..5a30b28f7 100644 --- a/business/jxstore/initdata/initdata.go +++ b/business/jxstore/initdata/initdata.go @@ -5,8 +5,6 @@ import ( "git.rosy.net.cn/baseapi/platformapi/autonavi" "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" @@ -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) { - db := dao.GetDB() - rootTask := tasksch.NewSeqTask("合并SkuName图片至DataResource", ctx, - func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { - switch step { - case 0: // 计算SkuName中缺失的hashCode(注意是DescImg不是Img) - var skuNameList []*model.SkuName - if err = dao.GetRows(db, &skuNameList, ` - SELECT t1.* - FROM sku_name t1 - WHERE t1.desc_img <> '' AND t1.img_hash_code = '' - `); err == nil && len(skuNameList) > 0 { - calcTask := tasksch.NewParallelTask("UploadImg4Vendors calc hashCode", - tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(5), ctx, - func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - skuName := batchItemList[0].(*model.SkuName) - _, skuName.ImgHashCode, err = jxutils.DownloadFileByURL(skuName.DescImg) - if err == nil { - dao.UpdateEntity(db, skuName, "ImgHashCode") - } - return retVal, err - }, skuNameList) - tasksch.HandleTask(calcTask, task, false).Run() - _, err = calcTask.GetResult(0) - } - case 1: // 从SkuName添加缺失的图片至DataResource - _, err = dao.ExecuteSQL(db, ` - INSERT INTO data_resource(created_at, updated_at, last_operator, hash_code, - 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, - CASE - WHEN INSTR(t1.desc_img, ".jpg") > 0 OR INSTR(t1.desc_img, ".jpeg") > 0 THEN - 'image/jpeg' - WHEN INSTR(t1.desc_img, ".png") > 0 OR INSTR(t1.desc_img, ".peg") > 0 THEN - 'image/png' - WHEN INSTR(t1.desc_img, ".gif") THEN - 'image/gif' - ELSE - '' - END resource_type, - 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 - FROM sku_name t1 - JOIN ( - SELECT img_hash_code, MAX(id) id, COUNT(*) ct - FROM sku_name - WHERE img_hash_code <> '' AND desc_img <> '' - GROUP BY 1 - ) t3 ON t3.id = t1.id - 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; - `) - case 2: // 统一SkuName中同hashCode,不同图片地址至同一地址 - _, err = dao.ExecuteSQL(db, ` - UPDATE sku_name t1 - JOIN data_resource t2 ON t2.hash_code = t1.img_hash_code AND t2.main_url <> '' - SET t1.desc_img = t2.main_url - WHERE t1.img_hash_code <> '' AND t1.desc_img <> t2.main_url; - `) - case 3: // 上传DataResource中缺失的平台图片 - dataResList, err2 := dao.GetNeedUploadDataResource(db) - if err = err2; err == nil && len(dataResList) > 0 { - uploadTask := tasksch.NewParallelTask("批量上传图片至平台", - tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(2), ctx, - func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - dataRes := batchItemList[0].(*model.DataResource) - _, err = datares.UploadImage2Vendors(ctx, task, dataRes, nil, false) - return nil, err - }, dataResList) - tasksch.HandleTask(uploadTask, task, true).Run() - _, err = uploadTask.GetResult(0) - } - } - return result, err - }, 4) - tasksch.HandleTask(rootTask, nil, true).Run() - if !isAsync { - if _, err = rootTask.GetResult(0); err == nil { - hint = "1" - } - } else { - hint = rootTask.ID - } + // db := dao.GetDB() + // rootTask := tasksch.NewSeqTask("合并SkuName图片至DataResource", ctx, + // func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { + // switch step { + // case 0: // 计算SkuName中缺失的hashCode(注意是DescImg不是Img) + // var skuNameList []*model.SkuName + // if err = dao.GetRows(db, &skuNameList, ` + // SELECT t1.* + // FROM sku_name t1 + // WHERE t1.desc_img <> '' AND t1.img_hash_code = '' + // `); err == nil && len(skuNameList) > 0 { + // calcTask := tasksch.NewParallelTask("UploadImg4Vendors calc hashCode", + // tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(5), ctx, + // func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + // skuName := batchItemList[0].(*model.SkuName) + // _, skuName.ImgHashCode, err = jxutils.DownloadFileByURL(skuName.DescImg) + // if err == nil { + // dao.UpdateEntity(db, skuName, "ImgHashCode") + // } + // return retVal, err + // }, skuNameList) + // tasksch.HandleTask(calcTask, task, false).Run() + // _, err = calcTask.GetResult(0) + // } + // case 1: // 从SkuName添加缺失的图片至DataResource + // _, err = dao.ExecuteSQL(db, ` + // INSERT INTO data_resource(created_at, updated_at, last_operator, hash_code, + // 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, + // CASE + // WHEN INSTR(t1.desc_img, ".jpg") > 0 OR INSTR(t1.desc_img, ".jpeg") > 0 THEN + // 'image/jpeg' + // WHEN INSTR(t1.desc_img, ".png") > 0 OR INSTR(t1.desc_img, ".peg") > 0 THEN + // 'image/png' + // WHEN INSTR(t1.desc_img, ".gif") THEN + // 'image/gif' + // ELSE + // '' + // END resource_type, + // 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 + // FROM sku_name t1 + // JOIN ( + // SELECT img_hash_code, MAX(id) id, COUNT(*) ct + // FROM sku_name + // WHERE img_hash_code <> '' AND desc_img <> '' + // GROUP BY 1 + // ) t3 ON t3.id = t1.id + // 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; + // `) + // case 2: // 统一SkuName中同hashCode,不同图片地址至同一地址 + // _, err = dao.ExecuteSQL(db, ` + // UPDATE sku_name t1 + // JOIN data_resource t2 ON t2.hash_code = t1.img_hash_code AND t2.main_url <> '' + // SET t1.desc_img = t2.main_url + // WHERE t1.img_hash_code <> '' AND t1.desc_img <> t2.main_url; + // `) + // case 3: // 上传DataResource中缺失的平台图片 + // dataResList, err2 := dao.GetNeedUploadDataResource(db) + // if err = err2; err == nil && len(dataResList) > 0 { + // uploadTask := tasksch.NewParallelTask("批量上传图片至平台", + // tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(2), ctx, + // func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + // dataRes := batchItemList[0].(*model.DataResource) + // _, err = datares.UploadImage2Vendors(ctx, task, dataRes, nil, false) + // return nil, err + // }, dataResList) + // tasksch.HandleTask(uploadTask, task, true).Run() + // _, err = uploadTask.GetResult(0) + // } + // } + // return result, err + // }, 4) + // tasksch.HandleTask(rootTask, nil, true).Run() + // if !isAsync { + // if _, err = rootTask.GetResult(0); err == nil { + // hint = "1" + // } + // } else { + // hint = rootTask.ID + // } return hint, err } diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index d13670c09..de9df59ec 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -4,10 +4,6 @@ import ( "bytes" "context" "fmt" - "image" - "image/jpeg" - "image/png" - "net/http" "regexp" "strings" "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) { - db := dao.GetDB() - rootTask := tasksch.NewSeqTask("检查图片的有效性", ctx, - func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { - switch step { - case 0: // 检查图片的格式与大小 - var imgList []*model.DataResource - if err = dao.GetRows(db, &imgList, ` - SELECT t1.* - FROM data_resource t1 - WHERE t1.use_type = 1 - `); err == nil && len(imgList) > 0 { - calcTask := tasksch.NewParallelTask("检查京西图片的有效性", - tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(5), ctx, - func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - dataRes := batchItemList[0].(*model.DataResource) - binaryData, hashCode, err2 := jxutils.DownloadFileByURL(dataRes.MainURL) - if err = err2; err == nil { - errMsg := "" - if hashCode != dataRes.HashCode { - errMsg = fmt.Sprintf("hashcode:%s", hashCode) - dataRes.HashCode = hashCode - } - resType := http.DetectContentType(binaryData) - if resType != dataRes.ResourceType { - errMsg += "," + resType - dataRes.ResourceType = resType - } - var img image.Image - if dataRes.ResourceType == "image/png" { - img, err = png.Decode(bytes.NewReader(binaryData)) - } else if dataRes.ResourceType == "image/jpeg" { - img, err = jpeg.Decode(bytes.NewReader(binaryData)) - } - if err == nil { - if img != nil { - if img.Bounds().Dx() != 800 || img.Bounds().Dy() != 800 { - errMsg += fmt.Sprintf(",size:%dx%d", img.Bounds().Dx(), img.Bounds().Dy()) - } - } - } else { - errMsg += "," + err.Error() - } - if errMsg != "" { - dataRes.Remark = errMsg - dao.UpdateEntity(dao.GetDB(), dataRes, "Remark", "ResourceType", "HashCode") - } - } - return retVal, err - }, imgList) - tasksch.HandleTask(calcTask, task, false).Run() - _, err = calcTask.GetResult(0) - } - case 1: // 检查京东商品图片 - skuNameInfo, err2 := cms.GetSkuNames(ctx, "", false, map[string]interface{}{}, 0, -1) - if err = err2; err == nil && len(skuNameInfo.SkuNames) > 0 { - calcTask := tasksch.NewParallelTask("检查京东图片的有效性", - tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(5), ctx, - func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - skuName := batchItemList[0].(*model.SkuNameExt) - for _, sku := range skuName.Skus { - if sku.JdID != 0 { - skuPageInfo, err2 := api.JdAPI.GetSkuPageInfo(sku.JdID) - 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) - skuName.ImgHashCode = "np" - dao.UpdateEntity(dao.GetDB(), &skuName.SkuName, "ImgHashCode") - } - break - } - } - return retVal, err - }, skuNameInfo.SkuNames) - tasksch.HandleTask(calcTask, task, false).Run() - _, err = calcTask.GetResult(0) - } - } - return result, err - }, 2) - tasksch.HandleTask(rootTask, nil, true).Run() - if !isAsync { - if _, err = rootTask.GetResult(0); err == nil { - hint = "1" - } - } else { - hint = rootTask.ID - } + // db := dao.GetDB() + // rootTask := tasksch.NewSeqTask("检查图片的有效性", ctx, + // func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { + // switch step { + // case 0: // 检查图片的格式与大小 + // var imgList []*model.DataResource + // if err = dao.GetRows(db, &imgList, ` + // SELECT t1.* + // FROM data_resource t1 + // WHERE t1.use_type = 1 + // `); err == nil && len(imgList) > 0 { + // calcTask := tasksch.NewParallelTask("检查京西图片的有效性", + // tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(5), ctx, + // func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + // dataRes := batchItemList[0].(*model.DataResource) + // binaryData, hashCode, err2 := jxutils.DownloadFileByURL(dataRes.MainURL) + // if err = err2; err == nil { + // errMsg := "" + // if hashCode != dataRes.HashCode { + // errMsg = fmt.Sprintf("hashcode:%s", hashCode) + // dataRes.HashCode = hashCode + // } + // resType := http.DetectContentType(binaryData) + // if resType != dataRes.ResourceType { + // errMsg += "," + resType + // dataRes.ResourceType = resType + // } + // var img image.Image + // if dataRes.ResourceType == "image/png" { + // img, err = png.Decode(bytes.NewReader(binaryData)) + // } else if dataRes.ResourceType == "image/jpeg" { + // img, err = jpeg.Decode(bytes.NewReader(binaryData)) + // } + // if err == nil { + // if img != nil { + // if img.Bounds().Dx() != 800 || img.Bounds().Dy() != 800 { + // errMsg += fmt.Sprintf(",size:%dx%d", img.Bounds().Dx(), img.Bounds().Dy()) + // } + // } + // } else { + // errMsg += "," + err.Error() + // } + // if errMsg != "" { + // dataRes.Remark = errMsg + // dao.UpdateEntity(dao.GetDB(), dataRes, "Remark", "ResourceType", "HashCode") + // } + // } + // return retVal, err + // }, imgList) + // tasksch.HandleTask(calcTask, task, false).Run() + // _, err = calcTask.GetResult(0) + // } + // case 1: // 检查京东商品图片 + // skuNameInfo, err2 := cms.GetSkuNames(ctx, "", false, map[string]interface{}{}, 0, -1) + // if err = err2; err == nil && len(skuNameInfo.SkuNames) > 0 { + // calcTask := tasksch.NewParallelTask("检查京东图片的有效性", + // tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(5), ctx, + // func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + // skuName := batchItemList[0].(*model.SkuNameExt) + // for _, sku := range skuName.Skus { + // if sku.JdID != 0 { + // skuPageInfo, err2 := api.JdAPI.GetSkuPageInfo(sku.JdID) + // 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) + // skuName.ImgHashCode = "np" + // dao.UpdateEntity(dao.GetDB(), &skuName.SkuName, "ImgHashCode") + // } + // break + // } + // } + // return retVal, err + // }, skuNameInfo.SkuNames) + // tasksch.HandleTask(calcTask, task, false).Run() + // _, err = calcTask.GetResult(0) + // } + // } + // return result, err + // }, 2) + // tasksch.HandleTask(rootTask, nil, true).Run() + // if !isAsync { + // if _, err = rootTask.GetResult(0); err == nil { + // hint = "1" + // } + // } else { + // hint = rootTask.ID + // } return hint, err } diff --git a/business/jxutils/datares/datares.go b/business/jxutils/datares/datares.go index 7949b79cf..42e3ffb5b 100644 --- a/business/jxutils/datares/datares.go +++ b/business/jxutils/datares/datares.go @@ -108,8 +108,10 @@ func RegisterDataResource(ctx *jxcontext.Context, name, resourceURL, mimeType, h return dataRes, err } if imgType > 0 { - // 忽略上传错误 - UploadImage2Vendors(ctx, nil, dataRes, resBinary, isAsyncUpload2Vendor) + if globals.EnableStoreWrite { + // 忽略上传错误 + UploadImage2Vendors(ctx, nil, dataRes, resBinary, isAsyncUpload2Vendor) + } } return dataRes, err } diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 726a357da..c162fe150 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -12,16 +12,10 @@ import ( ) var ( - // imgFieldMap = map[int]string{ - // model.VendorIDEBAI: "img_ebai", - // } dataResFieldMap = map[int]string{ model.VendorIDMTWM: "mtwm_url", model.VendorIDEBAI: "ebai_url", } - // descImgFieldMap = map[int]string{ - // model.VendorIDEBAI: "desc_img_ebai", - // } ) type SkuStoreCatInfo struct { diff --git a/business/model/sku.go b/business/model/sku.go index 8015321be..cee366888 100644 --- a/business/model/sku.go +++ b/business/model/sku.go @@ -173,13 +173,13 @@ type SkuName struct { SpecUnit string `orm:"size(8)" json:"-"` // 为份必然为克,这个主要作用只是用于确保SkuName的唯一性 Price int `json:"price"` // 单位为分,标准价,不为份的就为实际标准价,为份的为每市斤价,实际还要乘质量。todo 为份的确定必须有质量 - Img string `orm:"size(512)" json:"img"` - Img2 string `orm:"size(512)" json:"img2"` // 第二张图片 - ImgEbai string `orm:"size(255)" json:"imgEbai"` // 饿百图片地址 - ImgHashCode string `orm:"size(255);index" json:"img_hash_code"` + Img string `orm:"size(512)" json:"img"` + Img2 string `orm:"size(512)" json:"img2"` // 第二张图片 + // ImgEbai string `orm:"size(255)" json:"imgEbai"` // 饿百图片地址 + // ImgHashCode string `orm:"size(255);index" json:"img_hash_code"` - DescImg string `orm:"size(255)" json:"descImg"` // 商品详情图片描述 - DescImgEbai string `orm:"size(255)" json:"descImgEbai"` // 饿百的商品详情图片描述RTF + DescImg string `orm:"size(255)" json:"descImg"` // 商品详情图片描述 + // DescImgEbai string `orm:"size(255)" json:"descImgEbai"` // 饿百的商品详情图片描述RTF Upc string `orm:"size(20);index"` Status int `orm:"default(1)" json:"status"` // skuname状态,取值同sku.Status