创建商品,自动推导分类

This commit is contained in:
邹宗楠
2023-03-23 14:05:37 +08:00
parent 8a4d2f24fe
commit 2a57fd701a
2 changed files with 104 additions and 66 deletions

View File

@@ -159,7 +159,7 @@ func AddCategory(ctx *jxcontext.Context, cat *model.SkuCategory, userName string
return nil, errors.New("Level3的分类其父分类必须为Level2分类") return nil, errors.New("Level3的分类其父分类必须为Level2分类")
} }
} }
if catsByName, err := dao.GetCategoriesByName(db, cat.Name); err == nil && len(catsByName) > 0 { if catsByName, err := dao.GetCategoriesByName(db, cat.Name, ""); err == nil && len(catsByName) > 0 {
return nil, fmt.Errorf("已有分类名:[%v],分类名不允许重复!", cat.Name) return nil, fmt.Errorf("已有分类名:[%v],分类名不允许重复!", cat.Name)
} else if err != nil { } else if err != nil {
return nil, err return nil, err
@@ -1146,6 +1146,40 @@ type aa struct {
ExdSkuID string `json:"exdSkuID"` ExdSkuID string `json:"exdSkuID"`
} }
// 根据名称获取商品分类[京东]
func getCategoryByName(name string) string {
handler, _ := partner.GetPurchasePlatformFromVendorID(model.VendorIDJD).(partner.IPurchasePlatformStoreSkuHandler)
vendorCategoryId, _ := handler.GetSkuCategoryIdByName(beego.AppConfig.DefaultString("jdOrgCode", "320406"), name)
return vendorCategoryId
}
// 获取抖音商品分类[抖音]
func getCategoryByImg(img string) string {
handler, _ := partner.GetPurchasePlatformFromVendorID(model.VendorIDDD).(partner.IPurchasePlatformStoreSkuHandler)
vendorCategoryId, _ := handler.GetSkuCategoryIdByName("57939570", img)
return vendorCategoryId
}
// 根据平台返回的分类id,获取本地绑定的映射分类id
func getJDCategoryLoadingLocalCategoryReflex(jdCategoryId, jdsCategoryID, ebaiCategoryID, mtwmCategoryID string) (string, string, string) {
cats, err := dao.GetCategoriesByName(dao.GetDB(), "", jdCategoryId)
if len(cats) == 0 || err != nil {
globals.SugarLogger.Errorf("%v", fmt.Errorf("根据京东分类id设置美团/饿了么分类错误:%d,%v", len(cats), err))
return jdsCategoryID, ebaiCategoryID, mtwmCategoryID
} else {
if jdsCategoryID == "" && cats[0].JdsCategoryID != 0 {
jdsCategoryID = utils.Int64ToStr(cats[0].JdsCategoryID)
}
if ebaiCategoryID == "" && cats[0].EbaiCategoryID != 0 {
ebaiCategoryID = utils.Int64ToStr(cats[0].EbaiCategoryID)
}
if mtwmCategoryID == "" && cats[0].MtwmCategoryID != 0 {
mtwmCategoryID = utils.Int64ToStr(cats[0].MtwmCategoryID)
}
}
return jdsCategoryID, ebaiCategoryID, mtwmCategoryID
}
func updateOrCreateSkuVendorCategoryMap(db *dao.DaoDB, ctx *jxcontext.Context, nameID int, payload map[string]interface{}, skuNameExt *model.SkuNameExt, isDelete bool) (flag bool) { func updateOrCreateSkuVendorCategoryMap(db *dao.DaoDB, ctx *jxcontext.Context, nameID int, payload map[string]interface{}, skuNameExt *model.SkuNameExt, isDelete bool) (flag bool) {
if isDelete { if isDelete {
skuVendorCatMaps, _ := dao.GetSkuVendorCategoryMaps(db, []int{nameID}, nil, nil) skuVendorCatMaps, _ := dao.GetSkuVendorCategoryMaps(db, []int{nameID}, nil, nil)
@@ -1171,82 +1205,81 @@ func updateOrCreateSkuVendorCategoryMap(db *dao.DaoDB, ctx *jxcontext.Context, n
dao.CreateEntity(db, skuVendorCatMap) dao.CreateEntity(db, skuVendorCatMap)
} }
} }
// 京东的推荐分类id,可能是创建商品时用户添加的,如果用户没添加则,在平台获取京东的分类id
// 在本地平台分类id和系统分类id的绑定表当中获取当前京东id对应系统i对应的美团和饿了么id
// 将此id的值回填给当前的值!
jdCategoryId := ""
jdsCategoryID := ""
ebaiCategoryID := ""
mtwmCategoryID := ""
ddCategoryID := ""
if skuNameExt != nil { if skuNameExt != nil {
if skuNameExt.JdCategoryID != "" { if skuNameExt.JdCategoryID != "" {
updateOrCreate(model.VendorIDJD, nameID, skuNameExt.JdCategoryID) jdCategoryId = skuNameExt.JdCategoryID
flag = true
} /*else {
handler, _ := partner.GetPurchasePlatformFromVendorID(model.VendorIDJD).(partner.IPurchasePlatformStoreSkuHandler)
vendorCategoryId, _ := handler.GetSkuCategoryIdByName(beego.AppConfig.DefaultString("jdOrgCode", "320406"), skuNameExt.Name)
if vendorCategoryId != "" {
updateOrCreate(model.VendorIDJD, nameID, skuNameExt.JdCategoryID)
flag = true
}
}*/
if skuNameExt.JdsCategoryID != "" {
updateOrCreate(model.VendorIDJDShop, nameID, skuNameExt.JdsCategoryID)
flag = true
}
if skuNameExt.EbaiCategoryID != "" {
updateOrCreate(model.VendorIDEBAI, nameID, skuNameExt.EbaiCategoryID)
flag = true
}
if skuNameExt.MtwmCategoryID != "" {
updateOrCreate(model.VendorIDMTWM, nameID, skuNameExt.MtwmCategoryID)
flag = true
} else { } else {
jdCategoryId = getCategoryByName(skuNameExt.Name)
} }
if jdCategoryId != "" && jdCategoryId != "0" {
jdsCategoryID, ebaiCategoryID, mtwmCategoryID = getJDCategoryLoadingLocalCategoryReflex(jdCategoryId, skuNameExt.JdsCategoryID, skuNameExt.EbaiCategoryID, skuNameExt.MtwmCategoryID)
} else {
jdsCategoryID = skuNameExt.JdsCategoryID
ebaiCategoryID = skuNameExt.EbaiCategoryID
mtwmCategoryID = skuNameExt.MtwmCategoryID
}
if skuNameExt.DdCategoryID != "" { if skuNameExt.DdCategoryID != "" {
updateOrCreate(model.VendorIDDD, nameID, skuNameExt.DdCategoryID) ddCategoryID = skuNameExt.DdCategoryID
flag = true } else {
} /*else { // 抖音是根据商品图片获取商品分类的!
handler, _ := partner.GetPurchasePlatformFromVendorID(model.VendorIDDD).(partner.IPurchasePlatformStoreSkuHandler)
imgs := fmt.Sprintf("%s|%s|%s|%s|%s|%s", skuNameExt.DescImg, skuNameExt.Img, skuNameExt.Img2, skuNameExt.Img3, skuNameExt.Img4, skuNameExt.Img5) imgs := fmt.Sprintf("%s|%s|%s|%s|%s|%s", skuNameExt.DescImg, skuNameExt.Img, skuNameExt.Img2, skuNameExt.Img3, skuNameExt.Img4, skuNameExt.Img5)
vendorCategoryId, _ := handler.GetSkuCategoryIdByName("57939570", imgs) ddCategoryID = getCategoryByImg(imgs)
if vendorCategoryId != "" { }
updateOrCreate(model.VendorIDDD, nameID, skuNameExt.JdCategoryID)
flag = true
}
}*/
} else { } else {
if payload["jdCategoryID"] != nil { if payload["jdCategoryID"] != nil {
updateOrCreate(model.VendorIDJD, nameID, payload["jdCategoryID"].(string)) jdCategoryId = payload["jdCategoryID"].(string)
flag = true } else {
} /*else { jdCategoryId = getCategoryByName(payload["name"].(string))
handler, _ := partner.GetPurchasePlatformFromVendorID(model.VendorIDJD).(partner.IPurchasePlatformStoreSkuHandler)
vendorCategoryId, _ := handler.GetSkuCategoryIdByName(beego.AppConfig.DefaultString("jdOrgCode", "320406"), skuNameExt.Name)
if vendorCategoryId != "" {
updateOrCreate(model.VendorIDJD, nameID, skuNameExt.JdCategoryID)
flag = true
}
}*/
if payload["jdsCategoryID"] != nil {
updateOrCreate(model.VendorIDJDShop, nameID, payload["jdsCategoryID"].(string))
flag = true
} }
if payload["ebaiCategoryID"] != nil {
updateOrCreate(model.VendorIDEBAI, nameID, payload["ebaiCategoryID"].(string)) if jdCategoryId != "" {
flag = true jdsCategoryID, ebaiCategoryID, mtwmCategoryID = getJDCategoryLoadingLocalCategoryReflex(jdCategoryId, payload["jdsCategoryID"].(string), payload["ebaiCategoryID"].(string), payload["mtwmCategoryID"].(string))
} } else {
if payload["mtwmCategoryID"] != nil { jdsCategoryID = payload["jdsCategoryID"].(string)
updateOrCreate(model.VendorIDMTWM, nameID, payload["mtwmCategoryID"].(string)) ebaiCategoryID = payload["ebaiCategoryID"].(string)
flag = true mtwmCategoryID = payload["mtwmCategoryID"].(string)
} }
if payload["ddCategoryID"] != nil { if payload["ddCategoryID"] != nil {
updateOrCreate(model.VendorIDDD, nameID, payload["ddCategoryID"].(string)) ddCategoryID = payload["ddCategoryID"].(string)
flag = true } else {
} /*else { imgs := fmt.Sprintf("%s|%s|%s|%s|%s|%s", skuNameExt.DescImg, skuNameExt.Img, skuNameExt.Img2, skuNameExt.Img3, skuNameExt.Img4, skuNameExt.Img5)
handler, _ := partner.GetPurchasePlatformFromVendorID(model.VendorIDDD).(partner.IPurchasePlatformStoreSkuHandler) ddCategoryID = getCategoryByImg(imgs)
imgs := fmt.Sprintf("%s,%s,%s,%s,%s,%s", skuNameExt.DescImg, skuNameExt.Img, skuNameExt.Img2, skuNameExt.Img3, skuNameExt.Img4, skuNameExt.Img5) }
vendorCategoryId, _ := handler.GetSkuCategoryIdByName("57939570", imgs)
if vendorCategoryId != "" {
updateOrCreate(model.VendorIDDD, nameID, skuNameExt.JdCategoryID)
flag = true
}
}*/
} }
if jdsCategoryID != "" {
updateOrCreate(model.VendorIDJDShop, nameID, jdsCategoryID)
flag = true
}
if ebaiCategoryID != "" {
updateOrCreate(model.VendorIDEBAI, nameID, ebaiCategoryID)
flag = true
}
if mtwmCategoryID != "" {
updateOrCreate(model.VendorIDMTWM, nameID, mtwmCategoryID)
flag = true
}
if ddCategoryID != "" {
updateOrCreate(model.VendorIDDD, nameID, ddCategoryID)
flag = true
}
if jdCategoryId != "" {
updateOrCreate(model.VendorIDJD, nameID, jdCategoryId)
flag = true
}
} }
return flag return flag
} }

View File

@@ -50,7 +50,7 @@ func DeleteSkuNamePlace(db *DaoDB, nameID int, placeCodes []int) (num int64, err
return ExecuteSQL(db, sql, sqlParams...) return ExecuteSQL(db, sql, sqlParams...)
} }
func GetCategoriesByName(db *DaoDB, name string) (cats []*model.SkuCategory, err error) { func GetCategoriesByName(db *DaoDB, name string, jdCategoryId string) (cats []*model.SkuCategory, err error) {
sql := ` sql := `
SELECT t1.* SELECT t1.*
FROM sku_category t1 FROM sku_category t1
@@ -62,6 +62,11 @@ func GetCategoriesByName(db *DaoDB, name string) (cats []*model.SkuCategory, err
sql += " AND t1.name = ?" sql += " AND t1.name = ?"
params = append(params, name) params = append(params, name)
} }
if jdCategoryId != "" {
sql += " AND t1.jd_category_id = ?"
params = append(params, jdCategoryId)
}
return cats, GetRows(db, &cats, sql, params) return cats, GetRows(db, &cats, sql, params)
} }