+ partner.GetSkus, jd.GetSkus
This commit is contained in:
@@ -194,6 +194,8 @@ type IMultipleStoresHandler interface {
|
|||||||
DeleteSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error)
|
DeleteSku(db *dao.DaoDB, sku *model.Sku, userName string) (err error)
|
||||||
|
|
||||||
RefreshAllSkusID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error)
|
RefreshAllSkusID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error)
|
||||||
|
|
||||||
|
GetSkus(ctx *jxcontext.Context, skuID int, vendorSkuID, skuName string) (skuNameList []*SkuNameInfo, err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type ISingleStoreHandler interface {
|
type ISingleStoreHandler interface {
|
||||||
|
|||||||
@@ -580,3 +580,89 @@ func (p *PurchaseHandler) GetVendorCategories(ctx *jxcontext.Context) (vendorCat
|
|||||||
vendorCats, err = p.getVendorCategories(1, 0)
|
vendorCats, err = p.getVendorCategories(1, 0)
|
||||||
return vendorCats, err
|
return vendorCats, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) GetSkus(ctx *jxcontext.Context, skuID int, vendorSkuID, skuName string) (skuNameList []*partner.SkuNameInfo, err error) {
|
||||||
|
param := &jdapi.QuerySkuParam{
|
||||||
|
SkuID: utils.Str2Int64(vendorSkuID),
|
||||||
|
SkuName: skuName,
|
||||||
|
IsFilterDel: jdapi.IsFilterDelTrue,
|
||||||
|
PageNo: 1,
|
||||||
|
PageSize: jdapi.MaxSkuIDsCount4QueryListBySkuIds, // 为了同时取图,这个值不要大于jdapi.MaxSkuIDsCount4QueryListBySkuIds
|
||||||
|
}
|
||||||
|
for {
|
||||||
|
skuList, _, err2 := api.JdAPI.QuerySkuInfos(param)
|
||||||
|
if err = err2; err != nil {
|
||||||
|
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}
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
skuNameList = append(skuNameList, batchSkuNameList...)
|
||||||
|
}
|
||||||
|
if len(skuList) < param.PageSize {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
param.PageNo++
|
||||||
|
}
|
||||||
|
return skuNameList, err
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ func TestCreateSku(t *testing.T) {
|
|||||||
sku.ID = skuID
|
sku.ID = skuID
|
||||||
dao.GetEntity(nil, sku)
|
dao.GetEntity(nil, sku)
|
||||||
t.Log(sku)
|
t.Log(sku)
|
||||||
// err := new(PurchaseHandler).CreateSku(sku)
|
// err := curPurchaseHandler.CreateSku(sku)
|
||||||
// if err != nil {
|
// if err != nil {
|
||||||
// t.Fatal(err.Error())
|
// t.Fatal(err.Error())
|
||||||
// }
|
// }
|
||||||
@@ -31,14 +31,14 @@ func TestUpdateSku(t *testing.T) {
|
|||||||
sku.ID = skuID
|
sku.ID = skuID
|
||||||
dao.GetEntity(db, sku)
|
dao.GetEntity(db, sku)
|
||||||
|
|
||||||
err := new(PurchaseHandler).UpdateSku(db, sku, "autotest")
|
err := curPurchaseHandler.UpdateSku(db, sku, "autotest")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err.Error())
|
t.Fatal(err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestReadCategories(t *testing.T) {
|
func TestReadCategories(t *testing.T) {
|
||||||
result, err := new(PurchaseHandler).ReadCategories()
|
result, err := curPurchaseHandler.ReadCategories()
|
||||||
if err != nil || len(result) == 0 {
|
if err != nil || len(result) == 0 {
|
||||||
t.Fatal(err.Error())
|
t.Fatal(err.Error())
|
||||||
}
|
}
|
||||||
@@ -46,7 +46,7 @@ func TestReadCategories(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestReadSku(t *testing.T) {
|
func TestReadSku(t *testing.T) {
|
||||||
skuName, err := new(PurchaseHandler).ReadSku("2005582952")
|
skuName, err := curPurchaseHandler.ReadSku("2005582952")
|
||||||
t.Log(utils.Format4Output(skuName, false))
|
t.Log(utils.Format4Output(skuName, false))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err.Error())
|
t.Fatal(err.Error())
|
||||||
@@ -58,9 +58,18 @@ func TestReadSku(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestGetVendorCategories(t *testing.T) {
|
func TestGetVendorCategories(t *testing.T) {
|
||||||
catList, err := new(PurchaseHandler).GetVendorCategories(jxcontext.AdminCtx)
|
catList, err := curPurchaseHandler.GetVendorCategories(jxcontext.AdminCtx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err.Error())
|
t.Fatal(err.Error())
|
||||||
}
|
}
|
||||||
t.Log(utils.Format4Output(catList, false))
|
t.Log(utils.Format4Output(catList, false))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetSkus(t *testing.T) {
|
||||||
|
skuNameList, err := curPurchaseHandler.GetSkus(jxcontext.AdminCtx, 0, "", "")
|
||||||
|
t.Log(utils.Format4Output(skuNameList, false))
|
||||||
|
t.Log(len(skuNameList))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -348,6 +348,7 @@ func vendorSku2Jx(appFood *mtwmapi.AppFood) (skuName *partner.SkuNameInfo) {
|
|||||||
PictureList: appFood.PictureList,
|
PictureList: appFood.PictureList,
|
||||||
}
|
}
|
||||||
if appFood.CategoryName != "" {
|
if appFood.CategoryName != "" {
|
||||||
|
// todo, 因为当前我们用的是分类名操作这种方式,所以要返回分类名(而不是分类code)
|
||||||
skuName.VendorCatIDList = []string{appFood.CategoryName}
|
skuName.VendorCatIDList = []string{appFood.CategoryName}
|
||||||
if appFood.SecondaryCategoryName != "" {
|
if appFood.SecondaryCategoryName != "" {
|
||||||
skuName.VendorCatIDList = append(skuName.VendorCatIDList, appFood.SecondaryCategoryName)
|
skuName.VendorCatIDList = append(skuName.VendorCatIDList, appFood.SecondaryCategoryName)
|
||||||
|
|||||||
Reference in New Issue
Block a user