- jd.setSkuNameListPic

This commit is contained in:
gazebo
2019-08-02 11:01:57 +08:00
parent 92daec3d93
commit e2a620b305
3 changed files with 63 additions and 26 deletions

View File

@@ -595,32 +595,11 @@ func (p *PurchaseHandler) GetSkus(ctx *jxcontext.Context, skuID int, vendorSkuID
return nil, err
}
if len(skuList) > 0 {
jdSkuIDs := make([]int64, len(skuList))
batchSkuNameList := make([]*partner.SkuNameInfo, len(skuList))
for k, v := range skuList {
batchSkuNameList[k] = vendorSku2Jx(v)
jdSkuIDs[k] = v.SkuID
}
imgMap := make(map[int64]*jdapi.ImgHandleQueryResult)
if imgList, err2 := api.JdAPI.QueryListBySkuIds(&jdapi.QueryListBySkuIdsParam{
SkuIDs: jdSkuIDs,
}); err2 == nil {
for _, v := range imgList {
if imgMap[v.SkuID] == nil || imgMap[v.SkuID].IsMain < v.IsMain || imgMap[v.SkuID].ImgType < v.ImgType {
imgMap[v.SkuID] = v
}
}
}
for _, v := range batchSkuNameList {
jdSkuID := utils.Str2Int64(v.SkuList[0].VendorSkuID)
if imgInfo := imgMap[jdSkuID]; imgInfo != nil {
v.PictureList = []string{imgInfo.SourceImgURL}
} else {
// if imgList, err2 := api.JdAPI.GetSkuPageImageInfo(jdSkuID); err2 == nil && len(imgList) > 0 {
// v.PictureList = []string{imgList[0].Big}
// }
}
}
setSkuNameListPic(batchSkuNameList)
skuNameList = append(skuNameList, batchSkuNameList...)
}
if len(skuList) < param.PageSize {
@@ -631,6 +610,65 @@ func (p *PurchaseHandler) GetSkus(ctx *jxcontext.Context, skuID int, vendorSkuID
return skuNameList, err
}
func setSkuNameListPic(skuNameList []*partner.SkuNameInfo) []*partner.SkuNameInfo {
jdSkuIDs := make([]int64, len(skuNameList))
for k, v := range skuNameList {
jdSkuIDs[k] = utils.Str2Int64(v.SkuList[0].VendorSkuID)
}
imgMap := make(map[int64]*jdapi.ImgHandleQueryResult)
if imgList, err2 := api.JdAPI.QueryListBySkuIds(&jdapi.QueryListBySkuIdsParam{
SkuIDs: jdSkuIDs,
}); err2 == nil {
for _, v := range imgList {
if v.ImgType == jdapi.ImgTypeMain {
imgResult := imgMap[v.SkuID]
if imgResult == nil || imgResult.IsMain < v.IsMain {
imgMap[v.SkuID] = v
}
}
}
}
// 使用扒页面方式获取商品图片
if false {
var leftJdSkuIDs []int64
for _, v := range jdSkuIDs {
if imgMap[v] == nil {
leftJdSkuIDs = append(leftJdSkuIDs, v)
}
}
task := tasksch.NewParallelTask("jd setSkuNameListPic", nil, jxcontext.AdminCtx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
jdSkuID := batchItemList[0].(int64)
imgList, err := api.JdAPI.GetSkuPageImageInfo(jdSkuID)
if err == nil && len(imgList) > 0 {
retVal = [][]string{
[]string{utils.Int64ToStr(jdSkuID), imgList[0].Big},
}
}
return retVal, err
}, leftJdSkuIDs)
task.Run()
if resultList, err := task.GetResult(0); err == nil {
for _, v := range resultList {
strList := v.([]string)
imgMap[utils.Str2Int64(strList[0])] = &jdapi.ImgHandleQueryResult{
SourceImgURL: strList[1],
}
}
}
}
// 设置商品图片
for _, v := range skuNameList {
if imgResult := imgMap[utils.Str2Int64(v.SkuList[0].VendorSkuID)]; imgResult != nil {
v.PictureList = []string{imgResult.SourceImgURL}
}
}
return skuNameList
}
func vendorSku2Jx(vendorSku *jdapi.SkuMain) (skuName *partner.SkuNameInfo) {
prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(vendorSku.SkuName)
weight := int(vendorSku.Weight * 1000)

View File

@@ -66,7 +66,7 @@ func TestGetVendorCategories(t *testing.T) {
}
func TestGetSkus(t *testing.T) {
skuNameList, err := curPurchaseHandler.GetSkus(jxcontext.AdminCtx, 0, "", "")
skuNameList, err := curPurchaseHandler.GetSkus(jxcontext.AdminCtx, 0, "2023747677", "")
t.Log(utils.Format4Output(skuNameList, false))
t.Log(len(skuNameList))
if err != nil {

View File

@@ -3,11 +3,10 @@ package jd
import (
"testing"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/business/partner/putils"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/business/partner/putils"
)
func TestGetStoreSkusBareInfo(t *testing.T) {