-partner.ReadSku

修改partner.GetSkus原型,添加vendorOrgCode,去除skuName
This commit is contained in:
gazebo
2019-12-11 15:44:42 +08:00
parent ccba718569
commit 95a669476e
11 changed files with 241 additions and 249 deletions

View File

@@ -7,6 +7,7 @@ import (
"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/business/partner"
@@ -199,6 +200,129 @@ func (p *PurchaseHandler) DeleteSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSy
return err
}
func (p *PurchaseHandler) GetSkus(ctx *jxcontext.Context, vendorOrgCode string, skuID int, vendorSkuID string) (skuNameList []*partner.SkuNameInfo, err error) {
param := &jdapi.QuerySkuParam{
SkuID: utils.Str2Int64WithDefault(vendorSkuID, 0),
IsFilterDel: jdapi.IsFilterDelTrue,
PageNo: 1,
PageSize: jdapi.MaxSkuIDsCount4QueryListBySkuIds, // 为了同时取图这个值不要大于jdapi.MaxSkuIDsCount4QueryListBySkuIds
}
for {
skuList, _, err2 := getAPI(vendorOrgCode).QuerySkuInfos(param)
if err = err2; err != nil {
return nil, err
}
if len(skuList) > 0 {
batchSkuNameList := make([]*partner.SkuNameInfo, len(skuList))
for k, v := range skuList {
batchSkuNameList[k] = vendorSku2Jx(v)
}
setSkuNameListPic(batchSkuNameList)
skuNameList = append(skuNameList, batchSkuNameList...)
}
if len(skuList) < param.PageSize {
break
}
param.PageNo++
}
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 := getAPI("").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 := getAPI("").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)
if weight <= 0 {
weight = jxutils.FormatSkuWeight(specQuality, specUnit)
}
skuID := int(utils.Str2Int64WithDefault(vendorSku.OutSkuID, 0))
vendorSkuID := utils.Int64ToStr(vendorSku.SkuID)
skuName = &partner.SkuNameInfo{
NameID: skuID,
VendorNameID: vendorSkuID,
VendorCatIDList: []string{utils.Int64ToStr(vendorSku.CategoryID)},
Prefix: prefix,
Name: name,
Unit: unit,
SkuList: []*partner.SkuInfo{
&partner.SkuInfo{
StoreSkuInfo: partner.StoreSkuInfo{
VendorSkuID: vendorSkuID,
SkuID: skuID,
VendorPrice: int64(vendorSku.SkuPrice),
Status: jdStatus2jxStatus(vendorSku.FixedStatus),
},
SkuName: vendorSku.SkuName,
Comment: comment,
SpecQuality: float64(specQuality),
SpecUnit: specUnit,
Weight: weight,
},
},
}
return skuName
}
func jdStatus2jxStatus(jdStatus int) (jxStatus int) {
switch jdStatus {
case jdapi.SkuFixedStatusOnline: