创建商品,自动推导分类

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分类")
}
}
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)
} else if err != nil {
return nil, err
@@ -1146,6 +1146,40 @@ type aa struct {
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) {
if isDelete {
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)
}
}
// 京东的推荐分类id,可能是创建商品时用户添加的,如果用户没添加则,在平台获取京东的分类id
// 在本地平台分类id和系统分类id的绑定表当中获取当前京东id对应系统i对应的美团和饿了么id
// 将此id的值回填给当前的值!
jdCategoryId := ""
jdsCategoryID := ""
ebaiCategoryID := ""
mtwmCategoryID := ""
ddCategoryID := ""
if skuNameExt != nil {
if skuNameExt.JdCategoryID != "" {
updateOrCreate(model.VendorIDJD, nameID, 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
jdCategoryId = skuNameExt.JdCategoryID
} 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 != "" {
updateOrCreate(model.VendorIDDD, nameID, skuNameExt.DdCategoryID)
flag = true
} /*else {
handler, _ := partner.GetPurchasePlatformFromVendorID(model.VendorIDDD).(partner.IPurchasePlatformStoreSkuHandler)
ddCategoryID = skuNameExt.DdCategoryID
} else {
// 抖音是根据商品图片获取商品分类的!
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
}
}*/
ddCategoryID = getCategoryByImg(imgs)
}
} else {
if payload["jdCategoryID"] != nil {
updateOrCreate(model.VendorIDJD, nameID, payload["jdCategoryID"].(string))
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 payload["jdsCategoryID"] != nil {
updateOrCreate(model.VendorIDJDShop, nameID, payload["jdsCategoryID"].(string))
flag = true
jdCategoryId = payload["jdCategoryID"].(string)
} else {
jdCategoryId = getCategoryByName(payload["name"].(string))
}
if payload["ebaiCategoryID"] != nil {
updateOrCreate(model.VendorIDEBAI, nameID, payload["ebaiCategoryID"].(string))
flag = true
}
if payload["mtwmCategoryID"] != nil {
updateOrCreate(model.VendorIDMTWM, nameID, payload["mtwmCategoryID"].(string))
flag = true
if jdCategoryId != "" {
jdsCategoryID, ebaiCategoryID, mtwmCategoryID = getJDCategoryLoadingLocalCategoryReflex(jdCategoryId, payload["jdsCategoryID"].(string), payload["ebaiCategoryID"].(string), payload["mtwmCategoryID"].(string))
} else {
jdsCategoryID = payload["jdsCategoryID"].(string)
ebaiCategoryID = payload["ebaiCategoryID"].(string)
mtwmCategoryID = payload["mtwmCategoryID"].(string)
}
if payload["ddCategoryID"] != nil {
updateOrCreate(model.VendorIDDD, nameID, payload["ddCategoryID"].(string))
flag = true
} /*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)
vendorCategoryId, _ := handler.GetSkuCategoryIdByName("57939570", imgs)
if vendorCategoryId != "" {
updateOrCreate(model.VendorIDDD, nameID, skuNameExt.JdCategoryID)
flag = true
}
}*/
ddCategoryID = payload["ddCategoryID"].(string)
} else {
imgs := fmt.Sprintf("%s|%s|%s|%s|%s|%s", skuNameExt.DescImg, skuNameExt.Img, skuNameExt.Img2, skuNameExt.Img3, skuNameExt.Img4, skuNameExt.Img5)
ddCategoryID = getCategoryByImg(imgs)
}
}
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
}

View File

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