diff --git a/business/partner/purchase/jd/sku.go b/business/partner/purchase/jd/sku.go index 16f52a6ce..244ddeb3a 100644 --- a/business/partner/purchase/jd/sku.go +++ b/business/partner/purchase/jd/sku.go @@ -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) diff --git a/business/partner/purchase/jd/sku_test.go b/business/partner/purchase/jd/sku_test.go index e3378e72e..831fd7d9f 100644 --- a/business/partner/purchase/jd/sku_test.go +++ b/business/partner/purchase/jd/sku_test.go @@ -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 { diff --git a/business/partner/purchase/jd/store_sku2_test.go b/business/partner/purchase/jd/store_sku2_test.go index 5d067beb3..0fc71b453 100644 --- a/business/partner/purchase/jd/store_sku2_test.go +++ b/business/partner/purchase/jd/store_sku2_test.go @@ -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) {